FailedChanges

Summary

  1. [tblgen] Add getOperatorAsDef() to Record Summary: While working with DagInit's, it's often the case that you expect the operator to be a reference to a def. This patch adds a wrapper for this common case to reduce the amount of boilerplate callers need to duplicate repeatedly. getOperatorAsDef() returns the record if the DagInit has an operator that is a DefInit. Otherwise, it prints a fatal error. There's only a few pre-existing examples in LLVM at the moment and I've left a few instances of the code this simplifies as they had more specific error messages than the generic one this produces. I'm going to be using this a fair bit in my subsequent patches. Reviewers: bogner, volkan, nhaehnle Reviewed By: nhaehnle Subscribers: nhaehnle, hiraditya, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, lenary, s.egerton, pzheng, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68424
  2. [BPF] do compile-once run-everywhere relocation for bitfields A bpf specific clang intrinsic is introduced: u32 __builtin_preserve_field_info(member_access, info_kind) Depending on info_kind, different information will be returned to the program. A relocation is also recorded for this builtin so that bpf loader can patch the instruction on the target host. This clang intrinsic is used to get certain information to facilitate struct/union member relocations. The offset relocation is extended by 4 bytes to include relocation kind. Currently supported relocation kinds are enum { FIELD_BYTE_OFFSET = 0, FIELD_BYTE_SIZE, FIELD_EXISTENCE, FIELD_SIGNEDNESS, FIELD_LSHIFT_U64, FIELD_RSHIFT_U64, }; for __builtin_preserve_field_info. The old access offset relocation is covered by FIELD_BYTE_OFFSET = 0. An example: struct s { int a; int b1:9; int b2:4; }; enum { FIELD_BYTE_OFFSET = 0, FIELD_BYTE_SIZE, FIELD_EXISTENCE, FIELD_SIGNEDNESS, FIELD_LSHIFT_U64, FIELD_RSHIFT_U64, }; void bpf_probe_read(void *, unsigned, const void *); int field_read(struct s *arg) { unsigned long long ull = 0; unsigned offset = __builtin_preserve_field_info(arg->b2, FIELD_BYTE_OFFSET); unsigned size = __builtin_preserve_field_info(arg->b2, FIELD_BYTE_SIZE); #ifdef USE_PROBE_READ bpf_probe_read(&ull, size, (const void *)arg + offset); unsigned lshift = __builtin_preserve_field_info(arg->b2, FIELD_LSHIFT_U64); #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ lshift = lshift + (size << 3) - 64; #endif #else switch(size) { case 1: ull = *(unsigned char *)((void *)arg + offset); break; case 2: ull = *(unsigned short *)((void *)arg + offset); break; case 4: ull = *(unsigned int *)((void *)arg + offset); break; case 8: ull = *(unsigned long long *)((void *)arg + offset); break; } unsigned lshift = __builtin_preserve_field_info(arg->b2, FIELD_LSHIFT_U64); #endif ull <<= lshift; if (__builtin_preserve_field_info(arg->b2, FIELD_SIGNEDNESS)) return (long long)ull >> __builtin_preserve_field_info(arg->b2, FIELD_RSHIFT_U64); return ull >> __builtin_preserve_field_info(arg->b2, FIELD_RSHIFT_U64); } There is a minor overhead for bpf_probe_read() on big endian. The code and relocation generated for field_read where bpf_probe_read() is used to access argument data on little endian mode: r3 = r1 r1 = 0 r1 = 4 <=== relocation (FIELD_BYTE_OFFSET) r3 += r1 r1 = r10 r1 += -8 r2 = 4 <=== relocation (FIELD_BYTE_SIZE) call bpf_probe_read r2 = 51 <=== relocation (FIELD_LSHIFT_U64) r1 = *(u64 *)(r10 - 8) r1 <<= r2 r2 = 60 <=== relocation (FIELD_RSHIFT_U64) r0 = r1 r0 >>= r2 r3 = 1 <=== relocation (FIELD_SIGNEDNESS) if r3 == 0 goto LBB0_2 r1 s>>= r2 r0 = r1 LBB0_2: exit Compare to the above code between relocations FIELD_LSHIFT_U64 and FIELD_LSHIFT_U64, the code with big endian mode has four more instructions. r1 = 41 <=== relocation (FIELD_LSHIFT_U64) r6 += r1 r6 += -64 r6 <<= 32 r6 >>= 32 r1 = *(u64 *)(r10 - 8) r1 <<= r6 r2 = 60 <=== relocation (FIELD_RSHIFT_U64) The code and relocation generated when using direct load. r2 = 0 r3 = 4 r4 = 4 if r4 s> 3 goto LBB0_3 if r4 == 1 goto LBB0_5 if r4 == 2 goto LBB0_6 goto LBB0_9 LBB0_6: # %sw.bb1 r1 += r3 r2 = *(u16 *)(r1 + 0) goto LBB0_9 LBB0_3: # %entry if r4 == 4 goto LBB0_7 if r4 == 8 goto LBB0_8 goto LBB0_9 LBB0_8: # %sw.bb9 r1 += r3 r2 = *(u64 *)(r1 + 0) goto LBB0_9 LBB0_5: # %sw.bb r1 += r3 r2 = *(u8 *)(r1 + 0) goto LBB0_9 LBB0_7: # %sw.bb5 r1 += r3 r2 = *(u32 *)(r1 + 0) LBB0_9: # %sw.epilog r1 = 51 r2 <<= r1 r1 = 60 r0 = r2 r0 >>= r1 r3 = 1 if r3 == 0 goto LBB0_11 r2 s>>= r1 r0 = r2 LBB0_11: # %sw.epilog exit Considering verifier is able to do limited constant propogation following branches. The following is the code actually traversed. r2 = 0 r3 = 4 <=== relocation r4 = 4 <=== relocation if r4 s> 3 goto LBB0_3 LBB0_3: # %entry if r4 == 4 goto LBB0_7 LBB0_7: # %sw.bb5 r1 += r3 r2 = *(u32 *)(r1 + 0) LBB0_9: # %sw.epilog r1 = 51 <=== relocation r2 <<= r1 r1 = 60 <=== relocation r0 = r2 r0 >>= r1 r3 = 1 if r3 == 0 goto LBB0_11 r2 s>>= r1 r0 = r2 LBB0_11: # %sw.epilog exit For native load case, the load size is calculated to be the same as the size of load width LLVM otherwise used to load the value which is then used to extract the bitfield value. Differential Revision: https://reviews.llvm.org/D67980
  3. [NFC] Attempt to make ubsan-blacklist-vfs test pass on Windows Previously disabled in d0c2d5daa3e
  4. [driver][hip] Skip bundler if host action is nothing. Reviewers: sfantao, tra, yaxunl Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68652
  5. [OPENMP50]Do not allow multiple same context traits in the same context selector. According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each trait-selector-name can only be specified once. Added check for this restriction.
  6. AMDGPU: Fix i16 arithmetic pattern redundancy There were 2 problems here. First, these patterns were duplicated to handle the inverted shift operands instead of using the commuted PatFrags. Second, the point of the zext folding patterns don't apply to the non-0ing high subtargets. They should be skipped instead of inserting the extension. The zeroing high code would be emitted when necessary anyway. This was also emitting unnecessary zexts in cases where the high bits were undefined.
  7. Revert "[LoopVectorize][PowerPC] Estimate int and float register pressure separately in loop-vectorize" Also Revert "[LoopVectorize] Fix non-debug builds after rL374017" This reverts commit 9f41deccc0e648a006c9f38e11919f181b6c7e0a. This reverts commit 18b6fe07bcf44294f200bd2b526cb737ed275c04. The patch is breaking PowerPC internal build, checked with author, reverting on behalf of him for now due to timezone.
  8. [SLP] add test with prefer-vector-width function attribute; NFC (PR43578)
  9. [CodeExtractor] Factor out and reuse shrinkwrap analysis Factor out CodeExtractor's analysis of allocas (for shrinkwrapping purposes), and allow the analysis to be reused. This resolves a quadratic compile-time bug observed when compiling AMDGPUDisassembler.cpp.o. Pre-patch (Release + LTO clang): ``` ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 176.5278 ( 57.8%) 0.4915 ( 18.5%) 177.0192 ( 57.4%) 177.4112 ( 57.3%) Hot Cold Splitting ``` Post-patch (ReleaseAsserts clang): ``` ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 1.4051 ( 3.3%) 0.0079 ( 0.3%) 1.4129 ( 3.2%) 1.4129 ( 3.2%) Hot Cold Splitting ``` Testing: check-llvm, and comparing the AMDGPUDisassembler.cpp.o binary pre- vs. post-patch. An alternate approach is to hide CodeExtractorAnalysisCache from clients of CodeExtractor, and to recompute the analysis from scratch inside of CodeExtractor::extractCodeRegion(). This eliminates some redundant work in the shrinkwrapping legality check. However, some clients continue to exhibit O(n^2) compile time behavior as computing the analysis is O(n). rdar://55912966 Differential Revision: https://reviews.llvm.org/D68616
  10. [sanitizer] Disable crypt*.cpp tests on Android
  11. AMDGPU: Add offsets to MMO when lowering buffer intrinsics Summary: Without offsets on the MachineMemOperands (MMOs), MachineInstr::mayAlias() will return true for all reads and writes to the same resource descriptor. This leads to O(N^2) complexity in the MachineScheduler when analyzing dependencies of buffer loads and stores. It also limits the SILoadStoreOptimizer from merging more instructions. This patch reduces the compile time of one pathological compute shader from 12 seconds to 1 second. Reviewers: arsenm, nhaehnle Reviewed By: arsenm Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65097
  12. [Attributor][Fix] Temporary fix for windows build bot failure D65402 causes test failure related to attributor-max-iterations. This commit removes attributor-max-iterations-verify for now. I'll examine the factor and the flag should be reverted.
  13. CodeGenPrepare - silence static analyzer dyn_cast<> null dereference warnings. NFCI. The static analyzer is warning about potential null dereferences, but in these cases we should be able to use cast<> directly and if not assert will fire for us.
  14. [AMDGPU] Disable unused gfx10 dpp instructions Inhibit generation of unused real dpp instructions on gfx10 just like it is done on other subtargets. This does not change anything because these are illegal anyway and not accepted, but it does reduce the number of instruction definitions generated. Differential Revision: https://reviews.llvm.org/D68607
  15. [libc++] Make sure we link all system libraries into the benchmarks It turns out that r374056 broke _some_ build bots again, specifically the ones using sanitizers. Instead of trying to link the right system libraries to the benchmarks bit-by-bit, let's just link exactly the system libraries that libc++ itself needs.
  16. [UpdateCCTestChecks] Detect function mangled name on separate line Sometimes functions with large comment blocks in front of them have their declarations output on several lines by c-index-test. Hence the one-line function name/line/mangled pattern will not work to detect them. Break the pattern up into two patterns and keep state after seeing the name/line information until we finally see the mangled name. Differential Revision: https://reviews.llvm.org/D68272
  17. [NFC][CVP] Add tests where we can replace sext with zext If the sign bit of the value that is being sign-extended is not set, i.e. the value is non-negative (s>= 0), then zero-extension will suffice, and is better for analysis: https://rise4fun.com/Alive/a8PD
  18. (Re)generate various tests. NFC
  19. [WebAssembly] Fix a bug in 'try' placement Summary: When searching for local expression tree created by stackified registers, for 'block' placement, we start the search from the previous instruction of a BB's terminator. But in 'try''s case, we should start from the previous instruction of a call that can throw, or a EH_LABEL that precedes the call, because the return values of the call's previous instructions can be stackified and consumed by the throwing call. For example, ``` i32.call @foo call @bar ; may throw br $label0 ``` In this case, if we start the search from the previous instruction of the terminator (`br` here), we end up stopping at `call @bar` and place a 'try' between `i32.call @foo` and `call @bar`, because `call @bar` does not have a return value so it is not a local expression tree of `br`. But in this case, unlike when placing 'block's, we should start the search from `call @bar`, because the return value of `i32.call @foo` is stackified and used by `call @bar`. Reviewers: dschuff Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68619
  20. [OPENMP50]Prohibit multiple context selector sets in context selectors. According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each trait-set-selector-name can only be specified once. Added check to implement this restriction.
  21. [builtins] Unbreak build on FreeBSD armv7 after D60351 headers include reordering. Reviewers: phosek, echristo Reviewed-By: phosek Differential Revsion: https://reviews.llvm.org/D68045
  22. [DebugInfo][If-Converter] Update call site info during the optimization During the If-Converter optimization pay attention when copying or deleting call instructions in order to keep call site information in valid state. Reviewers: aprantl, vsk, efriedma Reviewed By: vsk, efriedma Differential Revision: https://reviews.llvm.org/D66955
  23. gn build: Merge r374062
  24. gn build: Merge r374061
  25. [Attributor][MustExec] Deduce dereferenceable and nonnull attribute using MustBeExecutedContextExplorer Summary: In D65186 and related patches, MustBeExecutedContextExplorer is introduced. This enables us to traverse instructions guaranteed to execute from function entry. If we can know the argument is used as `dereferenceable` or `nonnull` in these instructions, we can mark `dereferenceable` or `nonnull` in the argument definition: 1. Memory instruction (similar to D64258) Trace memory instruction pointer operand. Currently, only inbounds GEPs are traced. ``` define i64* @f(i64* %a) { entry: %add.ptr = getelementptr inbounds i64, i64* %a, i64 1 ; (because of inbounds GEP we can know that %a is at least dereferenceable(16)) store i64 1, i64* %add.ptr, align 8 ret i64* %add.ptr ; dereferenceable 8 (because above instruction stores into it) } ``` 2. Propagation from callsite (similar to D27855) If `deref` or `nonnull` are known in call site parameter attributes we can also say that argument also that attribute. ``` declare void @use3(i8* %x, i8* %y, i8* %z); declare void @use3nonnull(i8* nonnull %x, i8* nonnull %y, i8* nonnull %z); define void @parent1(i8* %a, i8* %b, i8* %c) { call void @use3nonnull(i8* %b, i8* %c, i8* %a) ; Above instruction is always executed so we can say that@parent1(i8* nonnnull %a, i8* nonnull %b, i8* nonnull %c) call void @use3(i8* %c, i8* %a, i8* %b) ret void } ``` Reviewers: jdoerfert, sstefan1, spatel, reames Reviewed By: jdoerfert Subscribers: xbolva00, hiraditya, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65402
  26. Revert [TextAPI] Introduce TBDv4 This reverts r374058 (git commit 5d566c5a46aeaa1fa0e5c0b823c9d5f84036dc9a)
  27. [clang][ifs] Clang Interface Stubs ToolChain plumbing. Second Landing Attempt: This patch enables end to end support for generating ELF interface stubs directly from clang. Now the following: clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp will product an ELF binary with visible symbols populated. Visibility attributes and -fvisibility can be used to control what gets populated. * Adding ToolChain support for clang Driver IFS Merge Phase * Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain * Adds support for the clang Driver to involve llvm-ifs on ifs files. * Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF) Differential Revision: https://reviews.llvm.org/D63978
  28. [Attributor] Add helper class to compose two structured deduction. Summary: This patch introduces a generic way to compose two structured deductions. This will be used for composing generic deduction with `MustBeExecutedExplorer` and other existing generic deduction. Reviewers: jdoerfert, sstefan1 Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66645
  29. gn build: Merge r374058
  30. [TextAPI] Introduce TBDv4 Summary: This format introduces new features and platforms The motivation for this format is to support more than 1 platform since previous versions only supported additional architectures and 1 platform, for example ios + ios-simulator and macCatalyst. Reviewers: ributzka, steven_wu Reviewed By: ributzka Subscribers: mgorny, hiraditya, mgrang, dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67529
  31. [OPENMP50]Allow functions in declare variant directive to have different C linkage. After some discussion with OpenMP developers, it was decided that the functions with the different C linkage can be used in declare variant directive.
  32. [libc++] TAKE 2: Make system libraries PRIVATE dependencies of libc++ We tried doing that previously (in r373487) and failed (reverted in r373506) because the benchmarks needed to link against system libraries and relied on libc++'s dependencies being propagated. Now that this has been fixed (in r374053), this commit marks the system libraries as PRIVATE dependencies of libc++.
  33. [Mips] Emit proper ABI for _mcount calls When -pg option is present than a call to _mcount is inserted into every function. However since the proper ABI was not followed then the generated gmon.out did not give proper results. By inserting needed instructions before every _mcount we can fix this. Differential Revision: https://reviews.llvm.org/D68390
  34. [llvm-exegesis] Add options to SnippetGenerator. Summary: This adds a `-max-configs-per-opcode` option to limit the number of configs per opcode. Reviewers: gchatelet Subscribers: tschuett, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68642
  35. [libc++] Add missing link-time dependencies to the benchmarks Since the benchmarks build with -nostdlib, they need to manually link against some system libraries that are used by the benchmarks and the GoogleBenchmark library itself. Previously, we'd rely on the fact that these libraries were linked through the PUBLIC dependencies of cxx_shared/cxx_static. However, if we were to make these dependencies PRIVATE (as they should be because they are implementation details of libc++), the benchmarks would fail to link. This commit remediates that.
Revision 374101 by dsanders:
[tblgen] Add getOperatorAsDef() to Record

Summary:
While working with DagInit's, it's often the case that you expect the
operator to be a reference to a def. This patch adds a wrapper for this
common case to reduce the amount of boilerplate callers need to duplicate
repeatedly.

getOperatorAsDef() returns the record if the DagInit has an operator that is
a DefInit. Otherwise, it prints a fatal error.

There's only a few pre-existing examples in LLVM at the moment and I've
left a few instances of the code this simplifies as they had more specific
error messages than the generic one this produces. I'm going to be using
this a fair bit in my subsequent patches.

Reviewers: bogner, volkan, nhaehnle

Reviewed By: nhaehnle

Subscribers: nhaehnle, hiraditya, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, lenary, s.egerton, pzheng, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68424
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/TableGen/Record.hllvm.src/include/llvm/TableGen/Record.h
The file was modified/llvm/trunk/lib/TableGen/Record.cppllvm.src/lib/TableGen/Record.cpp
The file was modified/llvm/trunk/utils/TableGen/AsmWriterEmitter.cppllvm.src/utils/TableGen/AsmWriterEmitter.cpp
The file was modified/llvm/trunk/utils/TableGen/RISCVCompressInstEmitter.cppllvm.src/utils/TableGen/RISCVCompressInstEmitter.cpp
Revision 374099 by yhs:
[BPF] do compile-once run-everywhere relocation for bitfields

A bpf specific clang intrinsic is introduced:
   u32 __builtin_preserve_field_info(member_access, info_kind)
Depending on info_kind, different information will
be returned to the program. A relocation is also
recorded for this builtin so that bpf loader can
patch the instruction on the target host.
This clang intrinsic is used to get certain information
to facilitate struct/union member relocations.

The offset relocation is extended by 4 bytes to
include relocation kind.
Currently supported relocation kinds are
enum {
    FIELD_BYTE_OFFSET = 0,
    FIELD_BYTE_SIZE,
    FIELD_EXISTENCE,
    FIELD_SIGNEDNESS,
    FIELD_LSHIFT_U64,
    FIELD_RSHIFT_U64,
};
for __builtin_preserve_field_info. The old
access offset relocation is covered by
    FIELD_BYTE_OFFSET = 0.

An example:
struct s {
    int a;
    int b1:9;
    int b2:4;
};
enum {
    FIELD_BYTE_OFFSET = 0,
    FIELD_BYTE_SIZE,
    FIELD_EXISTENCE,
    FIELD_SIGNEDNESS,
    FIELD_LSHIFT_U64,
    FIELD_RSHIFT_U64,
};

void bpf_probe_read(void *, unsigned, const void *);
int field_read(struct s *arg) {
  unsigned long long ull = 0;
  unsigned offset = __builtin_preserve_field_info(arg->b2, FIELD_BYTE_OFFSET);
  unsigned size = __builtin_preserve_field_info(arg->b2, FIELD_BYTE_SIZE);
#ifdef USE_PROBE_READ
  bpf_probe_read(&ull, size, (const void *)arg + offset);
  unsigned lshift = __builtin_preserve_field_info(arg->b2, FIELD_LSHIFT_U64);
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
  lshift = lshift + (size << 3) - 64;
#endif
#else
  switch(size) {
  case 1:
    ull = *(unsigned char *)((void *)arg + offset); break;
  case 2:
    ull = *(unsigned short *)((void *)arg + offset); break;
  case 4:
    ull = *(unsigned int *)((void *)arg + offset); break;
  case 8:
    ull = *(unsigned long long *)((void *)arg + offset); break;
  }
  unsigned lshift = __builtin_preserve_field_info(arg->b2, FIELD_LSHIFT_U64);
#endif
  ull <<= lshift;
  if (__builtin_preserve_field_info(arg->b2, FIELD_SIGNEDNESS))
    return (long long)ull >> __builtin_preserve_field_info(arg->b2, FIELD_RSHIFT_U64);
  return ull >> __builtin_preserve_field_info(arg->b2, FIELD_RSHIFT_U64);
}

There is a minor overhead for bpf_probe_read() on big endian.

The code and relocation generated for field_read where bpf_probe_read() is
used to access argument data on little endian mode:
        r3 = r1
        r1 = 0
        r1 = 4  <=== relocation (FIELD_BYTE_OFFSET)
        r3 += r1
        r1 = r10
        r1 += -8
        r2 = 4  <=== relocation (FIELD_BYTE_SIZE)
        call bpf_probe_read
        r2 = 51 <=== relocation (FIELD_LSHIFT_U64)
        r1 = *(u64 *)(r10 - 8)
        r1 <<= r2
        r2 = 60 <=== relocation (FIELD_RSHIFT_U64)
        r0 = r1
        r0 >>= r2
        r3 = 1  <=== relocation (FIELD_SIGNEDNESS)
        if r3 == 0 goto LBB0_2
        r1 s>>= r2
        r0 = r1
LBB0_2:
        exit

Compare to the above code between relocations FIELD_LSHIFT_U64 and
FIELD_LSHIFT_U64, the code with big endian mode has four more
instructions.
        r1 = 41   <=== relocation (FIELD_LSHIFT_U64)
        r6 += r1
        r6 += -64
        r6 <<= 32
        r6 >>= 32
        r1 = *(u64 *)(r10 - 8)
        r1 <<= r6
        r2 = 60   <=== relocation (FIELD_RSHIFT_U64)

The code and relocation generated when using direct load.
        r2 = 0
        r3 = 4
        r4 = 4
        if r4 s> 3 goto LBB0_3
        if r4 == 1 goto LBB0_5
        if r4 == 2 goto LBB0_6
        goto LBB0_9
LBB0_6:                                 # %sw.bb1
        r1 += r3
        r2 = *(u16 *)(r1 + 0)
        goto LBB0_9
LBB0_3:                                 # %entry
        if r4 == 4 goto LBB0_7
        if r4 == 8 goto LBB0_8
        goto LBB0_9
LBB0_8:                                 # %sw.bb9
        r1 += r3
        r2 = *(u64 *)(r1 + 0)
        goto LBB0_9
LBB0_5:                                 # %sw.bb
        r1 += r3
        r2 = *(u8 *)(r1 + 0)
        goto LBB0_9
LBB0_7:                                 # %sw.bb5
        r1 += r3
        r2 = *(u32 *)(r1 + 0)
LBB0_9:                                 # %sw.epilog
        r1 = 51
        r2 <<= r1
        r1 = 60
        r0 = r2
        r0 >>= r1
        r3 = 1
        if r3 == 0 goto LBB0_11
        r2 s>>= r1
        r0 = r2
LBB0_11:                                # %sw.epilog
        exit

Considering verifier is able to do limited constant
propogation following branches. The following is the
code actually traversed.
        r2 = 0
        r3 = 4   <=== relocation
        r4 = 4   <=== relocation
        if r4 s> 3 goto LBB0_3
LBB0_3:                                 # %entry
        if r4 == 4 goto LBB0_7
LBB0_7:                                 # %sw.bb5
        r1 += r3
        r2 = *(u32 *)(r1 + 0)
LBB0_9:                                 # %sw.epilog
        r1 = 51   <=== relocation
        r2 <<= r1
        r1 = 60   <=== relocation
        r0 = r2
        r0 >>= r1
        r3 = 1
        if r3 == 0 goto LBB0_11
        r2 s>>= r1
        r0 = r2
LBB0_11:                                # %sw.epilog
        exit

For native load case, the load size is calculated to be the
same as the size of load width LLVM otherwise used to load
the value which is then used to extract the bitfield value.

Differential Revision: https://reviews.llvm.org/D67980
Change TypePath in RepositoryPath in Workspace
The file was added/cfe/trunk/include/clang/Basic/BuiltinsBPF.defclang.src/include/clang/Basic/BuiltinsBPF.def
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.tdclang.src/include/clang/Basic/DiagnosticSemaKinds.td
The file was modified/cfe/trunk/include/clang/Basic/TargetBuiltins.hclang.src/include/clang/Basic/TargetBuiltins.h
The file was modified/cfe/trunk/include/clang/Sema/Sema.hclang.src/include/clang/Sema/Sema.h
The file was modified/cfe/trunk/include/clang/module.modulemapclang.src/include/clang/module.modulemap
The file was modified/cfe/trunk/lib/Basic/Targets/BPF.cppclang.src/lib/Basic/Targets/BPF.cpp
The file was modified/cfe/trunk/lib/Basic/Targets/BPF.hclang.src/lib/Basic/Targets/BPF.h
The file was modified/cfe/trunk/lib/CodeGen/CGBuiltin.cppclang.src/lib/CodeGen/CGBuiltin.cpp
The file was modified/cfe/trunk/lib/CodeGen/CGExpr.cppclang.src/lib/CodeGen/CGExpr.cpp
The file was modified/cfe/trunk/lib/CodeGen/CodeGenFunction.hclang.src/lib/CodeGen/CodeGenFunction.h
The file was modified/cfe/trunk/lib/Sema/SemaChecking.cppclang.src/lib/Sema/SemaChecking.cpp
The file was added/cfe/trunk/test/CodeGen/builtins-bpf-preserve-field-info-1.cclang.src/test/CodeGen/builtins-bpf-preserve-field-info-1.c
The file was added/cfe/trunk/test/CodeGen/builtins-bpf-preserve-field-info-2.cclang.src/test/CodeGen/builtins-bpf-preserve-field-info-2.c
The file was added/cfe/trunk/test/Sema/builtins-bpf.cclang.src/test/Sema/builtins-bpf.c
The file was modified/llvm/trunk/include/llvm/IR/IntrinsicsBPF.tdllvm.src/include/llvm/IR/IntrinsicsBPF.td
The file was modified/llvm/trunk/lib/Target/BPF/BPF.hllvm.src/lib/Target/BPF/BPF.h
The file was modified/llvm/trunk/lib/Target/BPF/BPFAbstractMemberAccess.cppllvm.src/lib/Target/BPF/BPFAbstractMemberAccess.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BPFCORE.hllvm.src/lib/Target/BPF/BPFCORE.h
The file was modified/llvm/trunk/lib/Target/BPF/BPFTargetMachine.cppllvm.src/lib/Target/BPF/BPFTargetMachine.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BTF.hllvm.src/lib/Target/BPF/BTF.h
The file was modified/llvm/trunk/lib/Target/BPF/BTFDebug.cppllvm.src/lib/Target/BPF/BTFDebug.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BTFDebug.hllvm.src/lib/Target/BPF/BTFDebug.h
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-array.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-array.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-1.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-2.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-2.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-3.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-byte-size-3.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-1.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-2.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-2.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-3.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-existence-3.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-lshift-1.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-lshift-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-lshift-2.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-lshift-2.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-1.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-2.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-2.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-3.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-rshift-3.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-1.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-2.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-2.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-3.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-fieldinfo-signedness-3.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-struct.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-struct.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/intrinsic-union.llllvm.src/test/CodeGen/BPF/CORE/intrinsic-union.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-access-str.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-access-str.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-basic.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-basic.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-array-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-array-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-array-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-array-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-3.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-struct-3.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-union-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-union-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-cast-union-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-cast-union-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-end-load.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-end-load.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-end-ret.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-end-ret.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-fieldinfo-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-fieldinfo-1.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-fieldinfo-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-fieldinfo-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-global-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-global-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-global-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-global-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-global-3.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-global-3.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-ignore.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-ignore.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-middle-chain.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-middle-chain.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-multi-array-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-multi-array-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-multi-array-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-multi-array-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-multilevel.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-multilevel.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-pointer-1.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-pointer-1.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-pointer-2.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-pointer-2.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-struct-anonymous.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-struct-anonymous.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-struct-array.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-struct-array.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-typedef-array.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-typedef-array.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-typedef-struct.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-typedef-struct.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-typedef-union.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-typedef-union.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-typedef.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-typedef.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-union.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-union.ll
Revision 374098 by Jan Korous:
[NFC] Attempt to make ubsan-blacklist-vfs test pass on Windows

Previously disabled in d0c2d5daa3e
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/ubsan-blacklist-vfs.cclang.src/test/CodeGen/ubsan-blacklist-vfs.c
Revision 374097 by hliao:
[driver][hip] Skip bundler if host action is nothing.

Reviewers: sfantao, tra, yaxunl

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D68652
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/Driver.cppclang.src/lib/Driver/Driver.cpp
The file was added/cfe/trunk/test/Driver/hip-syntax-only.hipclang.src/test/Driver/hip-syntax-only.hip
Revision 374093 by abataev:
[OPENMP50]Do not allow multiple same context traits in the same context
selector.

According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each
trait-selector-name can only be specified once. Added check for this
restriction.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.tdclang.src/include/clang/Basic/DiagnosticParseKinds.td
The file was modified/cfe/trunk/lib/Parse/ParseOpenMP.cppclang.src/lib/Parse/ParseOpenMP.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_ast_print.cclang.src/test/OpenMP/declare_variant_ast_print.c
The file was modified/cfe/trunk/test/OpenMP/declare_variant_ast_print.cppclang.src/test/OpenMP/declare_variant_ast_print.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_messages.cclang.src/test/OpenMP/declare_variant_messages.c
The file was modified/cfe/trunk/test/OpenMP/declare_variant_messages.cppclang.src/test/OpenMP/declare_variant_messages.cpp
Revision 374092 by arsenm:
AMDGPU: Fix i16 arithmetic pattern redundancy

There were 2 problems here. First, these patterns were duplicated to
handle the inverted shift operands instead of using the commuted
PatFrags.

Second, the point of the zext folding patterns don't apply to the
non-0ing high subtargets. They should be skipped instead of inserting
the extension. The zeroing high code would be emitted when necessary
anyway. This was also emitting unnecessary zexts in cases where the
high bits were undefined.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP2Instructions.tdllvm.src/lib/Target/AMDGPU/VOP2Instructions.td
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-ashr.s16.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-ashr.s16.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-lshr.s16.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-lshr.s16.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/inst-select-shl.s16.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/inst-select-shl.s16.mir
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/idot2.llllvm.src/test/CodeGen/AMDGPU/idot2.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/idot4s.llllvm.src/test/CodeGen/AMDGPU/idot4s.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/idot4u.llllvm.src/test/CodeGen/AMDGPU/idot4u.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/idot8s.llllvm.src/test/CodeGen/AMDGPU/idot8s.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/idot8u.llllvm.src/test/CodeGen/AMDGPU/idot8u.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/preserve-hi16.llllvm.src/test/CodeGen/AMDGPU/preserve-hi16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/sdwa-peephole.llllvm.src/test/CodeGen/AMDGPU/sdwa-peephole.ll
Revision 374091 by jsji:
Revert "[LoopVectorize][PowerPC] Estimate int and float register pressure separately in loop-vectorize"

Also Revert "[LoopVectorize] Fix non-debug builds after rL374017"

This reverts commit 9f41deccc0e648a006c9f38e11919f181b6c7e0a.
This reverts commit 18b6fe07bcf44294f200bd2b526cb737ed275c04.

The patch is breaking PowerPC internal build, checked with author, reverting
on behalf of him for now due to timezone.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.hllvm.src/include/llvm/Analysis/TargetTransformInfo.h
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.hllvm.src/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modified/llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.hllvm.src/include/llvm/CodeGen/BasicTTIImpl.h
The file was modified/llvm/trunk/lib/Analysis/TargetTransformInfo.cppllvm.src/lib/Analysis/TargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.hllvm.src/lib/Target/AArch64/AArch64TargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.hllvm.src/lib/Target/ARM/ARMTargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cppllvm.src/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.hllvm.src/lib/Target/PowerPC/PPCTargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.cppllvm.src/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.hllvm.src/lib/Target/SystemZ/SystemZTargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cppllvm.src/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.hllvm.src/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cppllvm.src/lib/Target/X86/X86TargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.hllvm.src/lib/Target/X86/X86TargetTransformInfo.h
The file was modified/llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.hllvm.src/lib/Target/XCore/XCoreTargetTransformInfo.h
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cppllvm.src/lib/Transforms/Scalar/LoopStrengthReduce.cpp
The file was modified/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cppllvm.src/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modified/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cppllvm.src/lib/Transforms/Vectorize/SLPVectorizer.cpp
The file was removed/llvm/trunk/test/Transforms/LoopVectorize/PowerPC/reg-usage.llllvm.src/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
The file was modified/llvm/trunk/test/Transforms/LoopVectorize/X86/reg-usage-debug.llllvm.src/test/Transforms/LoopVectorize/X86/reg-usage-debug.ll
The file was modified/llvm/trunk/test/Transforms/LoopVectorize/X86/reg-usage.llllvm.src/test/Transforms/LoopVectorize/X86/reg-usage.ll
Revision 374090 by spatel:
[SLP] add test with prefer-vector-width function attribute; NFC (PR43578)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/load-merge.llllvm.src/test/Transforms/SLPVectorizer/X86/load-merge.ll
Revision 374089 by Vedant Kumar:
[CodeExtractor] Factor out and reuse shrinkwrap analysis

Factor out CodeExtractor's analysis of allocas (for shrinkwrapping
purposes), and allow the analysis to be reused.

This resolves a quadratic compile-time bug observed when compiling
AMDGPUDisassembler.cpp.o.

Pre-patch (Release + LTO clang):

```
   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
  176.5278 ( 57.8%)   0.4915 ( 18.5%)  177.0192 ( 57.4%)  177.4112 ( 57.3%)  Hot Cold Splitting
```

Post-patch (ReleaseAsserts clang):

```
   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
  1.4051 (  3.3%)   0.0079 (  0.3%)   1.4129 (  3.2%)   1.4129 (  3.2%)  Hot Cold Splitting
```

Testing: check-llvm, and comparing the AMDGPUDisassembler.cpp.o binary
pre- vs. post-patch.

An alternate approach is to hide CodeExtractorAnalysisCache from clients
of CodeExtractor, and to recompute the analysis from scratch inside of
CodeExtractor::extractCodeRegion(). This eliminates some redundant work
in the shrinkwrapping legality check. However, some clients continue to
exhibit O(n^2) compile time behavior as computing the analysis is O(n).

rdar://55912966

Differential Revision: https://reviews.llvm.org/D68616
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/IPO/HotColdSplitting.hllvm.src/include/llvm/Transforms/IPO/HotColdSplitting.h
The file was modified/llvm/trunk/include/llvm/Transforms/Utils/CodeExtractor.hllvm.src/include/llvm/Transforms/Utils/CodeExtractor.h
The file was modified/llvm/trunk/lib/Transforms/IPO/BlockExtractor.cppllvm.src/lib/Transforms/IPO/BlockExtractor.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/HotColdSplitting.cppllvm.src/lib/Transforms/IPO/HotColdSplitting.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/LoopExtractor.cppllvm.src/lib/Transforms/IPO/LoopExtractor.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PartialInlining.cppllvm.src/lib/Transforms/IPO/PartialInlining.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/CodeExtractor.cppllvm.src/lib/Transforms/Utils/CodeExtractor.cpp
The file was modified/llvm/trunk/unittests/Transforms/Utils/CodeExtractorTest.cppllvm.src/unittests/Transforms/Utils/CodeExtractorTest.cpp
Revision 374088 by Vitaly Buka:
[sanitizer] Disable crypt*.cpp tests on Android
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/crypt_r.cppcompiler-rt.src/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
The file was modified/compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/crypt.cppcompiler-rt.src/test/sanitizer_common/TestCases/Posix/crypt.cpp
Revision 374087 by tstellar:
AMDGPU: Add offsets to MMO when lowering buffer intrinsics

Summary:
Without offsets on the MachineMemOperands (MMOs),
MachineInstr::mayAlias() will return true for all reads and writes to the
same resource descriptor.  This leads to O(N^2) complexity in the MachineScheduler
when analyzing dependencies of buffer loads and stores.  It also limits
the SILoadStoreOptimizer from merging more instructions.

This patch reduces the compile time of one pathological compute shader
from 12 seconds to 1 second.

Reviewers: arsenm, nhaehnle

Reviewed By: arsenm

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, jfb, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65097
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cppllvm.src/lib/Target/AMDGPU/SIISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.hllvm.src/lib/Target/AMDGPU/SIISelLowering.h
The file was added/llvm/trunk/test/CodeGen/AMDGPU/buffer-intrinsics-mmo-offsets.llllvm.src/test/CodeGen/AMDGPU/buffer-intrinsics-mmo-offsets.ll
Revision 374086 by uenoku:
[Attributor][Fix] Temporary fix for windows build bot failure

D65402 causes test failure related to attributor-max-iterations.
This commit removes attributor-max-iterations-verify for now.
I'll examine the factor and the flag should be reverted.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/callbacks.llllvm.src/test/Transforms/FunctionAttrs/callbacks.ll
Revision 374085 by rksimon:
CodeGenPrepare - silence static analyzer dyn_cast<> null dereference warnings. NFCI.

The static analyzer is warning about potential null dereferences, but in these cases we should be able to use cast<> directly and if not assert will fire for us.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/CodeGenPrepare.cppllvm.src/lib/CodeGen/CodeGenPrepare.cpp
Revision 374083 by rampitec:
[AMDGPU] Disable unused gfx10 dpp instructions

Inhibit generation of unused real dpp instructions on gfx10 just
like it is done on other subtargets. This does not change anything
because these are illegal anyway and not accepted, but it does
reduce the number of instruction definitions generated.

Differential Revision: https://reviews.llvm.org/D68607
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP1Instructions.tdllvm.src/lib/Target/AMDGPU/VOP1Instructions.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/VOP2Instructions.tdllvm.src/lib/Target/AMDGPU/VOP2Instructions.td
Revision 374079 by Louis Dionne:
[libc++] Make sure we link all system libraries into the benchmarks

It turns out that r374056 broke _some_ build bots again, specifically
the ones using sanitizers. Instead of trying to link the right system
libraries to the benchmarks bit-by-bit, let's just link exactly the
system libraries that libc++ itself needs.
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/CMakeLists.txtlibcxx.src/CMakeLists.txt
The file was modified/libcxx/trunk/benchmarks/CMakeLists.txtlibcxx.src/benchmarks/CMakeLists.txt
The file was modified/libcxx/trunk/src/CMakeLists.txtlibcxx.src/src/CMakeLists.txt
Revision 374078 by greened:
[UpdateCCTestChecks] Detect function mangled name on separate line

Sometimes functions with large comment blocks in front of them have their
declarations output on several lines by c-index-test.  Hence the one-line
function name/line/mangled pattern will not work to detect them.  Break the
pattern up into two patterns and keep state after seeing the name/line
information until we finally see the mangled name.

Differential Revision: https://reviews.llvm.org/D68272
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/update_cc_test_checks.pyllvm.src/utils/update_cc_test_checks.py
Revision 374075 by lebedevri:
[NFC][CVP] Add tests where we can replace sext with zext

If the sign bit of the value that is being sign-extended is not set,
i.e. the value is non-negative (s>= 0), then zero-extension will suffice,
and is better for analysis: https://rise4fun.com/Alive/a8PD
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/CorrelatedValuePropagation/sext.llllvm.src/test/Transforms/CorrelatedValuePropagation/sext.ll
Revision 374074 by deadalnix:
(Re)generate various tests. NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AArch64/arm64-rev.llllvm.src/test/CodeGen/AArch64/arm64-rev.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/lshr.v2i16.llllvm.src/test/CodeGen/AMDGPU/lshr.v2i16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/shl.v2i16.llllvm.src/test/CodeGen/AMDGPU/shl.v2i16.ll
The file was modified/llvm/trunk/test/CodeGen/ARM/rev.llllvm.src/test/CodeGen/ARM/rev.ll
The file was modified/llvm/trunk/test/CodeGen/Thumb/rev.llllvm.src/test/CodeGen/Thumb/rev.ll
Revision 374073 by aheejin:
[WebAssembly] Fix a bug in 'try' placement

Summary:
When searching for local expression tree created by stackified
registers, for 'block' placement, we start the search from the previous
instruction of a BB's terminator. But in 'try''s case, we should start
from the previous instruction of a call that can throw, or a EH_LABEL
that precedes the call, because the return values of the call's previous
instructions can be stackified and consumed by the throwing call.

For example,
```
  i32.call @foo
  call @bar         ; may throw
  br $label0
```
In this case, if we start the search from the previous instruction of
the terminator (`br` here), we end up stopping at `call @bar` and place
a 'try' between `i32.call @foo` and `call @bar`, because `call @bar`
does not have a return value so it is not a local expression tree of
`br`.

But in this case, unlike when placing 'block's, we should start the
search from `call @bar`, because the return value of `i32.call @foo` is
stackified and used by `call @bar`.

Reviewers: dschuff

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

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68619
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyCFGStackify.cppllvm.src/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/cfg-stackify-eh.llllvm.src/test/CodeGen/WebAssembly/cfg-stackify-eh.ll
Revision 374072 by abataev:
[OPENMP50]Prohibit multiple context selector sets in context selectors.

According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each
trait-set-selector-name can only be specified once. Added check to
implement this restriction.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.tdclang.src/include/clang/Basic/DiagnosticParseKinds.td
The file was modified/cfe/trunk/lib/Parse/ParseOpenMP.cppclang.src/lib/Parse/ParseOpenMP.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_ast_print.cclang.src/test/OpenMP/declare_variant_ast_print.c
The file was modified/cfe/trunk/test/OpenMP/declare_variant_ast_print.cppclang.src/test/OpenMP/declare_variant_ast_print.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_messages.cclang.src/test/OpenMP/declare_variant_messages.c
The file was modified/cfe/trunk/test/OpenMP/declare_variant_messages.cppclang.src/test/OpenMP/declare_variant_messages.cpp
Revision 374070 by David CARLIER:
[builtins] Unbreak build on FreeBSD armv7 after D60351

headers include reordering.

Reviewers: phosek, echristo

Reviewed-By: phosek

Differential Revsion: https://reviews.llvm.org/D68045
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/builtins/atomic.ccompiler-rt.src/lib/builtins/atomic.c
The file was modified/compiler-rt/trunk/lib/builtins/clear_cache.ccompiler-rt.src/lib/builtins/clear_cache.c
Revision 374068 by nikolaprica:
[DebugInfo][If-Converter] Update call site info during the optimization

During the If-Converter optimization pay attention when copying or
deleting call instructions in order to keep call site information in
valid state.

Reviewers: aprantl, vsk, efriedma

Reviewed By: vsk, efriedma

Differential Revision: https://reviews.llvm.org/D66955
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.hllvm.src/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/lib/CodeGen/BranchFolding.cppllvm.src/lib/CodeGen/BranchFolding.cpp
The file was modified/llvm/trunk/lib/CodeGen/IfConversion.cppllvm.src/lib/CodeGen/IfConversion.cpp
The file was modified/llvm/trunk/lib/CodeGen/InlineSpiller.cppllvm.src/lib/CodeGen/InlineSpiller.cpp
The file was modified/llvm/trunk/lib/CodeGen/LiveRangeEdit.cppllvm.src/lib/CodeGen/LiveRangeEdit.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cppllvm.src/lib/CodeGen/MachineFunction.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineOutliner.cppllvm.src/lib/CodeGen/MachineOutliner.cpp
The file was modified/llvm/trunk/lib/CodeGen/PeepholeOptimizer.cppllvm.src/lib/CodeGen/PeepholeOptimizer.cpp
The file was modified/llvm/trunk/lib/CodeGen/TargetInstrInfo.cppllvm.src/lib/CodeGen/TargetInstrInfo.cpp
The file was modified/llvm/trunk/lib/CodeGen/UnreachableBlockElim.cppllvm.src/lib/CodeGen/UnreachableBlockElim.cpp
The file was modified/llvm/trunk/lib/CodeGen/XRayInstrumentation.cppllvm.src/lib/CodeGen/XRayInstrumentation.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cppllvm.src/lib/Target/ARM/ARMExpandPseudoInsts.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ExpandPseudo.cppllvm.src/lib/Target/X86/X86ExpandPseudo.cpp
The file was modified/llvm/trunk/test/CodeGen/ARM/smml.llllvm.src/test/CodeGen/ARM/smml.ll
The file was added/llvm/trunk/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mirllvm.src/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir
Revision 374065 by gnsyncbot:
gn build: Merge r374062
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/TextAPI/BUILD.gnllvm.src/utils/gn/secondary/llvm/unittests/TextAPI/BUILD.gn
Revision 374064 by gnsyncbot:
gn build: Merge r374061
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/clang/lib/Driver/BUILD.gnllvm.src/utils/gn/secondary/clang/lib/Driver/BUILD.gn
Revision 374063 by uenoku:
[Attributor][MustExec] Deduce dereferenceable and nonnull attribute using MustBeExecutedContextExplorer

Summary:
In D65186 and related patches, MustBeExecutedContextExplorer is introduced. This enables us to traverse instructions guaranteed to execute from function entry. If we can know the argument is used as `dereferenceable` or `nonnull` in these instructions, we can mark `dereferenceable` or `nonnull` in the argument definition:

1. Memory instruction (similar to D64258)
Trace memory instruction pointer operand. Currently, only inbounds GEPs are traced.
```
define i64* @f(i64* %a) {
entry:
  %add.ptr = getelementptr inbounds i64, i64* %a, i64 1
; (because of inbounds GEP we can know that %a is at least dereferenceable(16))
  store i64 1, i64* %add.ptr, align 8
  ret i64* %add.ptr ; dereferenceable 8 (because above instruction stores into it)
}
```

2. Propagation from callsite (similar to D27855)
If `deref` or `nonnull` are known in call site parameter attributes we can also say that argument also that attribute.

```
declare void @use3(i8* %x, i8* %y, i8* %z);
declare void @use3nonnull(i8* nonnull %x, i8* nonnull %y, i8* nonnull %z);

define void @parent1(i8* %a, i8* %b, i8* %c) {
  call void @use3nonnull(i8* %b, i8* %c, i8* %a)
; Above instruction is always executed so we can say that@parent1(i8* nonnnull %a, i8* nonnull %b, i8* nonnull %c)
  call void @use3(i8* %c, i8* %a, i8* %b)
  ret void
}
```

Reviewers: jdoerfert, sstefan1, spatel, reames

Reviewed By: jdoerfert

Subscribers: xbolva00, hiraditya, jfb, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65402
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/IPO/Attributor.hllvm.src/include/llvm/Transforms/IPO/Attributor.h
The file was modified/llvm/trunk/lib/Transforms/IPO/Attributor.cppllvm.src/lib/Transforms/IPO/Attributor.cpp
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/align.llllvm.src/test/Transforms/FunctionAttrs/align.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/arg_nocapture.llllvm.src/test/Transforms/FunctionAttrs/arg_nocapture.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/arg_returned.llllvm.src/test/Transforms/FunctionAttrs/arg_returned.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/callbacks.llllvm.src/test/Transforms/FunctionAttrs/callbacks.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/dereferenceable.llllvm.src/test/Transforms/FunctionAttrs/dereferenceable.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/internal-noalias.llllvm.src/test/Transforms/FunctionAttrs/internal-noalias.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/liveness.llllvm.src/test/Transforms/FunctionAttrs/liveness.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.llllvm.src/test/Transforms/FunctionAttrs/noalias_returned.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/nocapture.llllvm.src/test/Transforms/FunctionAttrs/nocapture.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/nonnull.llllvm.src/test/Transforms/FunctionAttrs/nonnull.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/norecurse.llllvm.src/test/Transforms/FunctionAttrs/norecurse.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/nosync.llllvm.src/test/Transforms/FunctionAttrs/nosync.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/read_write_returned_arguments_scc.llllvm.src/test/Transforms/FunctionAttrs/read_write_returned_arguments_scc.ll
The file was modified/llvm/trunk/test/Transforms/FunctionAttrs/readattrs.llllvm.src/test/Transforms/FunctionAttrs/readattrs.ll
The file was modified/llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.llllvm.src/test/Transforms/InferFunctionAttrs/dereferenceable.ll
Revision 374062 by cishida:
Revert [TextAPI] Introduce TBDv4

This reverts r374058 (git commit 5d566c5a46aeaa1fa0e5c0b823c9d5f84036dc9a)
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/InterfaceFile.hllvm.src/include/llvm/TextAPI/MachO/InterfaceFile.h
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/Symbol.hllvm.src/include/llvm/TextAPI/MachO/Symbol.h
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/Target.hllvm.src/include/llvm/TextAPI/MachO/Target.h
The file was modified/llvm/trunk/lib/TextAPI/MachO/Target.cppllvm.src/lib/TextAPI/MachO/Target.cpp
The file was modified/llvm/trunk/lib/TextAPI/MachO/TextStub.cppllvm.src/lib/TextAPI/MachO/TextStub.cpp
The file was modified/llvm/trunk/lib/TextAPI/MachO/TextStubCommon.cppllvm.src/lib/TextAPI/MachO/TextStubCommon.cpp
The file was modified/llvm/trunk/unittests/TextAPI/CMakeLists.txtllvm.src/unittests/TextAPI/CMakeLists.txt
The file was removed/llvm/trunk/unittests/TextAPI/TextStubV4Tests.cppllvm.src/unittests/TextAPI/TextStubV4Tests.cpp
Revision 374061 by zer0:
[clang][ifs] Clang Interface Stubs ToolChain plumbing.

Second Landing Attempt:

This patch enables end to end support for generating ELF interface stubs
directly from clang. Now the following:

clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp

will product an ELF binary with visible symbols populated. Visibility attributes
and -fvisibility can be used to control what gets populated.

* Adding ToolChain support for clang Driver IFS Merge Phase
* Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain
* Adds support for the clang Driver to involve llvm-ifs on ifs files.
* Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file
  instead of the final object format (normally ELF)


Differential Revision: https://reviews.llvm.org/D63978
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Driver/Action.hclang.src/include/clang/Driver/Action.h
The file was modified/cfe/trunk/include/clang/Driver/Options.tdclang.src/include/clang/Driver/Options.td
The file was modified/cfe/trunk/include/clang/Driver/Phases.hclang.src/include/clang/Driver/Phases.h
The file was modified/cfe/trunk/include/clang/Driver/ToolChain.hclang.src/include/clang/Driver/ToolChain.h
The file was modified/cfe/trunk/include/clang/Driver/Types.defclang.src/include/clang/Driver/Types.def
The file was modified/cfe/trunk/lib/Driver/Action.cppclang.src/lib/Driver/Action.cpp
The file was modified/cfe/trunk/lib/Driver/CMakeLists.txtclang.src/lib/Driver/CMakeLists.txt
The file was modified/cfe/trunk/lib/Driver/Driver.cppclang.src/lib/Driver/Driver.cpp
The file was modified/cfe/trunk/lib/Driver/Phases.cppclang.src/lib/Driver/Phases.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChain.cppclang.src/lib/Driver/ToolChain.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/Clang.cppclang.src/lib/Driver/ToolChains/Clang.cpp
The file was added/cfe/trunk/lib/Driver/ToolChains/InterfaceStubs.cppclang.src/lib/Driver/ToolChains/InterfaceStubs.cpp
The file was added/cfe/trunk/lib/Driver/ToolChains/InterfaceStubs.hclang.src/lib/Driver/ToolChains/InterfaceStubs.h
The file was modified/cfe/trunk/lib/Driver/Types.cppclang.src/lib/Driver/Types.cpp
The file was modified/cfe/trunk/lib/Frontend/CompilerInvocation.cppclang.src/lib/Frontend/CompilerInvocation.cpp
The file was modified/cfe/trunk/test/InterfaceStubs/bad-format.cppclang.src/test/InterfaceStubs/bad-format.cpp
The file was modified/cfe/trunk/test/InterfaceStubs/class-template-specialization.cppclang.src/test/InterfaceStubs/class-template-specialization.cpp
The file was added/cfe/trunk/test/InterfaceStubs/conflict-type.ifsclang.src/test/InterfaceStubs/conflict-type.ifs
The file was added/cfe/trunk/test/InterfaceStubs/driver-test.cclang.src/test/InterfaceStubs/driver-test.c
The file was modified/cfe/trunk/test/InterfaceStubs/externstatic.cclang.src/test/InterfaceStubs/externstatic.c
The file was added/cfe/trunk/test/InterfaceStubs/func.ifsclang.src/test/InterfaceStubs/func.ifs
The file was modified/cfe/trunk/test/InterfaceStubs/function-template-specialization.cppclang.src/test/InterfaceStubs/function-template-specialization.cpp
The file was modified/cfe/trunk/test/InterfaceStubs/inline.cclang.src/test/InterfaceStubs/inline.c
The file was added/cfe/trunk/test/InterfaceStubs/merge-conflict-test.cclang.src/test/InterfaceStubs/merge-conflict-test.c
The file was added/cfe/trunk/test/InterfaceStubs/object-double.cclang.src/test/InterfaceStubs/object-double.c
The file was added/cfe/trunk/test/InterfaceStubs/object-float.cclang.src/test/InterfaceStubs/object-float.c
The file was added/cfe/trunk/test/InterfaceStubs/object.cclang.src/test/InterfaceStubs/object.c
The file was removed/cfe/trunk/test/InterfaceStubs/object.cppclang.src/test/InterfaceStubs/object.cpp
The file was added/cfe/trunk/test/InterfaceStubs/object.ifsclang.src/test/InterfaceStubs/object.ifs
The file was modified/cfe/trunk/test/InterfaceStubs/template-namespace-function.cppclang.src/test/InterfaceStubs/template-namespace-function.cpp
The file was modified/cfe/trunk/test/InterfaceStubs/weak.cppclang.src/test/InterfaceStubs/weak.cpp
The file was modified/cfe/trunk/test/lit.cfg.pyclang.src/test/lit.cfg.py
Revision 374060 by uenoku:
[Attributor] Add helper class to compose two structured deduction.

Summary: This patch introduces a generic way to compose two structured deductions.  This will be used for composing generic deduction with `MustBeExecutedExplorer` and other existing generic deduction.

Reviewers: jdoerfert, sstefan1

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D66645
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/Attributor.cppllvm.src/lib/Transforms/IPO/Attributor.cpp
Revision 374059 by gnsyncbot:
gn build: Merge r374058
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/unittests/TextAPI/BUILD.gnllvm.src/utils/gn/secondary/llvm/unittests/TextAPI/BUILD.gn
Revision 374058 by cishida:
[TextAPI] Introduce TBDv4

Summary:
This format introduces new features and platforms
The motivation for this format is to support more than 1 platform since previous versions only supported additional architectures and 1 platform,
for example ios + ios-simulator and macCatalyst.

Reviewers: ributzka, steven_wu

Reviewed By: ributzka

Subscribers: mgorny, hiraditya, mgrang, dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67529
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/InterfaceFile.hllvm.src/include/llvm/TextAPI/MachO/InterfaceFile.h
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/Symbol.hllvm.src/include/llvm/TextAPI/MachO/Symbol.h
The file was modified/llvm/trunk/include/llvm/TextAPI/MachO/Target.hllvm.src/include/llvm/TextAPI/MachO/Target.h
The file was modified/llvm/trunk/lib/TextAPI/MachO/Target.cppllvm.src/lib/TextAPI/MachO/Target.cpp
The file was modified/llvm/trunk/lib/TextAPI/MachO/TextStub.cppllvm.src/lib/TextAPI/MachO/TextStub.cpp
The file was modified/llvm/trunk/lib/TextAPI/MachO/TextStubCommon.cppllvm.src/lib/TextAPI/MachO/TextStubCommon.cpp
The file was modified/llvm/trunk/unittests/TextAPI/CMakeLists.txtllvm.src/unittests/TextAPI/CMakeLists.txt
The file was added/llvm/trunk/unittests/TextAPI/TextStubV4Tests.cppllvm.src/unittests/TextAPI/TextStubV4Tests.cpp
Revision 374057 by abataev:
[OPENMP50]Allow functions in declare variant directive to have different
C linkage.

After some discussion with OpenMP developers, it was decided that the
functions with the different C linkage can be used in declare variant
directive.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Sema/Sema.hclang.src/include/clang/Sema/Sema.h
The file was modified/cfe/trunk/lib/Sema/SemaDecl.cppclang.src/lib/Sema/SemaDecl.cpp
The file was modified/cfe/trunk/lib/Sema/SemaOpenMP.cppclang.src/lib/Sema/SemaOpenMP.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_ast_print.cppclang.src/test/OpenMP/declare_variant_ast_print.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_implementation_vendor_codegen.cppclang.src/test/OpenMP/declare_variant_implementation_vendor_codegen.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_variant_messages.cppclang.src/test/OpenMP/declare_variant_messages.cpp
Revision 374056 by Louis Dionne:
[libc++] TAKE 2: Make system libraries PRIVATE dependencies of libc++

We tried doing that previously (in r373487) and failed (reverted in
r373506) because the benchmarks needed to link against system libraries
and relied on libc++'s dependencies being propagated. Now that this has
been fixed (in r374053), this commit marks the system libraries as
PRIVATE dependencies of libc++.
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/src/CMakeLists.txtlibcxx.src/src/CMakeLists.txt
Revision 374055 by mbrkusanin:
[Mips] Emit proper ABI for _mcount calls

When -pg option is present than a call to _mcount is inserted into every
function. However since the proper ABI was not followed then the generated
gmon.out did not give proper results. By inserting needed instructions
before every _mcount we can fix this.

Differential Revision: https://reviews.llvm.org/D68390
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cppllvm.src/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
The file was modified/llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.hllvm.src/lib/Target/Mips/MipsSEISelDAGToDAG.h
The file was added/llvm/trunk/test/CodeGen/Mips/mcount.llllvm.src/test/CodeGen/Mips/mcount.ll
Revision 374054 by courbet:
[llvm-exegesis] Add options to SnippetGenerator.

Summary:
This adds a `-max-configs-per-opcode` option to limit the number of
configs per opcode.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68642
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandGuide/llvm-exegesis.rstllvm.src/docs/CommandGuide/llvm-exegesis.rst
The file was added/llvm/trunk/test/tools/llvm-exegesis/X86/max-configs.testllvm.src/test/tools/llvm-exegesis/X86/max-configs.test
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Latency.hllvm.src/tools/llvm-exegesis/lib/Latency.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/SnippetGenerator.cppllvm.src/tools/llvm-exegesis/lib/SnippetGenerator.cpp
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/SnippetGenerator.hllvm.src/tools/llvm-exegesis/lib/SnippetGenerator.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Target.cppllvm.src/tools/llvm-exegesis/lib/Target.cpp
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Target.hllvm.src/tools/llvm-exegesis/lib/Target.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Uops.hllvm.src/tools/llvm-exegesis/lib/Uops.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/X86/Target.cppllvm.src/tools/llvm-exegesis/lib/X86/Target.cpp
The file was modified/llvm/trunk/tools/llvm-exegesis/llvm-exegesis.cppllvm.src/tools/llvm-exegesis/llvm-exegesis.cpp
The file was modified/llvm/trunk/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cppllvm.src/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
Revision 374053 by Louis Dionne:
[libc++] Add missing link-time dependencies to the benchmarks

Since the benchmarks build with -nostdlib, they need to manually link
against some system libraries that are used by the benchmarks and the
GoogleBenchmark library itself.

Previously, we'd rely on the fact that these libraries were linked
through the PUBLIC dependencies of cxx_shared/cxx_static. However,
if we were to make these dependencies PRIVATE (as they should be
because they are implementation details of libc++), the benchmarks
would fail to link. This commit remediates that.
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/benchmarks/CMakeLists.txtlibcxx.src/benchmarks/CMakeLists.txt