Started 1 mo 14 days ago
Took 17 hr on green-dragon-09

Failed Build #5464 (Sep 5, 2019 10:48:33 AM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 371101
  • http://llvm.org/svn/llvm-project/cfe/trunk : 371080
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 371003
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 364589
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 371068
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 371081
Changes
  1. [InstCombine] foldICmpBinOp(): consider inverted check in 'unsigned sub overflow' check

    A follow-up for r329011.
    This may be changed to produce @llvm.sub.with.overflow in a later patch,
    but for now just make things more consistent overall.

    A few observations stem from this:
    * There does not seem to be a similar one-instruction fold for uadd-overflow
    * I'm not sure we'll want to canonicalize `B u> A` as `usub.with.overflow`,
      so since the `icmp` here no longer refers to `sub`,
      reconstructing `usub.with.overflow` will be problematic,
      and will likely require standalone pass (similar to DivRemPairs).

    https://rise4fun.com/Alive/Zqs

    Name: (A - B) u> A --> B u> A
      %t0 = sub i8 %A, %B
      %r = icmp ugt i8 %t0, %A
    =>
      %r = icmp ugt i8 %B, %A

    Name: (A - B) u<= A --> B u<= A
      %t0 = sub i8 %A, %B
      %r = icmp ule i8 %t0, %A
    =>
      %r = icmp ule i8 %B, %A

    Name: C u< (C - D) --> C u< D
      %t0 = sub i8 %C, %D
      %r = icmp ult i8 %C, %t0
    =>
      %r = icmp ult i8 %C, %D

    Name: C u>= (C - D) --> C u>= D
      %t0 = sub i8 %C, %D
      %r = icmp uge i8 %C, %t0
    =>
      %r = icmp uge i8 %C, %D (detail/ViewSVN)
    by lebedevri
  2. [InstCombine] foldICmpBinOp(): consider inverted check in 'unsigned add overflow' check

    A follow-up for r342004.
    This will be changed to produce @llvm.add.with.overflow in a later patch,
    but for now just make things more consistent overall.

    https://rise4fun.com/Alive/qxE

    Name: (Op1 + X) u< Op1 --> ~Op1 u< X
      %t0 = add i8 %Op1, %X
      %r = icmp ult i8 %t0, %Op1
    =>
      %n = xor i8 %Op1, -1
      %r = icmp ult i8 %n, %X

    Name: (Op1 + X) u>= Op1 --> ~Op1 u>= X
      %t0 = add i8 %Op1, %X
      %r = icmp uge i8 %t0, %Op1
    =>
      %n = xor i8 %Op1, -1
      %r = icmp uge i8 %n, %X

    ;-------------------------------------------------------------------------------

    Name: Op0 u> (Op0 + X) --> X u> ~Op0
      %t0 = add i8 %Op0, %X
      %r = icmp ugt i8 %Op0, %t0
    =>
      %n = xor i8 %Op0, -1
      %r = icmp ugt i8 %X, %n

    Name: Op0 u<= (Op0 + X) --> X u<= ~Op0
      %t0 = add i8 %Op0, %X
      %r = icmp ule i8 %Op0, %t0
    =>
      %n = xor i8 %Op0, -1
      %r = icmp ule i8 %X, %n (detail/ViewSVN)
    by lebedevri
  3. [InstCombine][NFC] Tests for 'unsigned sub overflow' check

    ----------------------------------------
    Name: unsigned sub, overflow, v0
      %sub = sub i8 %x, %y
      %ov = icmp ugt i8 %sub, %x
    =>
      %agg = usub_overflow i8 %x, %y
      %sub = extractvalue {i8, i1} %agg, 0
      %ov = extractvalue {i8, i1} %agg, 1

    Done: 1
    Optimization is correct!

    ----------------------------------------
    Name: unsigned sub, no overflow, v0
      %sub = sub i8 %x, %y
      %ov = icmp ule i8 %sub, %x
    =>
      %agg = usub_overflow i8 %x, %y
      %sub = extractvalue {i8, i1} %agg, 0
      %not.ov = extractvalue {i8, i1} %agg, 1
      %ov = xor %not.ov, -1

    Done: 1
    Optimization is correct! (detail/ViewSVN)
    by lebedevri
  4. [InstCombine][NFC] Tests for 'unsigned add overflow' check

    ----------------------------------------
    Name: unsigned add, overflow, v0
      %add = add i8 %x, %y
      %ov = icmp ult i8 %add, %x
    =>
      %agg = uadd_overflow i8 %x, %y
      %add = extractvalue {i8, i1} %agg, 0
      %ov = extractvalue {i8, i1} %agg, 1

    Done: 1
    Optimization is correct!

    ----------------------------------------
    Name: unsigned add, overflow, v1
      %add = add i8 %x, %y
      %ov = icmp ult i8 %add, %y
    =>
      %agg = uadd_overflow i8 %x, %y
      %add = extractvalue {i8, i1} %agg, 0
      %ov = extractvalue {i8, i1} %agg, 1

    Done: 1
    Optimization is correct!

    ----------------------------------------
    Name: unsigned add, no overflow, v0
      %add = add i8 %x, %y
      %ov = icmp uge i8 %add, %x
    =>
      %agg = uadd_overflow i8 %x, %y
      %add = extractvalue {i8, i1} %agg, 0
      %not.ov = extractvalue {i8, i1} %agg, 1
      %ov = xor %not.ov, -1

    Done: 1
    Optimization is correct!

    ----------------------------------------
    Name: unsigned add, no overflow, v1
      %add = add i8 %x, %y
      %ov = icmp uge i8 %add, %y
    =>
      %agg = uadd_overflow i8 %x, %y
      %add = extractvalue {i8, i1} %agg, 0
      %not.ov = extractvalue {i8, i1} %agg, 1
      %ov = xor %not.ov, -1

    Done: 1
    Optimization is correct! (detail/ViewSVN)
    by lebedevri
  5. [TextAPI] update interface file for filtered iter

    Summary:
    This is a simple change that allows easy iterator semantics for symbols held in interface file.
    Not being used, so harmless change right now, but will be once TBD-v4 is submitted.

    Reviewers: ributzka, steven_wu

    Reviewed By: ributzka

    Subscribers: javed.absar, kristof.beyls, dexonsmith, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67204 (detail/ViewSVN)
    by cishida
  6. Docs: Move Documentation sections to separate pages.

    Updates the links on the homepage by moving the User Guides, Programming Documentation, and Subsystem Documentation sections to separate pages. Also changes "Overview" to "About" at the top of the LLVM Docs homepage. This work is part of the Google Season of Docs project. (detail/ViewSVN)
    by dr87
  7. [x86] fix horizontal math bug exposed by improved demanded elements analysis (PR43225)

    https://bugs.llvm.org/show_bug.cgi?id=43225 (detail/ViewSVN)
    by spatel
  8. [X86] Add a FIXME about why the CWD/CDQ/CQO have a bogus implicit def of the A register. NFC

    The instructions copy the sign bit of the A register to every bit
    of the D register. But they don't write to the A register. (detail/ViewSVN)
    by ctopper
  9. [X86] Remove unneeded CHECK lines from a test. NFC (detail/ViewSVN)
    by ctopper
  10. [X86] Fix stale comment. NFC

    We aren't checking for a concat here. We're just always splitting
    256-bit stores. (detail/ViewSVN)
    by ctopper
  11. gn build: (manually) merge r371003 (detail/ViewSVN)
    by nico
  12. [MergedLoadStoreMotion] Sink stores to BB with more than 2 predecessors

    If we have:

    bb5:
      br i1 %arg3, label %bb6, label %bb7

    bb6:
      %tmp = getelementptr inbounds i32, i32* %arg1, i64 2
      store i32 3, i32* %tmp, align 4
      br label %bb9

    bb7:
      %tmp8 = getelementptr inbounds i32, i32* %arg1, i64 2
      store i32 3, i32* %tmp8, align 4
      br label %bb9

    bb9:  ; preds = %bb4, %bb6, %bb7
      ...

    We can't sink stores directly into bb9.
    This patch creates new BB that is successor of %bb6 and %bb7
    and sinks stores into that block.

    SplitFooterBB is the parameter to the pass that controls
    that behavior.

    Change-Id: I7fdf50a772b84633e4b1b860e905bf7e3e29940f
    Differential: https://reviews.llvm.org/D66234 (detail/ViewSVN)
    by dendibakh
  13. [x86] add test for horizontal math bug (PR43225); NFC (detail/ViewSVN)
    by spatel
  14. [MemorySSA] Verify MSSAUpdater exists. (detail/ViewSVN)
    by asbirlea
  15. [PGO][CHR] Speed up following long, interlinked use-def chains.

    Summary:
    Avoid visiting an instruction more than once by using a map.

    This is similar to https://reviews.llvm.org/rL361416.

    Reviewers: davidxl

    Reviewed By: davidxl

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67198 (detail/ViewSVN)
    by yamauchi
  16. [MemorySSA] Update MemorySSA when removing debug.value calls. (detail/ViewSVN)
    by asbirlea
  17. [Hexagon] Fix type in HexagonTargetLowering::ReplaceNodeResults (detail/ViewSVN)
    by kparzysz
  18. [Alignment][NFC] Change internal representation of TargetLowering.h

    Summary:
    This is patch is part of a series to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67226 (detail/ViewSVN)
    by gchatelet
  19. [clangd] Initialize int field to zero. NFC

    To make sure we do not have uninitialized values and undefined behavior. (detail/ViewSVN)
    by ibiryukov
  20. [DebugInfo] Add debug location to stubs generated by CGDeclCXX and mark them as artificial

    Differential Revision: https://reviews.llvm.org/D66328 (detail/ViewSVN)
    by aganea
  21. [ARM] Add support for the s,j,x,N,O inline asm constraints

    A number of inline assembly constraints are currently supported by LLVM, but rejected as invalid by Clang:

    Target independent constraints:

    s: An integer constant, but allowing only relocatable values

    ARM specific constraints:

    j: An immediate integer between 0 and 65535 (valid for MOVW)
    x: A 32, 64, or 128-bit floating-point/SIMD register: s0-s15, d0-d7, or q0-q3
    N: An immediate integer between 0 and 31 (Thumb1 only)
    O: An immediate integer which is a multiple of 4 between -508 and 508. (Thumb1 only)

    This patch adds support to Clang for the missing constraints along with some checks to ensure that the constraints are used with the correct target and Thumb mode, and that immediates are within valid ranges (at least where possible). The constraints are already implemented in LLVM, but just a couple of minor corrections to checks (V8M Baseline includes MOVW so should work with 'j', 'N' and 'O' shouldn't be valid in Thumb2) so that Clang and LLVM are in line with each other and the documentation.

    Differential Revision: https://reviews.llvm.org/D65863

    Change-Id: I18076619e319bac35fbb60f590c069145c9d9a0a (detail/ViewSVN)
    by dcandler
  22. [X86][SSE] EltsFromConsecutiveLoads - ignore non-zero offset base loads (PR43227)

    As discussed on D64551 and PR43227, we don't correctly handle cases where the base load has a non-zero byte offset.

    Until we can properly handle this, we must bail from EltsFromConsecutiveLoads. (detail/ViewSVN)
    by rksimon
  23. [clang-tidy] Make most ArgumentCommentCheck options local, as they should be (detail/ViewSVN)
    by alexfh
  24. Add a bugprone-argument-comment option: IgnoreSingleArgument.

    Summary:
    Add bugprone-argument-comment option: IgnoreSingleArgument.
    When true, the check will ignore the single argument.

    Sometimes, it's not necessary to add comment to single argument.
    For example:

    > std::string name("Yubo Xie");
    > pScreen->SetWidth(1920);
    > pScreen->SetHeight(1080);

    This option can ignore such single argument in bugprone-argument-comment check.

    Reviewers: alexfh

    Reviewed By: alexfh

    Subscribers: cfe-commits

    Tags: #clang

    Patch by Yubo Xie.

    Differential Revision: https://reviews.llvm.org/D67056 (detail/ViewSVN)
    by alexfh
  25. [yaml2obj] Write the section header table after section contents

    Linkers (ld.bfd/gold/lld) place the section header table at the very
    end. This allows tools to strip it, which is optional in executable/shared objects.
    In addition, if we add or section, the size of the section header table
    will change. Placing the section header table in the end keeps section
    offsets unchanged.

    yaml2obj currently places the section header table immediately after the
    program header. Follow what linkers do to make offset updating easier.

    Reviewed By: grimar

    Differential Revision: https://reviews.llvm.org/D67221 (detail/ViewSVN)
    by maskray
  26. [LLVM][Alignment][NFC] Fixing wrong documentation (detail/ViewSVN)
    by gchatelet
  27. [clang-tidy] Fix bugprone-argument-comment bug: negative literal number is not checked.

    Summary:
    For example:
    ```
    void foo(int a);
    foo(-2);
    ```
    should be fixed as:
    ```
    foo(/*a=*/-2);
    ```
    This change tries to fix this issue.

    Reviewers: alexfh, hokein, aaron.ballman

    Reviewed By: alexfh, aaron.ballman

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang, #clang-tools-extra

    Patch by Yubo Xie.

    Differential Revision: https://reviews.llvm.org/D67084 (detail/ViewSVN)
    by alexfh
  28. [llvm-readelf] - Allow dumping dynamic symbols when there is no program headers.

    D62179 introduced a regression. llvm-readelf lose the ability to dump the dynamic symbols
    when there is .dynamic section with a DT_SYMTAB, but there are no program headers:
    https://reviews.llvm.org/D62179#1652778

    Below is a program flow before the D62179 change:

    1) Find SHT_DYNSYM.
    2) Find there is no PT_DYNAMIC => don't try to parse it.
    3) Print dynamic symbols using information about them found on step (1).

    And after the change it became:

    1) Find SHT_DYNSYM.
    2) Find there is no PT_DYNAMIC => find SHT_DYNAMIC.
    3) Parse dynamic table, but fail to handle the DT_SYMTAB because of the absence of the PT_LOAD. Report the "Virtual address is not in any segment" error.

    This patch fixes the issue. For doing this it checks that the value of DT_SYMTAB was
    mapped to a segment. If not - it ignores it.

    Differential revision: https://reviews.llvm.org/D67078 (detail/ViewSVN)
    by grimar
  29. [libc++] Revert "Make `vector` unconditionally move elements when exceptions are disabled."

    This reverts r370502, which broke the use case of a copy-only T (with a
    deleted move constructor) when exceptions are disabled. Until we figure
    out the right behavior, I'm reverting the commit. (detail/ViewSVN)
    by Louis Dionne
  30. [libc++] Add a test for resizing of a vector with copy-only elements

    See https://reviews.llvm.org/D62228#1658620 (detail/ViewSVN)
    by Louis Dionne
  31. Add -m(no)-spe to clang

    Summary:
    r337347 added support for the Signal Processing Engine (SPE) to LLVM.
    This follows that up with the clang side.

    This adds -mspe and -mno-spe, to match GCC.

    Subscribers: nemanjai, kbarton, cfe-commits

    Differential Revision: https://reviews.llvm.org/D49754 (detail/ViewSVN)
    by jhibbits
  32. [ARM] Fixup the creation of VPT blocks

    This attempts to just fix the creation of VPT blocks, fixing up the iterating,
    which instructions are considered in the bundle, and making sure that we do not
    overrun the end of the block.

    Differential Revision: https://reviews.llvm.org/D67219 (detail/ViewSVN)
    by dmgreen
  33. [LLVM][Alignment] Convert isLegalNTStore/isLegalNTLoad to llvm::Align

    Summary:
    This is patch is part of a serie to introduce an Alignment type.
    See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
    See this patch for the introduction of the type: https://reviews.llvm.org/D64790

    Reviewers: courbet

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67223 (detail/ViewSVN)
    by gchatelet
  34. [X86][SSE] Add (failing) test case for PR43227 (detail/ViewSVN)
    by rksimon
  35. [MIPS GlobalISel] Select G_FENCE

    G_FENCE comes form fence instruction. For MIPS fence is generated in
    AtomicExpandPass when atomic instruction gets surrounded with fence
    instruction when needed.
    G_FENCE arguments don't have LLT, because of that there is no job for
    legalizer and regbankselect. Instruction select G_FENCE for MIPS32.

    Differential Revision: https://reviews.llvm.org/D67181 (detail/ViewSVN)
    by petar.avramovic
  36. [MIPS GlobalISel] Select llvm.trap intrinsic

    Select G_INTRINSIC_W_SIDE_EFFECTS for Intrinsic::trap for MIPS32
    via legalizeIntrinsic.

    Differential Revision: https://reviews.llvm.org/D67180 (detail/ViewSVN)
    by petar.avramovic
  37. [MIPS GlobalISel] Lower SRet pointer arguments

    Instead of returning structure by value clang usually adds pointer
    to that structure as an argument. Pointers don't require special
    handling no matter the SRet flag. Remove unsuccessful exit from
    lowerCall for arguments with SRet flag if they are pointers.

    Differential Revision: https://reviews.llvm.org/D67179 (detail/ViewSVN)
    by petar.avramovic
  38. Revert rL370996 from llvm/trunk: [AArch64][GlobalISel] Teach AArch64CallLowering to handle basic sibling calls

    This adds support for basic sibling call lowering in AArch64. The intent here is
    to only handle tail calls which do not change the ABI (hence, sibling calls.)

    At this point, it is very restricted. It does not handle

    - Vararg calls.
    - Calls with outgoing arguments.
    - Calls whose calling conventions differ from the caller's calling convention.
    - Tail/sibling calls with BTI enabled.

    This patch adds

    - `AArch64CallLowering::isEligibleForTailCallOptimization`, which is equivalent
       to the same function in AArch64ISelLowering.cpp (albeit with the restrictions
       above.)
    - `mayTailCallThisCC` and `canGuaranteeTCO`, which are identical to those in
       AArch64ISelLowering.cpp.
    - `getCallOpcode`, which is exactly what it sounds like.

    Tail/sibling calls are lowered by checking if they pass target-independent tail
    call positioning checks, and checking if they satisfy
    `isEligibleForTailCallOptimization`. If they do, then a tail call instruction is
    emitted instead of a normal call. If we have a sibling call (which is always the
    case in this patch), then we do not emit any stack adjustment operations. When
    we go to lower a return, we check if we've already emitted a tail call. If so,
    then we skip the return lowering.

    For testing, this patch

    - Adds call-translator-tail-call.ll to test which tail calls we currently lower,
      which ones we don't, and which ones we shouldn't.
    - Updates branch-target-enforcement-indirect-calls.ll to show that we fall back
      as expected.

    Differential Revision: https://reviews.llvm.org/D67189
    ........
    This fails on EXPENSIVE_CHECKS builds due to a -verify-machineinstrs test failure in CodeGen/AArch64/dllimport.ll (detail/ViewSVN)
    by rksimon
  39. [X86] X86SpeculativeLoadHardeningPass::canHardenRegister - fix out of bounds warning.

    Fixes clang static-analyzer warning. (detail/ViewSVN)
    by rksimon
  40. [SystemZ]  Recognize INLINEASM_BR in backend

    Handle the remaining cases also by handling asm goto in
    SystemZInstrInfo::getBranchInfo().

    Review: Ulrich Weigand
    https://reviews.llvm.org/D67151 (detail/ViewSVN)
    by jonpa
  41. [X86] X86InstrInfo::optimizeCompareInstr - fix potential null dereference.

    Fixes clang static-analyzer warning.

    Technically the MachineInstr *Sub might still be null if we're comparing zero (IsCmpZero == true), although this probably won't happen as SrcReg2 is probably == 0. (detail/ViewSVN)
    by rksimon
  42. [OpenCL] Add image type handling for builtins

    Image types were previously available, but not working.  This patch
    adds image type handling.

    Rename the image type definitions in the .td file to make them
    consistent with other type names.  Use abstract types to represent the
    unqualified types.  Instantiate access-qualified image types at the
    point of use using, e.g. `ImageType<Image2d, "RO">`.

    Add/update TableGen definitions for the read_image/write_image
    builtin functions.

    Patch by Pierre Gondois and Sven van Haastregt.

    Differential Revision: https://reviews.llvm.org/D63480 (detail/ViewSVN)
    by svenvh
  43. [LLVM][Alignment] Make functions using log of alignment explicit

    Summary:
    This patch renames functions that takes or returns alignment as log2, this patch will help with the transition to llvm::Align.
    The renaming makes it explicit that we deal with log(alignment) instead of a power of two alignment.
    A few renames uncovered dubious assignments:

    - `MirParser`/`MirPrinter` was expecting powers of two but `MachineFunction` and `MachineBasicBlock` were using deal with log2(align). This patch fixes it and updates the documentation.
    - `MachineBlockPlacement` exposes two flags (`align-all-blocks` and `align-all-nofallthru-blocks`) supposedly interpreted as power of two alignments, internally these values are interpreted as log2(align). This patch updates the documentation,
    - `MachineFunctionexposes` exposes `align-all-functions` also interpreted as power of two alignment, internally this value is interpreted as log2(align). This patch updates the documentation,

    Reviewers: lattner, thegameg, courbet

    Subscribers: dschuff, arsenm, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, javed.absar, hiraditya, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, dexonsmith, PkmX, jocewei, jsji, Jim, s.egerton, llvm-commits, courbet

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D65945 (detail/ViewSVN)
    by gchatelet
  44. [libclang] Refactored SharedParsedRegionsStorage

    Summary:
    Removed the `PPRegionSetTy` typedef because it is only used 3 times, and
    obscures code more than it helps.

    Renamed SharedParsedRegionsStorage to ThreadSafeParsedRegions, because
    that better reflects the reason for this type to exist.

    Replaced the `copyTo()` method that had an out parameter with a getter.

    Renamed the `merge()` method to `addParsedRegions()`.

    Renamed `ParsedSrcLocationsTracker::ParsedRegions` to
    `ParsedRegionsSnapshot`, which better reflects its role.

    Subscribers: arphaman, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67077 (detail/ViewSVN)
    by gribozavr
  45. Fix time-trace breaking flame graph assumptions

    -ftime-trace could break flame-graph assumptions on Windows, with an
    inner scope overrunning outer scopes. This was due to the way that times
    were truncated. Changed this so time_points for the flame-graph are
    truncated instead of durations, preserving the relative order of event
    starts and ends.

    I have tried to retain the extra precision for the totals, which count
    thousands or millions of events.

    Added assert to check this property holds in future.

    Fixes PR43043

    Differential Revision: https://reviews.llvm.org/D66411 (detail/ViewSVN)
    by russell_gallop
  46. [clangd][vscode] Add a flag to enable semantic highlighting in clangd

    Reviewers: ilya-biryukov

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

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67096 (detail/ViewSVN)
    by hokein
  47. [clangd][vscode] Make SemanticHighlightingFeature more self-contained.

    Summary:
    so that we don't have too many usage from the client side (just a single
    occurrance for register), this also aligns with how other builtin feature
    being implemented in vscode.

    Reviewers: ilya-biryukov

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

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67165 (detail/ViewSVN)
    by hokein
  48. Win: handle \\?\UNC\ prefix in realPathFromHandle (PR43204)

    After r361885, realPathFromHandle() ends up getting called on the working
    directory on each Clang invocation. This unveiled that the code didn't work for
    paths on network shares.

    For example, if one maps the local dir c:\src\tmp to x:

      net use x: \\localhost\c$\tmp

    and run e.g. "clang -c foo.cc" in x:\, realPathFromHandle will get
    \\?\UNC\localhost\c$\src\tmp\ back from GetFinalPathNameByHandleW, and would
    strip off the initial \\?\ prefix, ending up with a path that doesn't work.

    This patch makes the prefix stripping a little smarter to handle this case.

    Differential revision: https://reviews.llvm.org/D67166 (detail/ViewSVN)
    by hans
  49. [lib/ObjectYAML] - Cleanup the private interface of ELFState<ELFT>. NFCI.

    In D62809 I accidentally added "ELFState<ELFT> &State" as the
    first parameter to two methods. There is no reason for having that.
    I removed this argument and also moved finalizeStrings declaration to
    remove an excessive 'private:' tag.

    Differential revision: https://reviews.llvm.org/D67157 (detail/ViewSVN)
    by grimar
  50. [Sema] Refactor LookupVisibleDecls. NFC

    Summary:
    We accumulated some configuration parameters for LookupVisibleDecls that
    are being passed unchanged to recursive calls, e.g. LoadExternal and
    IncludeDependentBases.

    At the same time, there is a bunch of parameters that can change in the
    recursive invocations.

    It is hard to tell the difference between those groups, making the code
    hard to follow.

    This change introduces a helper struct and factors out the non-changing
    bits into fields, making recursive calls in the implementation code easier
    to read.

    Reviewers: sammccall

    Reviewed By: sammccall

    Subscribers: riccibruno, doug.gregor, jkorous, arphaman, kadircet, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D65752 (detail/ViewSVN)
    by ibiryukov
  51. Recommit r371023 "[lib/ObjectYAML] - Stop calling error(1) when mapping the st_other field of a symbol."

    Fix: added missing return "return 0;"

    Original commit message:
    This eliminates one of the error(1) call in this lib.
    It is different from the others because happens on a fields mapping stage
    and can be easily fixed.

    Differential revision: https://reviews.llvm.org/D67150 (detail/ViewSVN)
    by grimar
  52. Revert r361885 "[Driver] Fix -working-directory issues"

    This made clang unable to open files using relative paths on network shares on
    Windows (PR43204). On the bug it was pointed out that createPhysicalFileSystem()
    is not terribly mature, and using it is risky. Reverting for now until there's
    a clear way forward.

    > Currently the `-working-directory` option does not actually impact the working
    > directory for all of the clang driver, it only impacts how files are looked up
    > to make sure they exist.  This means that that clang passes the wrong paths
    > to -fdebug-compilation-dir and -coverage-notes-file.
    >
    > This patch fixes that by changing all the places in the driver where we convert
    > to absolute paths to use the VFS, and then calling setCurrentWorkingDirectory on
    > the VFS.  This also changes the default VFS for `Driver` to use a virtualized
    > working directory, instead of changing the process's working directory.
    >
    > Differential Revision: https://reviews.llvm.org/D62271

    This also revertes the part of r369938 which checked that -working-directory works. (detail/ViewSVN)
    by hans
  53. Revert r371023 "[lib/ObjectYAML] - Stop calling error(1) when mapping the st_other field of a symbol." (2)

    Forgot to revert the cpp file. (detail/ViewSVN)
    by grimar
  54. Revert r371023 "[lib/ObjectYAML] - Stop calling error(1) when mapping the st_other field of a symbol."

    It broke BBots:

    http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/36387/steps/build_Lld/logs/stdio
    http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/17117/steps/test/logs/stdio (detail/ViewSVN)
    by grimar
  55. [lib/ObjectYAML] - Stop calling error(1) when mapping the st_other field of a symbol.

    This eliminates one of the error(1) call in this lib.
    It is different from the others because happens on a fields mapping stage
    and can be easily fixed.

    Differential revision: https://reviews.llvm.org/D67150 (detail/ViewSVN)
    by grimar
  56. [clang-tidy] Fix definitions in headers check to respect qualifiers

    Summary:
    The check was generating a fix without taking qualifiers in return type
    into account. This patch changes the insertion location to be before qualifers.

    Reviewers: gribozavr

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67213 (detail/ViewSVN)
    by kadircet
  57. Rename of constants in ASTImporterVisibilityTest. NFC.

    Reviewers: martong, a.sidorin, shafik

    Reviewed By: shafik

    Subscribers: shafik, rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67174 (detail/ViewSVN)
    by balazske
  58. [DWARF] Fix referencing Range List Tables from CUs for DWARF64.

    As DW_AT_rnglists_base points after the header and headers have
    different sizes for DWARF32 and DWARF64, we have to use the format
    of the CU to adjust the offset correctly in order to extract
    the referenced range list table.

    The patch also changes the type of RangeSectionBase because in DWARF64
    it is 8-bytes long.

    Differential Revision: https://reviews.llvm.org/D67098 (detail/ViewSVN)
    by ikudrin
  59. [DWARF] Support DWARF64 in DWARFListTableHeader.

    This enables 64-bit DWARF support for parsing range and location list tables.

    Differential Revision: https://reviews.llvm.org/D66643 (detail/ViewSVN)
    by ikudrin
  60. AMDGPU: Add builtins for is_shared/is_private (detail/ViewSVN)
    by arsenm
  61. AMDGPU: Add intrinsics for address space identification

    The library currently uses ptrtoint and directly checks the queue ptr
    for this, which counts as a pointer capture. (detail/ViewSVN)
    by arsenm
  62. AMDGPU/GlobalISel: Restore insert point when getting aperture

    Avoids SSA violations in a future patch. (detail/ViewSVN)
    by arsenm
  63. AMDGPU/GlobalISel: Fix placeholder value used for addrspacecast (detail/ViewSVN)
    by arsenm
  64. AMDGPU/GlobalISel: Fix assert on load from constant address (detail/ViewSVN)
    by arsenm
  65. [mir-canon][NFC] Adding -verify-machineinstrs to mir-canon tests.

    In the review process for some of the refactoring of MIRCanonicalizationPass it
    was noted that some of the tests didn't have verifier enabled. Enabling here. (detail/ViewSVN)
    by zer0
  66. [c++20] Fix some ambiguities in our mangling of lambdas with explicit
    template parameters.

    This finishes the implementation of the proposal described in
    https://github.com/itanium-cxx-abi/cxx-abi/issues/31. (We already
    implemented the <lambda-sig> extensions, but didn't take them into
    account when computing mangling numbers, and didn't deal properly with
    expanded parameter packs, and didn't disambiguate between different
    levels of template parameters in manglings.) (detail/ViewSVN)
    by rsmith
  67. Revert "Revert "[builtins] Rounding mode support for addxf3/subxf3""

    Test failure fixed.

    This reverts commit e204d244badb2e9765a1020f41c773f63da208f4. (detail/ViewSVN)
    by kongyi
  68. [analyzer] scan-build: handle --sysroot=/path in addition to --sysroot /path.

    Current code assumes flags in CompilerLinkerOptionMap don't use =,
    which isn't always true.

    Patch by Chris Laplante!

    Differential Revision: https://reviews.llvm.org/D66569 (detail/ViewSVN)
    by dergachev
  69. Reformat the beginning of the testing doc to make clear how to run all the tests. (detail/ViewSVN)
    by marshall
  70. Use -mtriple to fix AMDGPU test sensitive to object file format

    GOTPCREL32 doesn't exist on COFF, so it isn't used when this test runs
    on Windows. (detail/ViewSVN)
    by rnk
  71. [AArch64][GlobalISel] Teach AArch64CallLowering to handle basic sibling calls

    This adds support for basic sibling call lowering in AArch64. The intent here is
    to only handle tail calls which do not change the ABI (hence, sibling calls.)

    At this point, it is very restricted. It does not handle

    - Vararg calls.
    - Calls with outgoing arguments.
    - Calls whose calling conventions differ from the caller's calling convention.
    - Tail/sibling calls with BTI enabled.

    This patch adds

    - `AArch64CallLowering::isEligibleForTailCallOptimization`, which is equivalent
       to the same function in AArch64ISelLowering.cpp (albeit with the restrictions
       above.)
    - `mayTailCallThisCC` and `canGuaranteeTCO`, which are identical to those in
       AArch64ISelLowering.cpp.
    - `getCallOpcode`, which is exactly what it sounds like.

    Tail/sibling calls are lowered by checking if they pass target-independent tail
    call positioning checks, and checking if they satisfy
    `isEligibleForTailCallOptimization`. If they do, then a tail call instruction is
    emitted instead of a normal call. If we have a sibling call (which is always the
    case in this patch), then we do not emit any stack adjustment operations. When
    we go to lower a return, we check if we've already emitted a tail call. If so,
    then we skip the return lowering.

    For testing, this patch

    - Adds call-translator-tail-call.ll to test which tail calls we currently lower,
      which ones we don't, and which ones we shouldn't.
    - Updates branch-target-enforcement-indirect-calls.ll to show that we fall back
      as expected.

    Differential Revision: https://reviews.llvm.org/D67189 (detail/ViewSVN)
    by paquette
  72. For PR43213, track whether template parameters are implicit through
    template instantiation so we know whether to mangle them in
    lambda-expressions. (detail/ViewSVN)
    by rsmith
  73. gn build: Merge r370985 (detail/ViewSVN)
    by nico
  74. [www] Fix hyperlink syntax in attribute reference. (detail/ViewSVN)
    by rsmith
  75. [www] Update attribute reference for 'constinit'. (detail/ViewSVN)
    by rsmith
  76. [mir-canon][NFC] Move MIR vreg renaming code to separate file for better reuse.

    Moving MIRCanonicalizerPass vreg renaming code to MIRVRegNamerUtils so that it
    can be reused in another pass (ie planing to write a standalone mir-namer pass).

    I'm going to write a mir-namer pass so that next time someone has to author a
    test in MIR, they can use it to cleanup the naming and make it more readable by
    having the numbered vregs swapped out with named vregs.

    Differential Revision: https://reviews.llvm.org/D67114 (detail/ViewSVN)
    by zer0
  77. Diagnose _Atomic as a C11 extension. (detail/ViewSVN)
    by aaronballman
  78. [DebugInfo] Emit DW_TAG_enumeration_type for referenced global enumerator.

    This essentially reverts changes from r361400 while keeping behavior for
    CodeView.

    Reviewers: akhuang, rnk, probinson

    Reviewed by: rnk

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67141 (detail/ViewSVN)
    by yuanfang
  79. AMDGPU/GlobalISel: Select G_BITREVERSE (detail/ViewSVN)
    by arsenm
  80. GlobalISel: Add basic legalization for G_BITREVERSE (detail/ViewSVN)
    by arsenm
  81. [Attributor][Stats] Use the right statistics macro (detail/ViewSVN)
    by jdoerfert
  82. [Attributor][Fix] Make sure we do not delete live code

    Summary: Liveness needs to mark edges, not blocks as dead.

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67191 (detail/ViewSVN)
    by jdoerfert
  83. [LLD] [COFF] Implement MinGW default manifest handling

    In mingw environments, resources are normally compiled to resource
    object files directly, instead of letting the linker convert them to
    COFF format.

    Since some time, GCC supports the notion of a default manifest object.
    When invoking the linker, GCC looks for the default manifest object
    file, and if found in the expected path, it is added to linker commands.

    The default manifest is one that indicates support for the latest known
    versions of windows, to implicitly unlock the modern behaviours of certain
    APIs.

    Not all mingw/gcc distributions include this file, but e.g. in msys2,
    the default manifest object is distributed in a separate package (which
    can be but might not always be installed).

    This means that even if user projects only use one single resource
    object file, the linker can end up with two resource object files,
    and thus needs to support merging them.

    The default manifest has a language id of zero, and GNU ld has got
    logic for dropping a manifest with a zero language id, if there's
    another manifest present with a nonzero language id. If there are
    multiple manifests with a nonzero language id, the merging process
    errors out.

    Differential Revision: https://reviews.llvm.org/D66825 (detail/ViewSVN)
    by mstorsjo
  84. [c++20] P1143R2: Add support for the C++20 'constinit' keyword.

    This is mostly the same as the
    [[clang::require_constant_initialization]] attribute, but has a couple
    of additional syntactic and semantic restrictions.

    In passing, I added a warning for the attribute form being added after
    we have already seen the initialization of the variable (but before we
    see the definition); that case previously slipped between the cracks and
    the attribute was silently ignored. (detail/ViewSVN)
    by rsmith
  85. [NewPM][Sancov] Make Sancov a Module Pass instead of 2 Passes

    This patch merges the sancov module and funciton passes into one module pass.

    The reason for this is because we ran into an out of memory error when
    attempting to run asan fuzzer on some protobufs (pc.cc files). I traced the OOM
    error to the destructor of SanitizerCoverage where we only call
    appendTo[Compiler]Used which calls appendToUsedList. I'm not sure where precisely
    in appendToUsedList causes the OOM, but I am able to confirm that it's calling
    this function *repeatedly* that causes the OOM. (I hacked sancov a bit such that
    I can still create and destroy a new sancov on every function run, but only call
    appendToUsedList after all functions in the module have finished. This passes, but
    when I make it such that appendToUsedList is called on every sancov destruction,
    we hit OOM.)

    I don't think the OOM is from just adding to the SmallSet and SmallVector inside
    appendToUsedList since in either case for a given module, they'll have the same
    max size. I suspect that when the existing llvm.compiler.used global is erased,
    the memory behind it isn't freed. I could be wrong on this though.

    This patch works around the OOM issue by just calling appendToUsedList at the
    end of every module run instead of function run. The same amount of constants
    still get added to llvm.compiler.used, abd we make the pass usage and logic
    simpler by not having any inter-pass dependencies.

    Differential Revision: https://reviews.llvm.org/D66988 (detail/ViewSVN)
    by leonardchan
  86. Generate parent context id from Decl* instead of DeclContext*.

    Because of multiple inheritance, a DeclContext pointer does not produce
    the same pointer representation as a Decl pointer that references the
    same AST Node.

    When dumping the parentDeclContextId field of a node, convert the pointer
    to Decl* first, so the id can be used to find the AST node it references.

    Patch by Bert Belder. (detail/ViewSVN)
    by aaronballman
  87. [llvm-rtdyld][llvm-jitlink] Rename struct member to remove ambiguity.

    This ambiguity (struct member name matching struct name) was causing errors on
    a few of the MSVC bots. Hopefully this should fix it. (detail/ViewSVN)
    by Lang Hames
  88. [llvm-rtdyld] Add timers to match llvm-jitlink.

    When using llvm-rtdyld to execute code, -show-times will now show the time
    taken to load the object files, apply relocations, and execute the
    rtdyld-linked code. (detail/ViewSVN)
    by Lang Hames
  89. [InstCombine] Add more test cases (NFC)

    Add more test cases simplifying `log()`. (detail/ViewSVN)
    by evandro
  90. [WebAssembly] Initialize memory in start function

    Summary:
    - `__wasm_init_memory` is now the WebAssembly start function instead
       of being called from `__wasm_call_ctors` or called directly by the
       runtime.
    - Adds a new synthetic data symbol `__wasm_init_memory_flag` that is
       atomically incremented from zero to one by the thread responsible
       for initializing memory.
    - All threads now unconditionally perform data.drop on all passive
       segments.
    - Removes --passive-segments and --active-segments flags and controls
       segment type based on --shared-memory instead. The deleted flags
       were only present to ameliorate the upgrade path in Emscripten.

    Reviewers: sbc100, aheejin

    Subscribers: dschuff, jgravelle-google, sunfish, jfb, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D65783 (detail/ViewSVN)
    by tlively
  91. [MemorySSA] Re-enable MemorySSA use.

    Differential Revision: https://reviews.llvm.org/D58311 (detail/ViewSVN)
    by asbirlea
  92. [Attributor][Fix] Ensure the attribute names are created properly

    The names of the attributes were not always created properly which
    caused problems with the yaml output. (detail/ViewSVN)
    by jdoerfert
  93. [globalisel] Support trivial COPY in GISelKnownBits

    Summary: Allow GISelKnownBits to look through the trivial case of TargetOpcode::COPY

    Reviewers: aditya_nandakumar

    Subscribers: rovka, hiraditya, volkan, Petar.Avramovic, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67131 (detail/ViewSVN)
    by dsanders
  94. [JITLink] Fix the show-timers option on llvm-jitlink.

    No longer constantly shows times (even when -show-times=false). When shown,
    times are now correctly grouped. (detail/ViewSVN)
    by Lang Hames
  95. [docs] Add some comments to the inline LLJIT example. (detail/ViewSVN)
    by Lang Hames
  96. [NFC] Switch last couple of invariant_load checks to use hasMetadata (detail/ViewSVN)
    by reames
  97. [TargetLibraryInfo] Define enumerator for no library function (NFC)

    Add a null enumerator do designate no library function. (detail/ViewSVN)
    by evandro
  98. [InstCombine] sub(xor(x, y), or(x, y)) -> neg(and(x, y))

    Summary:
    ```
    Name: sub(xor(x, y), or(x, y)) -> neg(and(x, y))
    %or = or i32 %y, %x
    %xor = xor i32 %x, %y
    %sub = sub i32 %xor, %or
      =>
    %sub1 = and i32 %x, %y
    %sub = sub i32 0, %sub1

    Optimization: sub(xor(x, y), or(x, y)) -> neg(and(x, y))
    Done: 1
    Optimization is correct!
    ```

    https://rise4fun.com/Alive/8OI

    Reviewers: lebedev.ri

    Reviewed By: lebedev.ri

    Subscribers: llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67188 (detail/ViewSVN)
    by xbolva00
  99. Update CodeGen to use hasMetadata as appropriate [NFC]

    My intial grepping for rL370933 missed a directory worth of cases. (detail/ViewSVN)
    by reames
  100. [NFC] Added tests for new fold (detail/ViewSVN)
    by xbolva00
  101. [NFC] Adjust test filename (detail/ViewSVN)
    by xbolva00
  102. [X86] Pre-commit test cases and test run line changes for D67087 (detail/ViewSVN)
    by ctopper
  103. Add encode and decode methods to InlineInfo and document encoding format to the GSYM file format.

    This patch adds the ability to encode and decode InlineInfo objects and adds test coverage. Error handling is introduced in the encoding and decoding which will be used from here on out for remaining patches.

    Differential Revision: https://reviews.llvm.org/D66600 (detail/ViewSVN)
    by gclayton
  104. [InstCombine] Fold sub (and A, B) (or A, B)) to neg (xor A, B)

    Summary:
    ```
    Name: sub(and(x, y), or(x, y)) -> neg(xor(x, y))
    %or = or i32 %y, %x
    %and = and i32 %x, %y
    %sub = sub i32 %and, %or
      =>
    %sub1 = xor i32 %x, %y
    %sub = sub i32 0, %sub1

    Optimization: sub(and(x, y), or(x, y)) -> neg(xor(x, y))
    Done: 1
    Optimization is correct!
    ```

    https://rise4fun.com/Alive/VI6

    Found by @lebedev.ri. Also author of the proof.

    Reviewers: lebedev.ri, spatel

    Reviewed By: lebedev.ri

    Subscribers: llvm-commits, lebedev.ri

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67155 (detail/ViewSVN)
    by xbolva00
  105. [Instruction] Add hasMetadata(Kind) helper [NFC]

    It's a common idiom, so let's add the obvious wrapper for metadata kinds which are basically booleans. (detail/ViewSVN)
    by reames
  106. [OpenMP][Docs] Provide implementation status details

    This adds a more fine-grained list of OpenMP features with their
    implementation status and associated reviews/commits.

    Reviewers: kkwli0, ABataev, RaviNarayanaswamy, gtbercea, Hahnfeld

    Subscribers: bollu, guansong, jfb, hfinkel, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64375 (detail/ViewSVN)
    by jdoerfert
  107. AMDGPU: Handle frame index expansion with no free SGPRs pre gfx9

    Since an add instruction must produce an unused carry out, this
    requires additional SGPRs. This can be avoided by keeping the entire
    offset computation in SGPRs. If one SGPR is still available, this only
    costs one extra mov. If none are available, the entire computation can
    be done in place and reversed.

    This does assume the use is a VGPR operand. This was already assumed,
    and we currently only select frame indexes to VALU instructions. This
    should probably be fixed at some point to handle more possible MIR. (detail/ViewSVN)
    by arsenm
  108. Avoid assemble step in verbose-output-quoting.c

    Reviewers: hans

    Subscribers: cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D65527 (detail/ViewSVN)
    by yuanfang
  109. GlobalISel: Add G_BITREVERSE

    This is the first failing pattern for AMDGPU and is trivial to handle. (detail/ViewSVN)
    by arsenm
  110. [libc++] Only build with -fvisibility=hidden on Clang

    The visibility annotations in libc++ are not quite right for GCC, which
    results in symbols not being exported when -fvisibility=hidden is used.
    To fix the GCC build bots, this commit reverts to the previous state of
    not building with hidden visibility on GCC.

    In the future, we can build with hidden visibility all the time and
    export symbols explicitly using a list. See https://llvm.org/D66970
    for one take at this. (detail/ViewSVN)
    by Louis Dionne
  111. [Attributor][NFC] Add assertion to guard against accidental misuse (detail/ViewSVN)
    by jdoerfert
  112. [Attributor] Look at internal functions only on-demand

    Summary:
    Instead of building attributes for internal functions which we do not
    update as long as we assume they are dead, we now do not create
    attributes until we assume the internal function to be live. This
    improves the number of required iterations, as well as the number of
    required updates, in real code. On our tests, the results are mixed.

    Reviewers: sstefan1, uenoku

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D66914 (detail/ViewSVN)
    by jdoerfert
  113. [Attributor] Use the white list for attributes consistently

    Summary:
    We create attributes on-demand so we need to check the white list
    on-demand. This also unifies the location at which we create,
    initialize, and eventually invalidate new abstract attributes.

    The tests show mixed results, a few more call site attributes are
    determined which can cause more iterations.

    Reviewers: uenoku, sstefan1

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D66913 (detail/ViewSVN)
    by jdoerfert
  114. AMDGPU/GlobalISel: Make 16-bit constants legal

    This is mostly for the benefit of patterns which use 16-bit constants. (detail/ViewSVN)
    by arsenm
  115. GlobalISel/TableGen: Don't skip REG_SEQUENCE based on patterns

    This partially adds support for patterns with REG_SEQUENCE. The source
    patterns are now accepted, but the pattern is still rejected due to
    missing support for the instruction renderer. (detail/ViewSVN)
    by arsenm
  116. [clang-tidy] Fix bugprone-argument-comment bug if there are marcos.

    Summary:
    Fix bugprone-argument-comment bug if there are marcos.

    For example:
    ```
    void j(int a, int b, int c);
    j(X(1), /*b=*/1, X(1));
    ```

    clang-tidy can't recognize comment "/*b=*/". It suggests fix like this:
    ```
    j(X(1), /*b=*//*b=*/1, X(1));
    ```

    This change tries to fix this issue.

    Reviewers: alexfh, hokein, aaron.ballman

    Reviewed By: alexfh

    Subscribers: xazax.hun, cfe-commits

    Tags: #clang, #clang-tools-extra

    Patch by Yubo Xie.

    Differential Revision: https://reviews.llvm.org/D67080 (detail/ViewSVN)
    by alexfh
  117. GlobalISel: Define GINodeEquiv for undef

    AMDGPU uses this for undef vector elements in some patterns which will
    be enabled in a future patch. (detail/ViewSVN)
    by arsenm
  118. [Attributor] Deal more explicit with non-exact definitions

    Summary:
    Before we tried to rule out non-exact definitions early but that lead to
    on-demand attributes created for them anyway. As a consequence we needed
    to look at the definition in the initialize of each attribute again.
    This patch centralized this lookup and tightens the condition under
    which we give up on non-exact definitions.

    Reviewers: uenoku, sstefan1

    Subscribers: hiraditya, bollu, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67115 (detail/ViewSVN)
    by jdoerfert
  119. [X86] Add support for avx512bf16 for __builtin_cpu_supports and compiler-rt's cpu indicator. (detail/ViewSVN)
    by ctopper
  120. [Attributor] Ensure AAIsDead correctly overrides getIRPosition

    As commented on D65712, the getIRPosition methods weren't correctly being overridden.

    Differential Revision: https://reviews.llvm.org/D67170 (detail/ViewSVN)
    by rksimon
  121. [Hexagon] Improve generated code for test-if-bit-clear, one more time

    Adjust isel patterns after recent commit. Fixes https://llvm.org/PR43194. (detail/ViewSVN)
    by kparzysz
  122. [PowerPC][Altivec][Clang] Check compile-time constant for vec_dst*

    Summary:
    This is follow up of https://reviews.llvm.org/D66699.
    We might get ISEL ICE if we call vec_dss with non const 3rd arg.

    ```
    Cannot select: intrinsic %llvm.ppc.altivec.dst
    ```

    We should check the constraints in clang and generate better error
    messages.

    Reviewers: nemanjai, hfinkel, echristo, #powerpc, wuzish

    Reviewed By: #powerpc, wuzish

    Subscribers: wuzish, kbarton, MaskRay, shchenz, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D66748 (detail/ViewSVN)
    by jsji
  123. [InstSimplify] guard against unreachable code (PR43218)

    This would crash:
    https://bugs.llvm.org/show_bug.cgi?id=43218 (detail/ViewSVN)
    by spatel
  124. [Driver] Use shared singleton instance of DriverOptTable

    Summary:
    This significantly reduces the time required to run clangd tests, by
    ~10%.

    Should also have an effect on other tests that run command-line parsing
    multiple times inside a single invocation.

    Reviewers: gribozavr, sammccall

    Reviewed By: sammccall

    Subscribers: kadircet, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D67163 (detail/ViewSVN)
    by ibiryukov
  125. [Debuginfo][SROA] Need to handle dbg.value in SROA pass.

    SROA pass processes debug info incorrecly if applied twice.
    Specifically, after SROA works first time, instcombine converts dbg.declare
    intrinsics into dbg.value. Inlining creates new opportunities for SROA,
    so it is called again. This time it does not handle correctly previously
    inserted dbg.value intrinsics.

    Differential Revision: https://reviews.llvm.org/D64595 (detail/ViewSVN)
    by avl
  126. [ASTImporter] Added visibility context check for TypedefNameDecl.

    Summary:
    ASTImporter makes now difference between typedefs and type aliases
    with same name in different translation units
    if these are not visible outside.

    Reviewers: martong, a.sidorin, shafik, a_sidorin

    Reviewed By: martong, shafik

    Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D64480 (detail/ViewSVN)
    by balazske
  127. [PowerPC][Altivec] Fix constant argument for vec_dss

    Summary:
    This is similar to vec_ct* in https://reviews.llvm.org/rL304205.

    The argument must be a constant, otherwise instruction selection
    will fail. always_inline is not enough for isel to always fold
    everything away at -O0.

    The fix is to turn the function into macros in altivec.h.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=43072

    Reviewers: nemanjai, hfinkel, #powerpc, wuzish

    Reviewed By: #powerpc, wuzish

    Subscribers: wuzish, kbarton, MaskRay, shchenz, cfe-commits

    Tags: #clang

    Differential Revision: https://reviews.llvm.org/D66699 (detail/ViewSVN)
    by jsji
  128. [InstCombine] add tests for insert/extract with identity shuffles; NFC (detail/ViewSVN)
    by spatel
  129. [libc++] Move __clamp_to_integral to <cmath>, and harden against min()/max() macros (detail/ViewSVN)
    by Louis Dionne
  130. [clangd] Add TUScheduler.h to CodeComplete.cpp to unbreak builds (detail/ViewSVN)
    by kadircet
  131. [ModuloSchedule] Fix no-asserts build

    Apologies, due to a git SNAFU this fix (dump doesn't exist and silence unused variables) stayed in my index rather than applying to rL370893. (detail/ViewSVN)
    by jamesm
  132. [ModuloSchedule] Introduce PeelingModuloScheduleExpander

    This is the beginnings of a reimplementation of ModuloScheduleExpander. It works
    by generating a single-block correct pipelined kernel and then peeling out the
    prolog and epilogs.

    This patch implements kernel generation as well as a validator that will
    confirm the number of phis added is the same as the ModuloScheduleExpander.

    Prolog and epilog peeling will come in a different patch.

    Differential Revision: https://reviews.llvm.org/D67081 (detail/ViewSVN)
    by jamesm
  133. Fix "enumeral and non-enumeral type in conditional expression" warnings. NFCI. (detail/ViewSVN)
    by rksimon
  134. [libc++] Add `__truncating_cast` for safely casting float types to integers

    This is needed anytime we need to clamp an arbitrary floating point
    value to an integer type.

    Thanks to Eric Fiselier for the patch.

    Differential Revision: https://reviews.llvm.org/D66836 (detail/ViewSVN)
    by Louis Dionne
  135. [NFC] Added a negative test for new fold (detail/ViewSVN)
    by xbolva00
  136. [libc++] Use __extension__ in a portable manner (detail/ViewSVN)
    by Louis Dionne
  137. [NFC] Fixed test (detail/ViewSVN)
    by xbolva00
  138. [NFC] Adjust tests for new fold (detail/ViewSVN)
    by xbolva00
  139. [NFC] Added tests for new fold (detail/ViewSVN)
    by xbolva00
  140. [clangd] Fix SelectionTree behavior on implicit 'this' (detail/ViewSVN)
    by sammccall
  141. [InstCombine] Fold sub (or A, B) (and A, B) to (xor A, B)

    Summary:
    ```
    Name: sub or and to xor
    %or = or i32 %y, %x
    %and = and i32 %x, %y
    %sub = sub i32 %or, %and
      =>
    %sub = xor i32 %x, %y

    Optimization: sub or and to xor
    Done: 1
    Optimization is correct!
    ```
    https://rise4fun.com/Alive/eJu

    Reviewers: spatel, lebedev.ri

    Reviewed By: lebedev.ri

    Subscribers: hiraditya, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67153 (detail/ViewSVN)
    by xbolva00
  142. Fix address sizes in the dwarfdump-debug-loc-error-cases test

    the test is building a 64-bit executable, so the addresses should be
    64-bit too. The test was still passing even with smaller address size,
    but it was hitting the "unexpected end of data" error sooner than it
    should. (detail/ViewSVN)
    by labath
  143. [NFC] Added a new test for D67153 (detail/ViewSVN)
    by xbolva00
  144. [NFC] Added tests for 'SUB of OR and AND to XOR' fold (detail/ViewSVN)
    by xbolva00
  145. [DebugInfo] LiveDebugValues: locations with different exprs should not be merged

    When comparing variable locations, LiveDebugValues currently considers only
    the machine location, ignoring any DIExpression applied to it. This is a
    problem because that DIExpression can do pretty much anything to the machine
    location, for example dereferencing it.

    This patch adds DIExpressions to that comparison; now variables based on the
    same register/memory-location but with different expressions will compare
    differently, and be dropped if we attempt to merge them between blocks. This
    reduces variable coverage-range a little, but only because we were producing
    broken locations.

    Differential Revision: https://reviews.llvm.org/D66942 (detail/ViewSVN)
    by jmorse
  146. gn build: Merge r370862 (detail/ViewSVN)
    by nico
  147. Revert "[Clang Interpreter] Initial patch for the constexpr interpreter"

    Breaks BUILD_SHARED_LIBS build, introduces cycles in library dependency
    graphs. (clangInterp depends on clangAST which depends on clangInterp)

    This reverts r370839, which is an yet another recommit of D64146. (detail/ViewSVN)
    by lebedevri
  148. [cmake] Remove MSVC C4180 override

    Tested on VS2017 and VS2019 llvm/clang builds with WX enabled - its no longer necessary to disable this warning.

    Differential Revision: https://reviews.llvm.org/D67103 (detail/ViewSVN)
    by rksimon
  149. [LiveDebugValues][NFC] Silence an unused variable warning

    On release builds, 'MI' isn't used by anything (it's already inserted into a
    block by BuildMI), while on non-release builds it's used by a LLVM_DEBUG
    statement. Mark as explicitly used to avoid the warning. (detail/ViewSVN)
    by jmorse
  150. [clangd] Remove macro-expansion-location from getBeginningOfIdentifier. Inline into relevant callsites. NFC (detail/ViewSVN)
    by sammccall
  151. DWARF: Fix a regression in location list dumping

    Summary:
    While fixing the handling of some error cases, r370363 introduced new
    problems -- assertion failures due to unchecked errors (my excuse is that a very
    early version of that patch used Optional<T> instead of Expected).

    This patch adds proper handling of parsing errors encountered when
    dumping location lists from inside DWARF DIEs, and adds a bunch of
    additional tests.

    I reorder the arguments of the location list dumping functions to make
    them consistent, and also be able to dump the two kinds of location
    lists generically.

    Reviewers: JDevlieghere, dblaikie, probinson

    Subscribers: aprantl, llvm-commits

    Tags: #llvm

    Differential Revision: https://reviews.llvm.org/D67102 (detail/ViewSVN)
    by labath
  152. [cmake] Remove MSVC C4258 override

    Tested on VS2017 and VS2019 llvm/clang builds with WX enabled - its no longer necessary to disable this warning.

    Differential Revision: https://reviews.llvm.org/D67047 (detail/ViewSVN)
    by rksimon
  153. [clangd] Remove obsolete includes. NFC (detail/ViewSVN)
    by sammccall
  154. [clangd] Move threading helper to more appropriate header. NFC (detail/ViewSVN)
    by sammccall
  155. [clangd] Rename ClangdUnit.h -> ParsedAST.h. NFC

    This much better reflects what is (now) in this header.
    Maybe a rename to ParsedTU would be an improvement, but that's a much
    more invasive change and life is too short.

    ClangdUnit is dead, long live ClangdUnitTests! (detail/ViewSVN)
    by sammccall
  156. [llvm-dwarfdump] Fix spelling in the comments. NFC (detail/ViewSVN)
    by djtodoro
  157. [llvm-objcopy] Add objcopy::elf::Object::allocSections to simplify loops on SHF_ALLOC sections

    Reviewed By: jhenderson

    Differential Revision: https://reviews.llvm.org/D67142 (detail/ViewSVN)
    by maskray
  158. [yaml2obj] Support PT_GNU_STACK and PT_GNU_RELRO

    PT_GNU_STACK is used in an llvm-objcopy test.

    I plan to use PT_GNU_RELRO in a patch to improve nested segment
    processing in llvm-objcopy (PR42963).

    Reviewed By: grimar

    Differential Revision: https://reviews.llvm.org/D67146 (detail/ViewSVN)
    by maskray
  159. [llvm-objcopy] Rename variable names "Section" to "Sec". NFC

    "Section" can refer to the type llvm::objcopy::elf::Section or the
    variable name. Rename it to "Sec" for clarity. "Sec" is already used a
    lot, so this change improves consistency as well.

    Also change `auto` to `const SectionBase` for readability.

    Reviewed By: grimar

    Differential Revision: https://reviews.llvm.org/D67143 (detail/ViewSVN)
    by maskray
  160. [ARM][ParallelDSP] SExt mul for accumulation

    For any unpaired muls, we accumulate them as an input to the
    reduction. Check the type of the mul and perform a sext if the
    existing accumlator input type is not the same.

    Differential Revision: https://reviews.llvm.org/D66993 (detail/ViewSVN)
    by sam_parker

Started by upstream project Clang Stage 2: cmake, R -g Tsan, using Stage 1 RA build number 18264
originally caused by:

Started by upstream project Clang Stage 2: cmake, R -g Tsan, using Stage 1 RA build number 18265
originally caused by:

This run spent:

  • 13 hr waiting;
  • 17 hr build duration;
  • 1 day 7 hr 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

Regression test failed

This build failed because a regression test in the test suite FAILed. See the test report for details.
Indication 2

Compile Error

This build failed because of a compile error. Below is a list of all errors in the build log:
Indication 3

Ninja target failed

Below is a link to the first failed ninja target.
Indication 4