FailedChanges

Summary

  1. AMDGPU: Fix test failing since r365512
  2. Revert "[HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfitable()" This reverts commit d95557306585404893d610784edb3e32f1bfce18.
  3. Add lit.local.cfg to llvm-objdump tests Add configuration file to llvm-objdump tests to treat files with .yaml extension as tests.
  4. [ObjC] Add a warning for implicit conversions of a constant non-boolean value to BOOL rdar://51954400 Differential revision: https://reviews.llvm.org/D63912
  5. Remove a comment that has been obsolete since r327679
  6. [unittest] Add bogus register info. Reviewers: dstenb Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64421
  7. Rename llvm/test/tools/llvm-pdbdump to llvm/test/tools/llvm-pdbutil llvm-pdbdump was renamed to llvm-pdbutil long ago. This updates the test to be where you'd expect them to be.
  8. Make pdbdump-objfilename test work again - The test had extension .yaml, which lit doesn't execute in this directory. Rename to .test to make it run, and move the yaml bits into a dedicated file, like with all other tests in this dir. - llvm-pdbdump got renamed to llvm-pdbutil long ago, update test. - -dbi-module-info got renamed in r305032, update test for this too.
  9. [TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8 Refine longjmp key management. For Linux, re-implement key retrieval in C (instead of assembly). Removal of `InitializeGuardPtr` and a final round of cleanups will be done in the next commit. Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D64092
  10. [AMDGPU] Created a sub-register class for the return address operand in the return instruction. Function return instruction lowering, currently uses the fixed register pair s[30:31] for holding the return address. It can be any SGPR pair other than the CSRs. Created an SGPR pair sub-register class exclusive of the CSRs, and used this regclass while lowering the return instruction. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D63924
  11. [RISCV] Fix ICE in isDesirableToCommuteWithShift Summary: There was an error being thrown from isDesirableToCommuteWithShift in some tests. This was tracked down to the method being called before legalisation, with an extended value type, not a machine value type. In the case I diagnosed, the error was only hit with an instruction sequence involving `i24`s in the add and shift. `i24` is not a Machine ValueType, it is instead an Extended ValueType which was causing the issue. I have added a test to cover this case, and fixed the error in the callback. Reviewers: asb, luismarques Reviewed By: asb Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64425
  12. [AArch64][GlobalISel] Optimize conditional branches followed by unconditional branches If we have an icmp->brcond->br sequence where the brcond just branches to the next block jumping over the br, while the br takes the false edge, then we can modify the conditional branch to jump to the br's target while inverting the condition of the incoming icmp. This means we can eliminate the br as an unconditional branch to the fallthrough block. Differential Revision: https://reviews.llvm.org/D64354
  13. Revert Revert Devirtualize destructor of final class. Revert r364359 and recommit r364100. r364100 was reverted as r364359 due to an internal test failure, but it was a false alarm.
  14. [mips] Show error in case of using FP64 mode on pre MIPS32R2 CPU
  15. [mips] Explicitly select `mips32r2` CPU for test cases require 64-bit FPU. NFC Support for 64-bit coprocessors on a 32-bit architecture was added in `MIPS32 R2`.
  16. [NFC] Fixed tests
  17. [DAGCombine] LoadedSlice - keep getOffsetFromBase() uint64_t offset. NFCI. Keep the uint64_t type from getOffsetFromBase() to stop truncation/extension overflow warnings in MSVC in alignment math.
  18. [BPF] Support for compile once and run everywhere Introduction ============ This patch added intial support for bpf program compile once and run everywhere (CO-RE). The main motivation is for bpf program which depends on kernel headers which may vary between different kernel versions. The initial discussion can be found at https://lwn.net/Articles/773198/. Currently, bpf program accesses kernel internal data structure through bpf_probe_read() helper. The idea is to capture the kernel data structure to be accessed through bpf_probe_read() and relocate them on different kernel versions. On each host, right before bpf program load, the bpfloader will look at the types of the native linux through vmlinux BTF, calculates proper access offset and patch the instruction. To accommodate this, three intrinsic functions preserve_{array,union,struct}_access_index are introduced which in clang will preserve the base pointer, struct/union/array access_index and struct/union debuginfo type information. Later, bpf IR pass can reconstruct the whole gep access chains without looking at gep itself. This patch did the following: . An IR pass is added to convert preserve_*_access_index to global variable who name encodes the getelementptr access pattern. The global variable has metadata attached to describe the corresponding struct/union debuginfo type. . An SimplifyPatchable MachineInstruction pass is added to remove unnecessary loads. . The BTF output pass is enhanced to generate relocation records located in .BTF.ext section. Typical CO-RE also needs support of global variables which can be assigned to different values to different hosts. For example, kernel version can be used to guard different versions of codes. This patch added the support for patchable externals as well. Example ======= The following is an example. struct pt_regs { long arg1; long arg2; }; struct sk_buff { int i; struct net_device *dev; }; #define _(x) (__builtin_preserve_access_index(x)) static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr) = (void *) 4; extern __attribute__((section(".BPF.patchable_externs"))) unsigned __kernel_version; int bpf_prog(struct pt_regs *ctx) { struct net_device *dev = 0; // ctx->arg* does not need bpf_probe_read if (__kernel_version >= 41608) bpf_probe_read(&dev, sizeof(dev), _(&((struct sk_buff *)ctx->arg1)->dev)); else bpf_probe_read(&dev, sizeof(dev), _(&((struct sk_buff *)ctx->arg2)->dev)); return dev != 0; } In the above, we want to translate the third argument of bpf_probe_read() as relocations. -bash-4.4$ clang -target bpf -O2 -g -S trace.c The compiler will generate two new subsections in .BTF.ext, OffsetReloc and ExternReloc. OffsetReloc is to record the structure member offset operations, and ExternalReloc is to record the external globals where only u8, u16, u32 and u64 are supported. BPFOffsetReloc Size struct SecLOffsetReloc for ELF section #1 A number of struct BPFOffsetReloc for ELF section #1 struct SecOffsetReloc for ELF section #2 A number of struct BPFOffsetReloc for ELF section #2 ... BPFExternReloc Size struct SecExternReloc for ELF section #1 A number of struct BPFExternReloc for ELF section #1 struct SecExternReloc for ELF section #2 A number of struct BPFExternReloc for ELF section #2 struct BPFOffsetReloc { uint32_t InsnOffset; ///< Byte offset in this section uint32_t TypeID; ///< TypeID for the relocation uint32_t OffsetNameOff; ///< The string to traverse types }; struct BPFExternReloc { uint32_t InsnOffset; ///< Byte offset in this section uint32_t ExternNameOff; ///< The string for external variable }; Note that only externs with attribute section ".BPF.patchable_externs" are considered for Extern Reloc which will be patched by bpf loader right before the load. For the above test case, two offset records and one extern record will be generated: OffsetReloc records: .long .Ltmp12 # Insn Offset .long 7 # TypeId .long 242 # Type Decode String .long .Ltmp18 # Insn Offset .long 7 # TypeId .long 242 # Type Decode String ExternReloc record: .long .Ltmp5 # Insn Offset .long 165 # External Variable In string table: .ascii "0:1" # string offset=242 .ascii "__kernel_version" # string offset=165 The default member offset can be calculated as the 2nd member offset (0 representing the 1st member) of struct "sk_buff". The asm code: .Ltmp5: .Ltmp6: r2 = 0 r3 = 41608 .Ltmp7: .Ltmp8: .loc 1 18 9 is_stmt 0 # t.c:18:9 .Ltmp9: if r3 > r2 goto LBB0_2 .Ltmp10: .Ltmp11: .loc 1 0 9 # t.c:0:9 .Ltmp12: r2 = 8 .Ltmp13: .loc 1 19 66 is_stmt 1 # t.c:19:66 .Ltmp14: .Ltmp15: r3 = *(u64 *)(r1 + 0) goto LBB0_3 .Ltmp16: .Ltmp17: LBB0_2: .loc 1 0 66 is_stmt 0 # t.c:0:66 .Ltmp18: r2 = 8 .loc 1 21 66 is_stmt 1 # t.c:21:66 .Ltmp19: r3 = *(u64 *)(r1 + 8) .Ltmp20: .Ltmp21: LBB0_3: .loc 1 0 66 is_stmt 0 # t.c:0:66 r3 += r2 r1 = r10 .Ltmp22: .Ltmp23: .Ltmp24: r1 += -8 r2 = 8 call 4 For instruction .Ltmp12 and .Ltmp18, "r2 = 8", the number 8 is the structure offset based on the current BTF. Loader needs to adjust it if it changes on the host. For instruction .Ltmp5, "r2 = 0", the external variable got a default value 0, loader needs to supply an appropriate value for the particular host. Compiling to generate object code and disassemble: 0000000000000000 bpf_prog: 0: b7 02 00 00 00 00 00 00 r2 = 0 1: 7b 2a f8 ff 00 00 00 00 *(u64 *)(r10 - 8) = r2 2: b7 02 00 00 00 00 00 00 r2 = 0 3: b7 03 00 00 88 a2 00 00 r3 = 41608 4: 2d 23 03 00 00 00 00 00 if r3 > r2 goto +3 <LBB0_2> 5: b7 02 00 00 08 00 00 00 r2 = 8 6: 79 13 00 00 00 00 00 00 r3 = *(u64 *)(r1 + 0) 7: 05 00 02 00 00 00 00 00 goto +2 <LBB0_3> 0000000000000040 LBB0_2: 8: b7 02 00 00 08 00 00 00 r2 = 8 9: 79 13 08 00 00 00 00 00 r3 = *(u64 *)(r1 + 8) 0000000000000050 LBB0_3: 10: 0f 23 00 00 00 00 00 00 r3 += r2 11: bf a1 00 00 00 00 00 00 r1 = r10 12: 07 01 00 00 f8 ff ff ff r1 += -8 13: b7 02 00 00 08 00 00 00 r2 = 8 14: 85 00 00 00 04 00 00 00 call 4 Instructions #2, #5 and #8 need relocation resoutions from the loader. Signed-off-by: Yonghong Song <yhs@fb.com> Differential Revision: https://reviews.llvm.org/D61524
  19. [ADT] Remove MSVC-only "no two-phase name lookup" typename path. Now that we've dropped VS2015 support (D64326) we can use the regular codepath as VS2017+ correctly handles it
  20. [NFC] Added tests for D64285
  21. [OpenCL][Sema] Improve address space support for blocks Summary: This patch ensures that the following code is compiled identically with -cl-std=CL2.0 and -fblocks -cl-std=c++. kernel void test(void) { void (^const block_A)(void) = ^{ return; }; } A new test is not added because cl20-device-side-enqueue.cl will cover this once blocks are further improved for C++ for OpenCL. The changes to Sema::PerformImplicitConversion are based on the parts of Sema::CheckAssignmentConstraints on block pointer conversions. Reviewers: rjmccall, Anastasia Subscribers: yaxunl, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D64083
  22. [OpenCL][Sema] Fix builtin rewriting This patch ensures built-in functions are rewritten using the proper parent declaration. Existing tests are modified to run in C++ mode to ensure the functionality works also with C++ for OpenCL while not increasing the testing runtime.
  23. Ignore trailing NullStmts in StmtExprs for GCC compatibility. Ignore trailing NullStmts in compound expressions when determining the result type and value. This is to match the GCC behavior which ignores semicolons at the end of compound expressions. Patch by Dominic Ferreira.
  24. [HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfitable() Differential Revision: https://reviews.llvm.org/D64197
Revision 365521 by arsenm:
AMDGPU: Fix test failing since r365512
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/spill-before-exec.mir (diff)llvm.src/test/CodeGen/AMDGPU/spill-before-exec.mir
Revision 365520 by jsji:
Revert "[HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfitable()"

This reverts commit d95557306585404893d610784edb3e32f1bfce18.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (diff)llvm.src/include/llvm/Analysis/TargetTransformInfo.h
The file was modified/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp (diff)llvm.src/lib/Analysis/TargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/CodeGen/HardwareLoops.cpp (diff)llvm.src/lib/CodeGen/HardwareLoops.cpp
Revision 365519 by steven_wu:
Add lit.local.cfg to llvm-objdump tests

Add configuration file to llvm-objdump tests to treat files with .yaml
extension as tests.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-objdump/X86/macho-build-version.yaml (diff)llvm.src/test/tools/llvm-objdump/X86/macho-build-version.yaml
The file was added/llvm/trunk/test/tools/llvm-objdump/lit.local.cfgllvm.src/test/tools/llvm-objdump/lit.local.cfg
Revision 365518 by epilk:
[ObjC] Add a warning for implicit conversions of a constant non-boolean value to BOOL

rdar://51954400

Differential revision: https://reviews.llvm.org/D63912
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticGroups.td (diff)clang.src/include/clang/Basic/DiagnosticGroups.td
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (diff)clang.src/include/clang/Basic/DiagnosticSemaKinds.td
The file was modified/cfe/trunk/lib/Sema/SemaChecking.cpp (diff)clang.src/lib/Sema/SemaChecking.cpp
The file was added/cfe/trunk/test/Sema/objc-bool-constant-conversion-fixit.mclang.src/test/Sema/objc-bool-constant-conversion-fixit.m
The file was added/cfe/trunk/test/Sema/objc-bool-constant-conversion.mclang.src/test/Sema/objc-bool-constant-conversion.m
Revision 365517 by nico:
Remove a comment that has been obsolete since r327679
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-pdbutil/injected-sources.test (diff)llvm.src/test/tools/llvm-pdbutil/injected-sources.test
Revision 365516 by hliao:
[unittest] Add bogus register info.

Reviewers: dstenb

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64421
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/CodeGen/MachineInstrTest.cpp (diff)llvm.src/unittests/CodeGen/MachineInstrTest.cpp
Revision 365515 by nico:
Rename llvm/test/tools/llvm-pdbdump to llvm/test/tools/llvm-pdbutil

llvm-pdbdump was renamed to llvm-pdbutil long ago. This updates the test
to be where you'd expect them to be.
Change TypePath in RepositoryPath in Workspace
The file was removed/llvm/trunk/test/tools/llvm-pdbdumpllvm.src/test/tools/llvm-pdbdump
The file was added/llvm/trunk/test/tools/llvm-pdbutilllvm.src/test/tools/llvm-pdbutil
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputsllvm.src/test/tools/llvm-pdbutil/Inputs
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/ClassLayoutTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/ClassLayoutTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/ClassLayoutTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/ClassLayoutTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/ComplexPaddingTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/ComplexPaddingTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/ComplexPaddingTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/ComplexPaddingTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/FPOTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/FPOTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/FilterTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/FilterTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/FilterTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/FilterTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/InjectedSource.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/InjectedSource.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/LoadAddressTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/LoadAddressTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/LoadAddressTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/LoadAddressTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/PrettyFuncDumperTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/PrettyFuncDumperTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/PrettyFuncDumperTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/PrettyFuncDumperTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/SimplePaddingTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/SimplePaddingTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/SimplePaddingTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/SimplePaddingTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/Stripped.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/Stripped.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/TypeQualifiersTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/TypeQualifiersTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/TypeQualifiersTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/TypeQualifiersTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/TypeServerTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/TypeServerTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/TypeServerTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/TypeServerTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/UsingNamespaceTest.cppllvm.src/test/tools/llvm-pdbutil/Inputs/UsingNamespaceTest.cpp
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/UsingNamespaceTest.pdbllvm.src/test/tools/llvm-pdbutil/Inputs/UsingNamespaceTest.pdb
The file was added/llvm/trunk/test/tools/llvm-pdbutil/Inputs/tpi.binllvm.src/test/tools/llvm-pdbutil/Inputs/tpi.bin
The file was added/llvm/trunk/test/tools/llvm-pdbutil/checksum-string.testllvm.src/test/tools/llvm-pdbutil/checksum-string.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/class-layout.testllvm.src/test/tools/llvm-pdbutil/class-layout.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/complex-padding-graphical.testllvm.src/test/tools/llvm-pdbutil/complex-padding-graphical.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/enum-layout.testllvm.src/test/tools/llvm-pdbutil/enum-layout.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/explain-dbi-stream.testllvm.src/test/tools/llvm-pdbutil/explain-dbi-stream.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/explain-pdb-stream.testllvm.src/test/tools/llvm-pdbutil/explain-pdb-stream.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/explain.testllvm.src/test/tools/llvm-pdbutil/explain.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/export-stream.testllvm.src/test/tools/llvm-pdbutil/export-stream.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/fpo-data.testllvm.src/test/tools/llvm-pdbutil/fpo-data.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/injected-sources.testllvm.src/test/tools/llvm-pdbutil/injected-sources.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/lit.local.cfgllvm.src/test/tools/llvm-pdbutil/lit.local.cfg
The file was added/llvm/trunk/test/tools/llvm-pdbutil/load-address.testllvm.src/test/tools/llvm-pdbutil/load-address.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/partial-type-stream.testllvm.src/test/tools/llvm-pdbutil/partial-type-stream.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/pretty-func-dumper.testllvm.src/test/tools/llvm-pdbutil/pretty-func-dumper.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/regex-filter.testllvm.src/test/tools/llvm-pdbutil/regex-filter.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/simple-padding-graphical.testllvm.src/test/tools/llvm-pdbutil/simple-padding-graphical.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/stripped.testllvm.src/test/tools/llvm-pdbutil/stripped.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/symbol-filters.testllvm.src/test/tools/llvm-pdbutil/symbol-filters.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/type-qualifiers.testllvm.src/test/tools/llvm-pdbutil/type-qualifiers.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/type-server-no-dbi.testllvm.src/test/tools/llvm-pdbutil/type-server-no-dbi.test
The file was added/llvm/trunk/test/tools/llvm-pdbutil/usingnamespace.testllvm.src/test/tools/llvm-pdbutil/usingnamespace.test
Revision 365514 by nico:
Make pdbdump-objfilename test work again

- The test had extension .yaml, which lit doesn't execute in this
  directory. Rename to .test to make it run, and move the yaml bits
  into a dedicated file, like with all other tests in this dir.

- llvm-pdbdump got renamed to llvm-pdbutil long ago, update test.

- -dbi-module-info got renamed in r305032, update test for this too.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/DebugInfo/PDB/Inputs/objfilename.yamlllvm.src/test/DebugInfo/PDB/Inputs/objfilename.yaml
The file was added/llvm/trunk/test/DebugInfo/PDB/pdbdump-objfilename.testllvm.src/test/DebugInfo/PDB/pdbdump-objfilename.test
The file was removed/llvm/trunk/test/DebugInfo/PDB/pdbdump-objfilename.yamlllvm.src/test/DebugInfo/PDB/pdbdump-objfilename.yaml
Revision 365513 by yln:
[TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.8

Refine longjmp key management.  For Linux, re-implement key retrieval in
C (instead of assembly).  Removal of `InitializeGuardPtr` and a final
round of cleanups will be done in the next commit.

Reviewed By: dvyukov

Differential Revision: https://reviews.llvm.org/D64092
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/tsan/rtl/tsan_platform_linux.cc (diff)compiler-rt.src/lib/tsan/rtl/tsan_platform_linux.cc
The file was modified/compiler-rt/trunk/lib/tsan/rtl/tsan_platform_mac.cc (diff)compiler-rt.src/lib/tsan/rtl/tsan_platform_mac.cc
Revision 365512 by cdevadas:
[AMDGPU] Created a sub-register class for the return address operand in the return instruction.

Function return instruction lowering, currently uses the fixed register pair s[30:31] for holding
the return address. It can be any SGPR pair other than the CSRs. Created an SGPR pair sub-register class
exclusive of the CSRs, and used this regclass while lowering the return instruction.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D63924
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (diff)llvm.src/lib/Target/AMDGPU/SIISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.td (diff)llvm.src/lib/Target/AMDGPU/SIRegisterInfo.td
The file was modified/llvm/trunk/lib/Target/AMDGPU/SOPInstructions.td (diff)llvm.src/lib/Target/AMDGPU/SOPInstructions.td
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/call-graph-register-usage.ll (diff)llvm.src/test/CodeGen/AMDGPU/call-graph-register-usage.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/call-preserved-registers.ll (diff)llvm.src/test/CodeGen/AMDGPU/call-preserved-registers.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/callee-frame-setup.ll (diff)llvm.src/test/CodeGen/AMDGPU/callee-frame-setup.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/callee-special-input-sgprs.ll (diff)llvm.src/test/CodeGen/AMDGPU/callee-special-input-sgprs.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/chain-hi-to-lo.ll (diff)llvm.src/test/CodeGen/AMDGPU/chain-hi-to-lo.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/cross-block-use-is-not-abi-copy.ll (diff)llvm.src/test/CodeGen/AMDGPU/cross-block-use-is-not-abi-copy.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/llvm.log.f16.ll (diff)llvm.src/test/CodeGen/AMDGPU/llvm.log.f16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/llvm.log10.f16.ll (diff)llvm.src/test/CodeGen/AMDGPU/llvm.log10.f16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/load-lo16.ll (diff)llvm.src/test/CodeGen/AMDGPU/load-lo16.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/nested-calls.ll (diff)llvm.src/test/CodeGen/AMDGPU/nested-calls.ll
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/wave32.ll (diff)llvm.src/test/CodeGen/AMDGPU/wave32.ll
Revision 365511 by lenary:
[RISCV] Fix ICE in isDesirableToCommuteWithShift

Summary:
There was an error being thrown from isDesirableToCommuteWithShift in
some tests. This was tracked down to the method being called before
legalisation, with an extended value type, not a machine value type.

In the case I diagnosed, the error was only hit with an instruction sequence
involving `i24`s in the add and shift. `i24` is not a Machine ValueType, it is
instead an Extended ValueType which was causing the issue.

I have added a test to cover this case, and fixed the error in the callback.

Reviewers: asb, luismarques

Reviewed By: asb

Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64425
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVISelLowering.cpp (diff)llvm.src/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/RISCV/add-before-shl.ll (diff)llvm.src/test/CodeGen/RISCV/add-before-shl.ll
Revision 365510 by aemerson:
[AArch64][GlobalISel] Optimize conditional branches followed by unconditional branches

If we have an icmp->brcond->br sequence where the brcond just branches to the
next block jumping over the br, while the br takes the false edge, then we can
modify the conditional branch to jump to the br's target while inverting the
condition of the incoming icmp. This means we can eliminate the br as an
unconditional branch to the fallthrough block.

Differential Revision: https://reviews.llvm.org/D64354
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/CombinerHelper.h (diff)llvm.src/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineOperand.h (diff)llvm.src/include/llvm/CodeGen/MachineOperand.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/CombinerHelper.cpp (diff)llvm.src/lib/CodeGen/GlobalISel/CombinerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp (diff)llvm.src/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll (diff)llvm.src/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/prelegalizercombiner-br.mirllvm.src/test/CodeGen/AArch64/GlobalISel/prelegalizercombiner-br.mir
The file was modified/llvm/trunk/test/CodeGen/AArch64/speculation-hardening.ll (diff)llvm.src/test/CodeGen/AArch64/speculation-hardening.ll
Revision 365509 by yamauchi:
Revert Revert Devirtualize destructor of final class.

Revert r364359 and recommit r364100.

r364100 was reverted as r364359 due to an internal test failure, but it was a
false alarm.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGExprCXX.cpp (diff)clang.src/lib/CodeGen/CGExprCXX.cpp
The file was added/cfe/trunk/test/CodeGenCXX/devirtualize-dtor-final.cppclang.src/test/CodeGenCXX/devirtualize-dtor-final.cpp
Revision 365508 by atanasyan:
[mips] Show error in case of using FP64 mode on pre MIPS32R2 CPU
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp (diff)llvm.src/lib/Target/Mips/MipsSubtarget.cpp
The file was modified/llvm/trunk/test/CodeGen/Mips/fp64a.ll (diff)llvm.src/test/CodeGen/Mips/fp64a.ll
Revision 365507 by atanasyan:
[mips] Explicitly select `mips32r2` CPU for test cases require 64-bit FPU. NFC

Support for 64-bit coprocessors on a 32-bit architecture
was added in `MIPS32 R2`.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/Mips/abiflags32.ll (diff)llvm.src/test/CodeGen/Mips/abiflags32.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/cconv/callee-saved-fpxx1.ll (diff)llvm.src/test/CodeGen/Mips/cconv/callee-saved-fpxx1.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/cconv/return-hard-float.ll (diff)llvm.src/test/CodeGen/Mips/cconv/return-hard-float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/cfi_offset.ll (diff)llvm.src/test/CodeGen/Mips/cfi_offset.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/fp-contract.ll (diff)llvm.src/test/CodeGen/Mips/fp-contract.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/fp64a.ll (diff)llvm.src/test/CodeGen/Mips/fp64a.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2r.ll (diff)llvm.src/test/CodeGen/Mips/msa/2r.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2r_vector_scalar.ll (diff)llvm.src/test/CodeGen/Mips/msa/2r_vector_scalar.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf_exup.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf_exup.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf_float_int.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf_float_int.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf_fq.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf_fq.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf_int_float.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf_int_float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/2rf_tq.ll (diff)llvm.src/test/CodeGen/Mips/msa/2rf_tq.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-a.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-a.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-b.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-b.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-c.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-c.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-d.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-d.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-i.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-i.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-m.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-m.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-p.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-p.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-s.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-s.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r-v.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r-v.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r_4r.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r_4r.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3r_4r_widen.ll (diff)llvm.src/test/CodeGen/Mips/msa/3r_4r_widen.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_4rf.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_4rf.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_4rf_q.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_4rf_q.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_exdo.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_exdo.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_float_int.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_float_int.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_int_float.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_int_float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/3rf_q.ll (diff)llvm.src/test/CodeGen/Mips/msa/3rf_q.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/arithmetic.ll (diff)llvm.src/test/CodeGen/Mips/msa/arithmetic.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/arithmetic_float.ll (diff)llvm.src/test/CodeGen/Mips/msa/arithmetic_float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/basic_operations_float.ll (diff)llvm.src/test/CodeGen/Mips/msa/basic_operations_float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/bit.ll (diff)llvm.src/test/CodeGen/Mips/msa/bit.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/bitcast.ll (diff)llvm.src/test/CodeGen/Mips/msa/bitcast.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/bitwise.ll (diff)llvm.src/test/CodeGen/Mips/msa/bitwise.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/bmzi_bmnzi.ll (diff)llvm.src/test/CodeGen/Mips/msa/bmzi_bmnzi.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/compare.ll (diff)llvm.src/test/CodeGen/Mips/msa/compare.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/compare_float.ll (diff)llvm.src/test/CodeGen/Mips/msa/compare_float.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/elm_copy.ll (diff)llvm.src/test/CodeGen/Mips/msa/elm_copy.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/elm_cxcmsa.ll (diff)llvm.src/test/CodeGen/Mips/msa/elm_cxcmsa.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/elm_insv.ll (diff)llvm.src/test/CodeGen/Mips/msa/elm_insv.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/elm_move.ll (diff)llvm.src/test/CodeGen/Mips/msa/elm_move.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/elm_shift_slide.ll (diff)llvm.src/test/CodeGen/Mips/msa/elm_shift_slide.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/endian.ll (diff)llvm.src/test/CodeGen/Mips/msa/endian.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/frameindex.ll (diff)llvm.src/test/CodeGen/Mips/msa/frameindex.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i10.ll (diff)llvm.src/test/CodeGen/Mips/msa/i10.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5-a.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5-a.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5-b.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5-b.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5-c.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5-c.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5-m.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5-m.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5-s.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5-s.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i5_ld_st.ll (diff)llvm.src/test/CodeGen/Mips/msa/i5_ld_st.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/i8.ll (diff)llvm.src/test/CodeGen/Mips/msa/i8.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/immediates-bad.ll (diff)llvm.src/test/CodeGen/Mips/msa/immediates-bad.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/immediates.ll (diff)llvm.src/test/CodeGen/Mips/msa/immediates.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/inline-asm.ll (diff)llvm.src/test/CodeGen/Mips/msa/inline-asm.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s1704963983.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s1704963983.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s1935737938.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s1935737938.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s2090927243-simplified.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s2090927243-simplified.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s2501752154-simplified.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s2501752154-simplified.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s2704903805.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s2704903805.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s3861334421.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s3861334421.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s3926023935.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s3926023935.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s3997499501.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s3997499501.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s449609655-simplified.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s449609655-simplified.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s525530439.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s525530439.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-s997348632.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-s997348632.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/llvm-stress-sz1-s742806235.ll (diff)llvm.src/test/CodeGen/Mips/msa/llvm-stress-sz1-s742806235.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/shift-dagcombine.ll (diff)llvm.src/test/CodeGen/Mips/msa/shift-dagcombine.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/shift_constant_pool.ll (diff)llvm.src/test/CodeGen/Mips/msa/shift_constant_pool.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/shift_no_and.ll (diff)llvm.src/test/CodeGen/Mips/msa/shift_no_and.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/shuffle.ll (diff)llvm.src/test/CodeGen/Mips/msa/shuffle.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/special.ll (diff)llvm.src/test/CodeGen/Mips/msa/special.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/spill.ll (diff)llvm.src/test/CodeGen/Mips/msa/spill.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/vec.ll (diff)llvm.src/test/CodeGen/Mips/msa/vec.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/msa/vecs10.ll (diff)llvm.src/test/CodeGen/Mips/msa/vecs10.ll
The file was modified/llvm/trunk/test/CodeGen/Mips/stack-alignment.ll (diff)llvm.src/test/CodeGen/Mips/stack-alignment.ll
Revision 365506 by xbolva00:
[NFC] Fixed tests
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstSimplify/ashr-lshr.ll (diff)llvm.src/test/Transforms/InstSimplify/ashr-lshr.ll
Revision 365504 by rksimon:
[DAGCombine] LoadedSlice - keep getOffsetFromBase() uint64_t offset. NFCI.

Keep the uint64_t type from getOffsetFromBase() to stop truncation/extension overflow warnings in MSVC in alignment math.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)llvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 365503 by yhs:
[BPF] Support for compile once and run everywhere

Introduction
============

This patch added intial support for bpf program compile once
and run everywhere (CO-RE).

The main motivation is for bpf program which depends on
kernel headers which may vary between different kernel versions.
The initial discussion can be found at https://lwn.net/Articles/773198/.

Currently, bpf program accesses kernel internal data structure
through bpf_probe_read() helper. The idea is to capture the
kernel data structure to be accessed through bpf_probe_read()
and relocate them on different kernel versions.

On each host, right before bpf program load, the bpfloader
will look at the types of the native linux through vmlinux BTF,
calculates proper access offset and patch the instruction.

To accommodate this, three intrinsic functions
   preserve_{array,union,struct}_access_index
are introduced which in clang will preserve the base pointer,
struct/union/array access_index and struct/union debuginfo type
information. Later, bpf IR pass can reconstruct the whole gep
access chains without looking at gep itself.

This patch did the following:
  . An IR pass is added to convert preserve_*_access_index to
    global variable who name encodes the getelementptr
    access pattern. The global variable has metadata
    attached to describe the corresponding struct/union
    debuginfo type.
  . An SimplifyPatchable MachineInstruction pass is added
    to remove unnecessary loads.
  . The BTF output pass is enhanced to generate relocation
    records located in .BTF.ext section.

Typical CO-RE also needs support of global variables which can
be assigned to different values to different hosts. For example,
kernel version can be used to guard different versions of codes.
This patch added the support for patchable externals as well.

Example
=======

The following is an example.

  struct pt_regs {
    long arg1;
    long arg2;
  };
  struct sk_buff {
    int i;
    struct net_device *dev;
  };

  #define _(x) (__builtin_preserve_access_index(x))
  static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr) =
          (void *) 4;
  extern __attribute__((section(".BPF.patchable_externs"))) unsigned __kernel_version;
  int bpf_prog(struct pt_regs *ctx) {
    struct net_device *dev = 0;

    // ctx->arg* does not need bpf_probe_read
    if (__kernel_version >= 41608)
      bpf_probe_read(&dev, sizeof(dev), _(&((struct sk_buff *)ctx->arg1)->dev));
    else
      bpf_probe_read(&dev, sizeof(dev), _(&((struct sk_buff *)ctx->arg2)->dev));
    return dev != 0;
  }

In the above, we want to translate the third argument of
bpf_probe_read() as relocations.

  -bash-4.4$ clang -target bpf -O2 -g -S trace.c

The compiler will generate two new subsections in .BTF.ext,
OffsetReloc and ExternReloc.
OffsetReloc is to record the structure member offset operations,
and ExternalReloc is to record the external globals where
only u8, u16, u32 and u64 are supported.

   BPFOffsetReloc Size
   struct SecLOffsetReloc for ELF section #1
   A number of struct BPFOffsetReloc for ELF section #1
   struct SecOffsetReloc for ELF section #2
   A number of struct BPFOffsetReloc for ELF section #2
   ...
   BPFExternReloc Size
   struct SecExternReloc for ELF section #1
   A number of struct BPFExternReloc for ELF section #1
   struct SecExternReloc for ELF section #2
   A number of struct BPFExternReloc for ELF section #2

  struct BPFOffsetReloc {
    uint32_t InsnOffset;    ///< Byte offset in this section
    uint32_t TypeID;        ///< TypeID for the relocation
    uint32_t OffsetNameOff; ///< The string to traverse types
  };

  struct BPFExternReloc {
    uint32_t InsnOffset;    ///< Byte offset in this section
    uint32_t ExternNameOff; ///< The string for external variable
  };

Note that only externs with attribute section ".BPF.patchable_externs"
are considered for Extern Reloc which will be patched by bpf loader
right before the load.

For the above test case, two offset records and one extern record
will be generated:
  OffsetReloc records:
        .long   .Ltmp12                 # Insn Offset
        .long   7                       # TypeId
        .long   242                     # Type Decode String
        .long   .Ltmp18                 # Insn Offset
        .long   7                       # TypeId
        .long   242                     # Type Decode String

  ExternReloc record:
        .long   .Ltmp5                  # Insn Offset
        .long   165                     # External Variable

  In string table:
        .ascii  "0:1"                   # string offset=242
        .ascii  "__kernel_version"      # string offset=165

The default member offset can be calculated as
    the 2nd member offset (0 representing the 1st member) of struct "sk_buff".

The asm code:
    .Ltmp5:
    .Ltmp6:
            r2 = 0
            r3 = 41608
    .Ltmp7:
    .Ltmp8:
            .loc    1 18 9 is_stmt 0        # t.c:18:9
    .Ltmp9:
            if r3 > r2 goto LBB0_2
    .Ltmp10:
    .Ltmp11:
            .loc    1 0 9                   # t.c:0:9
    .Ltmp12:
            r2 = 8
    .Ltmp13:
            .loc    1 19 66 is_stmt 1       # t.c:19:66
    .Ltmp14:
    .Ltmp15:
            r3 = *(u64 *)(r1 + 0)
            goto LBB0_3
    .Ltmp16:
    .Ltmp17:
    LBB0_2:
            .loc    1 0 66 is_stmt 0        # t.c:0:66
    .Ltmp18:
            r2 = 8
            .loc    1 21 66 is_stmt 1       # t.c:21:66
    .Ltmp19:
            r3 = *(u64 *)(r1 + 8)
    .Ltmp20:
    .Ltmp21:
    LBB0_3:
            .loc    1 0 66 is_stmt 0        # t.c:0:66
            r3 += r2
            r1 = r10
    .Ltmp22:
    .Ltmp23:
    .Ltmp24:
            r1 += -8
            r2 = 8
            call 4

For instruction .Ltmp12 and .Ltmp18, "r2 = 8", the number
8 is the structure offset based on the current BTF.
Loader needs to adjust it if it changes on the host.

For instruction .Ltmp5, "r2 = 0", the external variable
got a default value 0, loader needs to supply an appropriate
value for the particular host.

Compiling to generate object code and disassemble:
   0000000000000000 bpf_prog:
           0:       b7 02 00 00 00 00 00 00         r2 = 0
           1:       7b 2a f8 ff 00 00 00 00         *(u64 *)(r10 - 8) = r2
           2:       b7 02 00 00 00 00 00 00         r2 = 0
           3:       b7 03 00 00 88 a2 00 00         r3 = 41608
           4:       2d 23 03 00 00 00 00 00         if r3 > r2 goto +3 <LBB0_2>
           5:       b7 02 00 00 08 00 00 00         r2 = 8
           6:       79 13 00 00 00 00 00 00         r3 = *(u64 *)(r1 + 0)
           7:       05 00 02 00 00 00 00 00         goto +2 <LBB0_3>

    0000000000000040 LBB0_2:
           8:       b7 02 00 00 08 00 00 00         r2 = 8
           9:       79 13 08 00 00 00 00 00         r3 = *(u64 *)(r1 + 8)

    0000000000000050 LBB0_3:
          10:       0f 23 00 00 00 00 00 00         r3 += r2
          11:       bf a1 00 00 00 00 00 00         r1 = r10
          12:       07 01 00 00 f8 ff ff ff         r1 += -8
          13:       b7 02 00 00 08 00 00 00         r2 = 8
          14:       85 00 00 00 04 00 00 00         call 4

Instructions #2, #5 and #8 need relocation resoutions from the loader.

Signed-off-by: Yonghong Song <yhs@fb.com>

Differential Revision: https://reviews.llvm.org/D61524
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/BPF/BPF.h (diff)llvm.src/lib/Target/BPF/BPF.h
The file was added/llvm/trunk/lib/Target/BPF/BPFAbstrctMemberAccess.cppllvm.src/lib/Target/BPF/BPFAbstrctMemberAccess.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BPFAsmPrinter.cpp (diff)llvm.src/lib/Target/BPF/BPFAsmPrinter.cpp
The file was added/llvm/trunk/lib/Target/BPF/BPFCORE.hllvm.src/lib/Target/BPF/BPFCORE.h
The file was added/llvm/trunk/lib/Target/BPF/BPFMISimplifyPatchable.cppllvm.src/lib/Target/BPF/BPFMISimplifyPatchable.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BPFTargetMachine.cpp (diff)llvm.src/lib/Target/BPF/BPFTargetMachine.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BTF.h (diff)llvm.src/lib/Target/BPF/BTF.h
The file was modified/llvm/trunk/lib/Target/BPF/BTFDebug.cpp (diff)llvm.src/lib/Target/BPF/BTFDebug.cpp
The file was modified/llvm/trunk/lib/Target/BPF/BTFDebug.h (diff)llvm.src/lib/Target/BPF/BTFDebug.h
The file was modified/llvm/trunk/lib/Target/BPF/CMakeLists.txt (diff)llvm.src/lib/Target/BPF/CMakeLists.txt
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/binary-format.ll (diff)llvm.src/test/CodeGen/BPF/BTF/binary-format.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/extern-global-var.ll (diff)llvm.src/test/CodeGen/BPF/BTF/extern-global-var.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/filename.ll (diff)llvm.src/test/CodeGen/BPF/BTF/filename.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-func-ptr.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-func-ptr.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-non-void.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-non-void.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-source.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-source.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-typedef.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-typedef.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-unused-arg.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-unused-arg.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/func-void.ll (diff)llvm.src/test/CodeGen/BPF/BTF/func-void.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/local-var.ll (diff)llvm.src/test/CodeGen/BPF/BTF/local-var.ll
The file was added/llvm/trunk/test/CodeGen/BPF/BTF/map-def.llllvm.src/test/CodeGen/BPF/BTF/map-def.ll
The file was added/llvm/trunk/test/CodeGen/BPF/BTF/ptr-prune-type.llllvm.src/test/CodeGen/BPF/BTF/ptr-prune-type.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-derived-type.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-derived-type.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-inited-sec.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-inited-sec.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-inited.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-inited.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-readonly-sec.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-readonly-sec.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-readonly.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-readonly.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-sec.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-sec.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var-zerolen-array.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var-zerolen-array.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/BTF/static-var.ll (diff)llvm.src/test/CodeGen/BPF/BTF/static-var.ll
The file was added/llvm/trunk/test/CodeGen/BPF/COREllvm.src/test/CodeGen/BPF/CORE
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-basic.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-basic.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-multilevel.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-multilevel.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-struct-anonymous.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-struct-anonymous.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-struct-array.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-struct-array.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-union.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-union.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/patchable-extern-char.llllvm.src/test/CodeGen/BPF/CORE/patchable-extern-char.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/patchable-extern-uint.llllvm.src/test/CodeGen/BPF/CORE/patchable-extern-uint.ll
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/patchable-extern-ulonglong.llllvm.src/test/CodeGen/BPF/CORE/patchable-extern-ulonglong.ll
The file was modified/llvm/trunk/test/CodeGen/BPF/reloc-btf-2.ll (diff)llvm.src/test/CodeGen/BPF/reloc-btf-2.ll
Revision 365502 by rksimon:
[ADT] Remove MSVC-only "no two-phase name lookup" typename path.

Now that we've dropped VS2015 support (D64326) we can use the regular codepath as VS2017+ correctly handles it
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/ADT/DenseMapTest.cpp (diff)llvm.src/unittests/ADT/DenseMapTest.cpp
Revision 365501 by xbolva00:
[NFC] Added tests for D64285
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/InstSimplify/ashr-lshr.llllvm.src/test/Transforms/InstSimplify/ashr-lshr.ll
Revision 365500 by mantognini:
[OpenCL][Sema] Improve address space support for blocks

Summary:
This patch ensures that the following code is compiled identically with
-cl-std=CL2.0 and -fblocks -cl-std=c++.

    kernel void test(void) {
      void (^const block_A)(void) = ^{
        return;
      };
    }

A new test is not added because cl20-device-side-enqueue.cl will cover
this once blocks are further improved for C++ for OpenCL.

The changes to Sema::PerformImplicitConversion are based on
the parts of Sema::CheckAssignmentConstraints on block pointer
conversions.

Reviewers: rjmccall, Anastasia

Subscribers: yaxunl, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D64083
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaExprCXX.cpp (diff)clang.src/lib/Sema/SemaExprCXX.cpp
Revision 365499 by mantognini:
[OpenCL][Sema] Fix builtin rewriting

This patch ensures built-in functions are rewritten using the proper
parent declaration.

Existing tests are modified to run in C++ mode to ensure the
functionality works also with C++ for OpenCL while not increasing the
testing runtime.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/Builtins.def (diff)clang.src/include/clang/Basic/Builtins.def
The file was modified/cfe/trunk/lib/Sema/SemaExpr.cpp (diff)clang.src/lib/Sema/SemaExpr.cpp
The file was modified/cfe/trunk/test/CodeGenOpenCL/builtins.cl (diff)clang.src/test/CodeGenOpenCL/builtins.cl
The file was modified/cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl (diff)clang.src/test/CodeGenOpenCL/pipe_builtin.cl
The file was modified/cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl (diff)clang.src/test/CodeGenOpenCL/to_addr_builtin.cl
Revision 365498 by aaronballman:
Ignore trailing NullStmts in StmtExprs for GCC compatibility.

Ignore trailing NullStmts in compound expressions when determining the result type and value. This is to match the GCC behavior which ignores semicolons at the end of compound expressions.

Patch by Dominic Ferreira.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/AST/Stmt.h (diff)clang.src/include/clang/AST/Stmt.h
The file was modified/cfe/trunk/lib/CodeGen/CGStmt.cpp (diff)clang.src/lib/CodeGen/CGStmt.cpp
The file was modified/cfe/trunk/lib/Parse/ParseStmt.cpp (diff)clang.src/lib/Parse/ParseStmt.cpp
The file was modified/cfe/trunk/lib/Sema/SemaExpr.cpp (diff)clang.src/lib/Sema/SemaExpr.cpp
The file was modified/cfe/trunk/lib/Sema/TreeTransform.h (diff)clang.src/lib/Sema/TreeTransform.h
The file was modified/cfe/trunk/test/AST/ast-dump-stmt.c (diff)clang.src/test/AST/ast-dump-stmt.c
The file was modified/cfe/trunk/test/CodeGen/exprs.c (diff)clang.src/test/CodeGen/exprs.c
The file was modified/cfe/trunk/test/Sema/statements.c (diff)clang.src/test/Sema/statements.c
The file was modified/cfe/trunk/test/SemaCXX/statements.cpp (diff)clang.src/test/SemaCXX/statements.cpp
Revision 365497 by shchenz:
[HardwareLoops] NFC - move hardware loop checking code to isHardwareLoopProfitable()

Differential Revision: https://reviews.llvm.org/D64197
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (diff)llvm.src/include/llvm/Analysis/TargetTransformInfo.h
The file was modified/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp (diff)llvm.src/lib/Analysis/TargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/CodeGen/HardwareLoops.cpp (diff)llvm.src/lib/CodeGen/HardwareLoops.cpp