Started 4 yr 7 mo ago
Took 14 min on green-dragon-13

Build #305 (Feb 19, 2019 4:37:30 PM)

  • : 354413
  • : 354351
  • : 354402
  • : 346271
  • : 354212
  • : 354349
  1. gn build: Merge r354365 more (detail/ViewSVN)
    by nico
  2. [GVN] Small tweaks to comments, style, and missed vector handling

    Noticed these while doing a final sweep of the code to make sure I hadn't missed anything in my last couple of patches.  The (minor) missed optimization was noticed because of the stylistic fix to avoid an overly specific cast.

    by reames
  3. gn build: Merge r354365 (detail/ViewSVN)
    by nico
  4. [lld-link] preserve @llvm.used symbols in LTO

    We translate @llvm.used to COFF by generating /include directives
    in the .drectve section. However, in LTO links, this happens after
    directives have already been processed, so the new directives do
    not take effect. This change marks @llvm.used symbols as GCRoots
    so that they are preserved as intended.

    Fixes PR40733.

    Reviewers: rnk, pcc, ruiu

    Reviewed By: ruiu

    Subscribers: mehdi_amini, steven_wu, dexonsmith, dang, llvm-commits

    Tags: #llvm

    Differential Revision: (detail/ViewSVN)
    by inglorion
  5. [BPF] make test case reloc-btf.ll tolerable for old compilers

    The test case reloc-btf.ll is generated with an IR containing
    spFlags introduced by
    In the case of BTF backporting, the old compiler may not
    have this patch, so this test will fail during

    This patch removed spFlags from IR in the test case
    and used the old way for various flags.

    Acked-by: Alexei Starovoitov <>
    Signed-off-by: Yonghong Song <> (detail/ViewSVN)
    by yhs
  6. Revert "[InstSimplify] use any-zero matcher for fcmp folds"

    This reverts commit 058bb8351351d56d2a4e8a772570231f9e5305e5.
    Forgot to update another test affected by this change. (detail/ViewSVN)
    by spatel
  7. [GVN] Fix last crasher w/non-integral pointers

    Same case as for memset and memcpy, but this time for clobbering stores and loads.  We still can't allow coercion to or from non-integrals, regardless of the transform.

    Now that I'm done the whole little sequence, it seems apparent that we'd entirely missed reasoning about clobbers in the original GVN support for non-integral pointers.

    My appologies, I thought we'd upstreamed all of this, but it turns out we were still carrying a downstream hack which hid all of these issues.  My chanks to Cherry Zhang for helping debug.

    by reames
  8. [InstSimplify] use any-zero matcher for fcmp folds

    The m_APFloat matcher does not work with anything but strict
    splat vector constants, so we could miss these folds and then
    trigger an assertion in instcombine: (detail/ViewSVN)
    by spatel
  9. [InstSimplify] add vector tests for fcmp+fabs; NFC (detail/ViewSVN)
    by spatel
  10. [GVN] Fix a crash bug w/non-integral pointers and memtransfers

    Problem is very similiar to the one fixed for memsets in r354399, we try to coerce a value to non-integral type, and then crash while try to do so.  Since we shouldn't be doing such coercions to start with, easy fix.  From inspection, I see two other cases which look to be similiar and will follow up with most test cases and fixes if confirmed.

    by reames
  11. [msan] Fix name_to_handle_at test on overlayfs.

    Udev supports name_to_handle_at. Use /dev/null instead of /bin/cat. (detail/ViewSVN)
    by eugenis
  12. [GVN] Fix a non-integral pointer bug w/vector types

    GVN generally doesn't forward structs or array types, but it *will* forward vector types to non-vectors and vice versa.  As demonstrated in tests, we need to inhibit the same set of transforms for vector of non-integral pointers as for non-integral pointers themselves.

    by reames
  13. [GVN] Fix a crash bug around non-integral pointers

    If we encountered a location where we tried to forward the value of a memset to a load of a non-integral pointer, we crashed.  Such a forward is not legal in general, but we can forward null pointers.  Test for both cases are included.

    by reames
  14. [Test] Autogenerate existing tests before adding more

    by reames
  15. [WebAssembly] Update MC for bulk memory

    Rename MemoryIndex to InitFlags and implement logic for determining
    data segment layout in ObjectYAML and MC. Also adds a "passive" flag
    for the .section assembler directive although this cannot be assembled
    yet because the assembler does not support data sections.

    Reviewers: sbc100, aardappel, aheejin, dschuff

    Subscribers: jgravelle-google, hiraditya, sunfish, rupprecht, llvm-commits

    Tags: #llvm

    Differential Revision: (detail/ViewSVN)
    by tlively
  16. [X86] Mark FP32_TO_INT16_IN_MEM/FP32_TO_INT32_IN_MEM/FP32_TO_INT64_IN_MEM as clobbering EFLAGS to prevent mis-scheduling during conversion from SelectionDAG to MIR.

    After r354178, these instruction expand to a sequence that uses an OR instruction. That OR clobbers EFLAGS so we need to state that to avoid accidentally using the clobbered flags.

    Our tests show the bug, but I didn't notice because the SETcc instructions didn't move after r354178 since it used to be safe to do the fp->int conversion first.

    We should probably convert this whole sequence to SelectionDAG instead of a custom inserter to avoid mistakes like this.

    Fixes PR40779 (detail/ViewSVN)
    by ctopper
  17. [LangRef] add to description of alloca instruction

    As mentioned in D58359, we can explicitly state that the
    memory allocated is uninitialized and reading that memory
    produces undef. (detail/ViewSVN)
    by spatel
  18. [InstCombine] reduce even more unsigned saturated add with 'not' op

    We want to use the sum in the icmp to allow matching with
    m_UAddWithOverflow and eliminate the 'not'. This is discussed
    in D51929 and is another step towards solving PR14613:

      Name: uaddsat, -1 fval
      %notx = xor i32 %x, -1
      %a = add i32 %x, %y
      %c = icmp ugt i32 %notx, %y
      %r = select i1 %c, i32 %a, i32 -1
      %a = add i32 %x, %y
      %c2 = icmp ugt i32 %y, %a
      %r = select i1 %c2, i32 -1, i32 %a

      Name: uaddsat, -1 fval + ult
      %notx = xor i32 %x, -1
      %a = add i32 %x, %y
      %c = icmp ult i32 %y, %notx
      %r = select i1 %c, i32 %a, i32 -1
      %a = add i32 %x, %y
      %c2 = icmp ugt i32 %y, %a
      %r = select i1 %c2, i32 -1, i32 %a (detail/ViewSVN)
    by spatel
  19. [libFuzzer] docs: add a FAQ entry about dlclose (detail/ViewSVN)
    by kcc
  20. second test on git-llvm-push (detail/ViewSVN)
    by rengolin
  21. Fix builds with llvm/runtimes/compiler-rt after r354365

    Compiler-rt doesn't include config-ix which was providing CheckSymbolExists to
    the LLVM build. Add it to HandleLLVMOptions to fix this
    by dsanders
  22. [ArgumentPromotion] Add a lit.local.cfg to disable X86 specific tests if the X86 target doesn't exist.

    Hopefully this fixes some buildbot failure after r354376 (detail/ViewSVN)
    by ctopper
  23. [InstCombine] rearrange saturated add folds; NFC

    This is no-functional-change-intended, but that was also
    true when it was part of rL354276, and I managed to lose
    2 predicates for the fold with constant...causing much bot
    distress. So this time I'm adding a couple of negative tests
    to avoid that. (detail/ViewSVN)
    by spatel
  24. Testing git-llvm-push script (detail/ViewSVN)
    by rengolin
  25. PowerPC: Fix typos in comments (detail/ViewSVN)
    by jsji
  26. [ConstantFold] Fix misfolding fcmp of a ConstantExpr NaN with itself.

    The code incorrectly inferred that the relationship of a constant expression
    to itself is FCMP_OEQ (ordered and equal), when it's actually FCMP_UEQ
    (unordered *or* equal). This change corrects that, and adds some more limited
    folds that can be done in this case.

    Differential revision:

    by andrewscheidecker
  27. [ConstantFold] Fix misfolding of icmp with a bitcast FP second operand.

    In the process of trying to eliminate the bitcast, this was producing a
    malformed icmp with FP operands.

    Differential revision:

    by andrewscheidecker
  28. [llvm-cov] Add support for gcov --hash-filenames option

    The patch adds support for --hash-filenames to llvm-cov. This option adds md5
    hash of the source path to the name of the generated .gcov file. The option is
    crucial for cases where you have multiple files with the same name but can't
    use --preserve-paths as resulting filenames exceed the limit.

    from gcov(1):

        By default, gcov uses the full pathname of the source files to to
        create an output filename.  This can lead to long filenames that
        can overflow filesystem limits.  This option creates names of the
        form source-file##md5.gcov, where the source-file component is
        the final filename part and the md5 component is calculated from
        the full mangled name that would have been used otherwise.

    Patch by Igor Ignatev!

    Differential Revision: (detail/ViewSVN)
    by vedantk
  29. Testing commit access (detail/ViewSVN)
    by andrewscheidecker
  30. [msan] Remove

    The goal of the test to check that msan does not crash when code is racy on __cxa_atexit. Original crash was caused by race condition in the glibc. With
    the msan patch the msan does not crashes however the race is still there and the test triggers it.

    Because the test relies on triggering of undefined behavior results are not
    very predictable and it may occasionally crashes or hangs.

    I don't see how to reasonably improve the test, so I remove it.

    Reviewers: eugenis, peter.smith

    Subscribers: jfb, jdoerfert, #sanitizers, llvm-commits

    Tags: #sanitizers, #llvm

    Differential Revision: (detail/ViewSVN)
    by vitalybuka
  31. [X86] Don't consider functions ABI compatible for ArgumentPromotion pass if they view 512-bit vectors differently.

    The use of the -mprefer-vector-width=256 command line option mixed with functions
    using vector intrinsics can create situations where one function thinks 512 vectors
    are legal, but another fucntion does not.

    If a 512 bit vector is passed between them via a pointer, its possible ArgumentPromotion
    might try to pass by value instead. This will result in type legalization for the two
    functions handling the 512 bit vector differently leading to runtime failures.

    Had the 512 bit vector been passed by value from clang codegen, both functions would
    have been tagged with a min-legal-vector-width=512 function attribute. That would
    make them be legalized the same way.

    I observed this issue in 32-bit mode where a union containing a 512 bit vector was
    being passed by a function that used intrinsics to one that did not. The caller
    ended up passing in zmm0 and the callee tried to read it from ymm0 and ymm1.

    The fix implemented here is just to consider it a mismatch if two functions
    would handle 512 bit differently without looking at the types that are being
    considered. This is the easist and safest fix, but it can be improved in the future.

    Differential Revision: (detail/ViewSVN)
    by ctopper
  32. Revert "Revert "[llvm-objdump] Allow short options without arguments to be grouped""

      - Tests that use multiple short switches now test them grouped and ungrouped.

      - Ensure the output of ungrouped and grouped variants is identical

    Differential Revision: (detail/ViewSVN)
    by ormris
  33. Fix builds for older macOS deployment targets after r354365

    Surprisingly, check_symbol_exists is not sufficient. The macOS linker checks the
    called functions against a compatibility list for the given deployment target
    and check_symbol_exists doesn't trigger this check as it never calls the

    This fixes the GreenDragon bots where the deployment target is 10.9
    by dsanders
  34. [sanitizers] add a regression test for the bug fixed in r354366 (detail/ViewSVN)
    by kcc
  35. [sanitizer] fix a memory safety bug (!!!) in sanitizer suppressions code, discovered by Aaron Jacobs (detail/ViewSVN)
    by kcc
  36. Annotate timeline in Instruments with passes and other timed regions.

    Instruments is a useful tool for finding performance issues in LLVM but it can
    be difficult to identify regions of interest on the timeline that we can use
    to filter the profiler or allocations instrument. Xcode 10 and the latest
    macOS/iOS/etc. added support for the os_signpost() API which allows us to
    annotate the timeline with information that's meaningful to LLVM.

    This patch causes timer start and end events to emit signposts. When used with
    -time-passes, this causes the passes to be annotated on the Instruments timeline.
    In addition to visually showing the duration of passes on the timeline, it also
    allows us to filter the profile and allocations instrument down to an individual
    pass allowing us to find the issues within that pass without being drowned out
    by the noise from other parts of the compiler.

    Using this in conjunction with the Time Profiler (in high frequency mode) and
    the Allocations instrument is how I found the SparseBitVector that should have
    been a BitVector and the DenseMap that could be replaced by a sorted vector a
    couple months ago. I added NamedRegionTimers to TableGen and used the resulting
    annotations to identify the slow portions of the Register Info Emitter. Some of
    these were placed according to educated guesses while others were placed
    according to hot functions from a previous profile. From there I filtered the
    profile to a slow portion and the aforementioned issues stood out in the

    To use this feature enable LLVM_SUPPORT_XCODE_SIGNPOSTS in CMake and run the
    compiler under Instruments with -time-passes like so:
      instruments -t 'Time Profiler' bin/llc -time-passes -o - input.ll'
    Then open the resulting trace in Instruments.

    There was a talk at WWDC 2018 that explained the feature which can be found at if you'd like to know
    more about it.

    Reviewers: bogner

    Reviewed By: bogner

    Subscribers: jdoerfert, mgorny, kristina, llvm-commits

    Tags: #llvm

    Differential Revision: (detail/ViewSVN)
    by dsanders
  37. [libObject][NFC] Use sys::path::convert_to_slash.

    Summary: As suggested in rL353995

    Reviewers: compnerd

    Reviewed By: compnerd

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: (detail/ViewSVN)
    by rupprecht
  38. [X86][SSE] Generalize X86ISD::BLENDI support to more value types

    D42042 introduced the ability for the ExecutionDomainFixPass to more easily change between BLENDPD/BLENDPS/PBLENDW as the domains required.

    With this ability, we can avoid most bitcasts/scaling in the DAG that was occurring with X86ISD::BLENDI lowering/combining, blend with the vXi32/vXi64 vectors directly and use isel patterns to lower to the float vector equivalent vectors.

    This helps the shuffle combining and SimplifyDemandedVectorElts be more aggressive as we lose track of fewer UNDEF elements than when we go up/down through bitcasts.

    I've introduced a basic blend(bitcast(x),bitcast(y)) -> bitcast(blend(x,y)) fold, there are more generalizations I can do there (e.g. widening/scaling and handling the tricky v16i16 repeated mask case).

    The vector-reduce-smin/smax regressions will be fixed in a future improvement to SimplifyDemandedBits to peek through bitcasts and support X86ISD::BLENDV.

    Reapplied after reversion at rL353699 - AVX2 isel fix was applied at rL354358, additional test at rL354360/rL354361

    Differential Revision: (detail/ViewSVN)
    by rksimon
  39. [NFC] Remove unused headers in Optional.h
    by serge_sans_paille
  40. Fix stupid assembly comment typo (detail/ViewSVN)
    by rksimon
  41. [X86][SSE] Add pblendw commuted load test case

    Reduced test case for the regression caused in D57888/rL353610 (detail/ViewSVN)
    by rksimon
  42. [SDAG] Use shift amount type in MULO promotion; NFC

    Directly use the correct shift amount type if it is possible, and
    future-proof the code against vectors. The added test makes sure that
    bitwidths that do not fit into the shift amount type do not assert.

    Split out from D57997. (detail/ViewSVN)
    by nikic
  43. [X86][AVX2] Hide VPBLENDD instructions behind AVX2 predicate

    This was the cause of the regression in D57888 - the commuted load pattern wasn't hidden by the predicate so once we enabled v4i32 blends on SSE41+ targets then isel was incorrectly matched against AVX2+ instructions. (detail/ViewSVN)
    by rksimon
  44. [X86] Bugfix for nullptr check by klocwork

    klocwork critical issues in CG files:

    Patch by Xiang Zhang (xiangzhangllvm)

    Differential Revision: (detail/ViewSVN)
    by ctopper
  45. X86AsmParser AVX-512: Return error instead of hitting assert

    When parsing a sequence of tokens beginning with {, it will hit an assert and crash if the token afterwards is not an identifier. Instead of this, return a more verbose error as seen elsewhere in the function.

    Patch by Brandon Jones (BrandonTJones)

    Differential Revision: (detail/ViewSVN)
    by ctopper
  46. [X86] Filter out tuning feature flags and a few ISA feature flags when checking for function inline compatibility.

    Tuning flags don't have any effect on the available instructions so aren't a good reason to prevent inlining.

    There are also some ISA flags that don't have any intrinsics our ABI requirements that we can exclude. I've put only the most basic ones like cmpxchg16b and lahfsahf. These are interesting because they aren't present in all 64-bit CPUs, but we have codegen workarounds when they aren't present.

    Loosening these checks can help with scenarios where a caller has a more specific CPU than a callee. The default tuning flags on our generic 'x86-64' CPU can currently make it inline compatible with other CPUs. I've also added an example test for 'nocona' and 'prescott' where 'nocona' is just a 64-bit capable version of 'prescott' but in 32-bit mode they should be completely compatible.

    I've based the implementation here of the similar code in AMDGPU.

    Differential Revision: (detail/ViewSVN)
    by ctopper
  47. GlobalISel: Implement moreElementsVector for select (detail/ViewSVN)
    by arsenm
  48. index.rst: Remove bb-chapuni from list of IRC bots (detail/ViewSVN)
    by hans
  49. index.rst: Remove Dragonegg link (detail/ViewSVN)
    by hans
  50. Remove extraneous space in MSVC-style diagnostic output

    There was an extra space between the file location and the diagnostic

      /tmp/a.c(1,12):  warning: unused parameter 'unused'

    the tests didn't catch this due to FileCheck not running in --strict-whitespace mode.

    Reported by Marco:

    Differential revision: (detail/ViewSVN)
    by hans
  51. [compiler-rt][CMake] Set project for the custom libc++

    This is another follow up to r354212 which is broken on Darwin when
    cross-compiling runtimes to Linux when it ignores the -fuse-ld=lld
    linker flag and attempts to use the host linker when performing the
    compiler identification. Upon investigation, I noticed that setting
    the project with appropriate list of languages makes the error go
    away and it shouldn't hurt either.

    Differential Revision: (detail/ViewSVN)
    by phosek
  52. [clangd] Add an option in the code to not display number of fixes

    Only to the APIs, which are used by our embedders.
    We do not plan to add a user-facing option for this.

    Reviewers: sammccall, ioeric

    Reviewed By: sammccall

    Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: (detail/ViewSVN)
    by ibiryukov
  53. GlobalISel: Implement moreElementsVector for G_EXTRACT source (detail/ViewSVN)
    by arsenm
  54. [OpenMP 5.0] Parsing/sema support for map clause with mapper modifier.

    This patch implements the parsing and sema support for OpenMP map
    clauses with potential user-defined mapper attached. User defined mapper
    is a new feature in OpenMP 5.0. A map clause can have an explicit or
    implicit associated mapper, which instructs the compiler to generate
    extra data mapping. An example is shown below:

        struct S { int len; int *d; };
        #pragma omp declare mapper(id: struct S s) map(s, s.d[0:s.len])
        struct S ss;
        #pragma omp target map(mapper(id) tofrom: ss) // use the mapper with name 'id' to map ss

    Contributed-by: Lingda Li <>

    Differential Revision: (detail/ViewSVN)
    by meinersbur
  55. [X86][AVX] Update VBROADCAST folds to always use v2i64 X86vzload

    The VBROADCAST combines and SimplifyDemandedVectorElts improvements mean that we now more consistently use shorter (128-bit) X86vzload input operands.

    Follow up to D58053 (detail/ViewSVN)
    by rksimon
  56. GlobalISel: Implement moreElementsVector for bit ops (detail/ViewSVN)
    by arsenm
  57. [yaml2obj][obj2yaml] Remove section type range markers from allowed mappings and support hex values

    yaml2obj/obj2yaml previously supported SHT_LOOS, SHT_HIOS, and
    SHT_LOPROC for section types. These are simply values that delineate a
    range and don't really make sense as valid values. For example if a
    section has type value 0x70000000, obj2yaml shouldn't print this value
    as SHT_LOPROC. Additionally, this was missing the three other range

    This change removes these three range markers. It also adds support for
    specifying the type as an integer, to allow section types that LLVM
    doesn't know about.

    Reviewed by: grimar

    Differential Revision:
    by jhenderson
  58. Cast from SDValue directly instead of superfluous getNode(). NFCI. (detail/ViewSVN)
    by rksimon
  59. GlobalISel: Verify g_insert (detail/ViewSVN)
    by arsenm
  60. [X86][AVX] EltsFromConsecutiveLoads - Add BROADCAST lowering support

    This patch adds scalar/subvector BROADCAST handling to EltsFromConsecutiveLoads.

    It mainly shows codegen changes to 32-bit code which failed to handle i64 loads, although 64-bit code is also using this new path to more efficiently combine to a broadcast load.

    Differential Revision: (detail/ViewSVN)
    by rksimon

Started by upstream project Clang Stage 2: cmake, R -g Asan&UBSan, using Stage 1 RA, Phase 1 build number 6150
originally caused by:

This run spent:

  • 5.7 sec waiting;
  • 14 min build duration;
  • 14 min total from scheduled to completion.

Identified problems

Missing test results

The test result file Jenkins is looking for does not exist after the build.
Indication 1

CMake Error

This build failed because of an CMake configuration error. Below is a list of all errors in the build log:
Indication 2