FailedChanges

Summary

  1. [MachinePipeliner] Fix Phi refers to Phi in same stage in 1st epilogue Summary: This is exposed by functional testing on PowerPC. In some pipelined loops, Phi refer to phi did not get value defined by the Phi, hence getting wrong value later. As the comment mentioned, we should "use the value defined by the Phi, unless we're generating the firstepilog and the Phi refers to a Phi in a different stage.", so Phi refering to same stage Phi should use the value defined by the Phi here. Reviewers: bcahoon, hfinkel Reviewed By: hfinkel Subscribers: MaskRay, wuzish, nemanjai, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64035
  2. [PowerPC][MachinePipeliner][NFC] Add a testcase for Phi bug.
  3. [WebAssembly] Make sret parameter work with AddMissingPrototypes Summary: Even with functions with `no-prototype` attribute, there can be an argument `sret` (structure return) attribute, which is an optimization when a function return type is a struct. Fixes PR42420. Reviewers: sbc100 Subscribers: dschuff, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64318
  4. [LoopPred] Stylistic improvement to recently added NE/EQ normalization [NFC]
  5. [sanitizers][windows] FIX: Rtl-Heap Interception and tests - Adds interceptors for Rtl[Allocate|Free|Size|ReAllocate]Heap - Adds unit tests for the new interceptors and expands HeapAlloc tests to demonstrate new functionality. Reviewed as D62927 - adds fixes for ~win and x64 tests llvm-svn: 365381
  6. [BPF] add new intrinsics preserve_{array,union,struct}_access_index For background of BPF CO-RE project, please refer to http://vger.kernel.org/bpfconf2019.html In summary, BPF CO-RE intends to compile bpf programs adjustable on struct/union layout change so the same program can run on multiple kernels with adjustment before loading based on native kernel structures. In order to do this, we need keep track of GEP(getelementptr) instruction base and result debuginfo types, so we can adjust on the host based on kernel BTF info. Capturing such information as an IR optimization is hard as various optimization may have tweaked GEP and also union is replaced by structure it is impossible to track fieldindex for union member accesses. Three intrinsic functions, preserve_{array,union,struct}_access_index, are introducted. addr = preserve_array_access_index(base, index, dimension) addr = preserve_union_access_index(base, di_index) addr = preserve_struct_access_index(base, gep_index, di_index) here, base: the base pointer for the array/union/struct access. index: the last access index for array, the same for IR/DebugInfo layout. dimension: the array dimension. gep_index: the access index based on IR layout. di_index: the access index based on user/debuginfo types. For example, for the following example, $ cat test.c struct sk_buff { int i; int b1:1; int b2:2; union { struct { int o1; int o2; } o; struct { char flags; char dev_id; } dev; int netid; } u[10]; }; static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr) = (void *) 4; #define _(x) (__builtin_preserve_access_index(x)) int bpf_prog(struct sk_buff *ctx) { char dev_id; bpf_probe_read(&dev_id, sizeof(char), _(&ctx->u[5].dev.dev_id)); return dev_id; } $ clang -target bpf -O2 -g -emit-llvm -S -mllvm -print-before-all \ test.c >& log The generated IR looks like below: ... define dso_local i32 @bpf_prog(%struct.sk_buff*) #0 !dbg !15 { %2 = alloca %struct.sk_buff*, align 8 %3 = alloca i8, align 1 store %struct.sk_buff* %0, %struct.sk_buff** %2, align 8, !tbaa !45 call void @llvm.dbg.declare(metadata %struct.sk_buff** %2, metadata !43, metadata !DIExpression()), !dbg !49 call void @llvm.lifetime.start.p0i8(i64 1, i8* %3) #4, !dbg !50 call void @llvm.dbg.declare(metadata i8* %3, metadata !44, metadata !DIExpression()), !dbg !51 %4 = load i32 (i8*, i32, i8*)*, i32 (i8*, i32, i8*)** @bpf_probe_read, align 8, !dbg !52, !tbaa !45 %5 = load %struct.sk_buff*, %struct.sk_buff** %2, align 8, !dbg !53, !tbaa !45 %6 = call [10 x %union.anon]* @llvm.preserve.struct.access.index.p0a10s_union.anons.p0s_struct.sk_buffs( %struct.sk_buff* %5, i32 2, i32 3), !dbg !53, !llvm.preserve.access.index !19 %7 = call %union.anon* @llvm.preserve.array.access.index.p0s_union.anons.p0a10s_union.anons( [10 x %union.anon]* %6, i32 1, i32 5), !dbg !53 %8 = call %union.anon* @llvm.preserve.union.access.index.p0s_union.anons.p0s_union.anons( %union.anon* %7, i32 1), !dbg !53, !llvm.preserve.access.index !26 %9 = bitcast %union.anon* %8 to %struct.anon.0*, !dbg !53 %10 = call i8* @llvm.preserve.struct.access.index.p0i8.p0s_struct.anon.0s( %struct.anon.0* %9, i32 1, i32 1), !dbg !53, !llvm.preserve.access.index !34 %11 = call i32 %4(i8* %3, i32 1, i8* %10), !dbg !52 %12 = load i8, i8* %3, align 1, !dbg !54, !tbaa !55 %13 = sext i8 %12 to i32, !dbg !54 call void @llvm.lifetime.end.p0i8(i64 1, i8* %3) #4, !dbg !56 ret i32 %13, !dbg !57 } !19 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sk_buff", file: !3, line: 1, size: 704, elements: !20) !26 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !19, file: !3, line: 5, size: 64, elements: !27) !34 = distinct !DICompositeType(tag: DW_TAG_structure_type, scope: !26, file: !3, line: 10, size: 16, elements: !35) Note that @llvm.preserve.{struct,union}.access.index calls have metadata llvm.preserve.access.index attached to instructions to provide struct/union debuginfo type information. For &ctx->u[5].dev.dev_id, . The "%6 = ..." represents struct member "u" with index 2 for IR layout and index 3 for DI layout. . The "%7 = ..." represents array subscript "5". . The "%8 = ..." represents union member "dev" with index 1 for DI layout. . The "%10 = ..." represents struct member "dev_id" with index 1 for both IR and DI layout. Basically, traversing the use-def chain recursively for the 3rd argument of bpf_probe_read() and examining all preserve_*_access_index calls, the debuginfo struct/union/array access index can be achieved. The intrinsics also contain enough information to regenerate codes for IR layout. For array and structure intrinsics, the proper GEP can be constructed. For union intrinsics, replacing all uses of "addr" with "base" should be enough. The test case ThinLTO/X86/lazyload_metadata.ll is adjusted to reflect the new addition of the metadata. Signed-off-by: Yonghong Song <yhs@fb.com> Differential Revision: https://reviews.llvm.org/D61810
  7. [sanitizers][windows] Rtl-Heap Interception and tests - Adds interceptors for Rtl[Allocate|Free|Size|ReAllocate]Heap - Adds unit tests for the new interceptors and expands HeapAlloc tests to demonstrate new functionality. Reviewed as D62927
  8. [LoopPred] Extend LFTR normalization to the inverse EQ case A while back, I added support for NE latches formed by LFTR. I didn't think that quite through, as LFTR will also produce the inverse EQ form for some loops and I hadn't handled that. This change just adds handling for that case as well.
  9. [WebAssembly] Fix a typo in a test file name Reviewers: sbc100 Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64324
  10. Changing CodeView debug info type record representation in assembly files to make it more human-readable & editable & fixing bug introduced in r364987
  11. [TSan] Fix linker error for Linux/AArch64
  12. Use `ln -n` to prevent forming a symlink cycle, instead of rm'ing the source This is a better fix for the problem fixed in r334972. Also remove the rm'ing of the symlink destination that was there to clean up the bots -- it's over a year later, bots should be happy now. Differential Revision: https://reviews.llvm.org/D64301
  13. Let unaliased Args track which Alias they were created from, and use that in Arg::getAsString() for diagnostics With this, `clang-cl /source-charset:utf-16 test.cc` now prints `invalid value 'utf-16' in '/source-charset:utf-16'` instead of `invalid value 'utf-16' in '-finput-charset=utf-16'` before, and several other clang-cl flags produce much less confusing output as well. Fixes PR29106. Since an arg and its alias can have different arg types (joined vs not) and different values (because of AliasArgs<>), I chose to give the Alias its own Arg object. For convenience, I just store the alias directly in the unaliased arg – there aren't many arg objects at runtime, so that seems ok. Finally, I changed Arg::getAsString() to use the alias's representation if it's present – that function was already documented as being the suitable function for diagnostics, and most callers already used it for diagnostics. Implementation-wise, Arg::accept() previously used to parse things as the unaliased option. The core of that switch is now extracted into a new function acceptInternal() which parses as the _aliased_ option, and the previously-intermingled unaliasing is now done as an explicit step afterwards. (This also changes one place in lld that didn't use getAsString() for diagnostics, so that that one place now also prints the flag as the user wrote it, not as it looks after it went through unaliasing.) Differential Revision: https://reviews.llvm.org/D64253
  14. [X86][PPC] Support -mlong-double-64 -mlong-double-64 is supported on some ports of gcc (i386, x86_64, and ppc{32,64}). On many other targets, there will be an error: error: unrecognized command line option '-mlong-double-64' This patch makes the driver option -mlong-double-64 available for x86 and ppc. The CC1 option -mlong-double-64 is available on all targets for users to test on unsupported targets. LongDoubleSize is added as a VALUE_LANGOPT so that the option can be shared with -mlong-double-128 when we support it in clang. Also, make powerpc*-linux-musl default to use 64-bit long double. It is currently the only supported ABI on musl and is also how people configure powerpc*-linux-musl-gcc. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D64067
  15. clang-cl: Port cl.exe's C4659 to clang-cl Differential Revision: https://reviews.llvm.org/D64349
  16. [analyzer] exploded-graph-rewriter: Implement a topology-only mode. In this mode the rewriter will only rewrite program points and omit program states. Useful for understanding the rough topology of the graph. Differential Revision: https://reviews.llvm.org/D64264
  17. [analyzer] exploded-graph-rewriter: Implement a single-path mode. Instead of rewriting the whole graph, rewrite the leftmost path in the graph. Useful for trimmed graphs that are still too large to display due to multiple equivalent reports mixed into them. Differential Revision: https://reviews.llvm.org/D64263
  18. [ObjC] Add a -Wtautological-compare warning for BOOL On macOS, BOOL is a typedef for signed char, but it should never hold a value that isn't 1 or 0. Any code that expects a different value in their BOOL should be fixed. rdar://51954400 Differential revision: https://reviews.llvm.org/D63856
Revision 365428 by jsji:
[MachinePipeliner] Fix Phi refers to Phi in same stage in 1st epilogue

Summary:
This is exposed by functional testing on PowerPC.
In some pipelined loops, Phi refer to phi did not get value defined by
the Phi, hence getting wrong value later.

As the comment mentioned, we should "use the value defined by the Phi,
unless we're generating the firstepilog and the Phi refers to a Phi
in a different stage.", so Phi refering to same stage Phi should use
the value defined by the Phi here.

Reviewers: bcahoon, hfinkel

Reviewed By: hfinkel

Subscribers: MaskRay, wuzish, nemanjai, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64035
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/MachinePipeliner.cpp (diff)llvm.src/lib/CodeGen/MachinePipeliner.cpp
The file was modified/llvm/trunk/test/CodeGen/PowerPC/sms-phi.ll (diff)llvm.src/test/CodeGen/PowerPC/sms-phi.ll
Revision 365427 by jsji:
[PowerPC][MachinePipeliner][NFC] Add a testcase for Phi bug.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/PowerPC/sms-phi.llllvm.src/test/CodeGen/PowerPC/sms-phi.ll
Revision 365426 by aheejin:
[WebAssembly] Make sret parameter work with AddMissingPrototypes

Summary:
Even with functions with `no-prototype` attribute, there can be an
argument `sret` (structure return) attribute, which is an optimization
when a function return type is a struct. Fixes PR42420.

Reviewers: sbc100

Subscribers: dschuff, jgravelle-google, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64318
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp (diff)llvm.src/lib/Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp
The file was modified/llvm/trunk/test/CodeGen/WebAssembly/add-prototypes.ll (diff)llvm.src/test/CodeGen/WebAssembly/add-prototypes.ll
Revision 365425 by reames:
[LoopPred] Stylistic improvement to recently added NE/EQ normalization [NFC]
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopPredication.cpp (diff)llvm.src/lib/Transforms/Scalar/LoopPredication.cpp
Revision 365424 by mcgov:
[sanitizers][windows] FIX: Rtl-Heap Interception and tests

   - Adds interceptors for Rtl[Allocate|Free|Size|ReAllocate]Heap
   - Adds unit tests for the new interceptors and expands HeapAlloc
     tests to demonstrate new functionality.
   Reviewed as D62927
   - adds fixes for ~win and x64 tests

llvm-svn: 365381
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/asan/asan_malloc_win.cc (diff)compiler-rt.src/lib/asan/asan_malloc_win.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_doublefree.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_doublefree.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_flags_fallback.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_flags_fallback.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_huge.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_huge.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_rtl_transfer.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_rtl_transfer.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_transfer.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_transfer.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_uaf.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_uaf.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_zero_size.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heapalloc_zero_size.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heaprealloc.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc_alloc_zero.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heaprealloc_alloc_zero.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc_zero_size.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heaprealloc_zero_size.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_flags_fallback.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_flags_fallback.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_zero.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_zero.cc
Revision 365423 by yhs:
[BPF] add new intrinsics preserve_{array,union,struct}_access_index

For background of BPF CO-RE project, please refer to
  http://vger.kernel.org/bpfconf2019.html
In summary, BPF CO-RE intends to compile bpf programs
adjustable on struct/union layout change so the same
program can run on multiple kernels with adjustment
before loading based on native kernel structures.

In order to do this, we need keep track of GEP(getelementptr)
instruction base and result debuginfo types, so we
can adjust on the host based on kernel BTF info.
Capturing such information as an IR optimization is hard
as various optimization may have tweaked GEP and also
union is replaced by structure it is impossible to track
fieldindex for union member accesses.

Three intrinsic functions, preserve_{array,union,struct}_access_index,
are introducted.
  addr = preserve_array_access_index(base, index, dimension)
  addr = preserve_union_access_index(base, di_index)
  addr = preserve_struct_access_index(base, gep_index, di_index)
here,
  base: the base pointer for the array/union/struct access.
  index: the last access index for array, the same for IR/DebugInfo layout.
  dimension: the array dimension.
  gep_index: the access index based on IR layout.
  di_index: the access index based on user/debuginfo types.

For example, for the following example,
  $ cat test.c
  struct sk_buff {
     int i;
     int b1:1;
     int b2:2;
     union {
       struct {
         int o1;
         int o2;
       } o;
       struct {
         char flags;
         char dev_id;
       } dev;
       int netid;
     } u[10];
  };

  static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr)
      = (void *) 4;

  #define _(x) (__builtin_preserve_access_index(x))

  int bpf_prog(struct sk_buff *ctx) {
    char dev_id;
    bpf_probe_read(&dev_id, sizeof(char), _(&ctx->u[5].dev.dev_id));
    return dev_id;
  }
  $ clang -target bpf -O2 -g -emit-llvm -S -mllvm -print-before-all \
    test.c >& log

The generated IR looks like below:

  ...
  define dso_local i32 @bpf_prog(%struct.sk_buff*) #0 !dbg !15 {
    %2 = alloca %struct.sk_buff*, align 8
    %3 = alloca i8, align 1
    store %struct.sk_buff* %0, %struct.sk_buff** %2, align 8, !tbaa !45
    call void @llvm.dbg.declare(metadata %struct.sk_buff** %2, metadata !43, metadata !DIExpression()), !dbg !49
    call void @llvm.lifetime.start.p0i8(i64 1, i8* %3) #4, !dbg !50
    call void @llvm.dbg.declare(metadata i8* %3, metadata !44, metadata !DIExpression()), !dbg !51
    %4 = load i32 (i8*, i32, i8*)*, i32 (i8*, i32, i8*)** @bpf_probe_read, align 8, !dbg !52, !tbaa !45
    %5 = load %struct.sk_buff*, %struct.sk_buff** %2, align 8, !dbg !53, !tbaa !45
    %6 = call [10 x %union.anon]* @llvm.preserve.struct.access.index.p0a10s_union.anons.p0s_struct.sk_buffs(
         %struct.sk_buff* %5, i32 2, i32 3), !dbg !53, !llvm.preserve.access.index !19
    %7 = call %union.anon* @llvm.preserve.array.access.index.p0s_union.anons.p0a10s_union.anons(
         [10 x %union.anon]* %6, i32 1, i32 5), !dbg !53
    %8 = call %union.anon* @llvm.preserve.union.access.index.p0s_union.anons.p0s_union.anons(
         %union.anon* %7, i32 1), !dbg !53, !llvm.preserve.access.index !26
    %9 = bitcast %union.anon* %8 to %struct.anon.0*, !dbg !53
    %10 = call i8* @llvm.preserve.struct.access.index.p0i8.p0s_struct.anon.0s(
         %struct.anon.0* %9, i32 1, i32 1), !dbg !53, !llvm.preserve.access.index !34
    %11 = call i32 %4(i8* %3, i32 1, i8* %10), !dbg !52
    %12 = load i8, i8* %3, align 1, !dbg !54, !tbaa !55
    %13 = sext i8 %12 to i32, !dbg !54
    call void @llvm.lifetime.end.p0i8(i64 1, i8* %3) #4, !dbg !56
    ret i32 %13, !dbg !57
  }

  !19 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sk_buff", file: !3, line: 1, size: 704, elements: !20)
  !26 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !19, file: !3, line: 5, size: 64, elements: !27)
  !34 = distinct !DICompositeType(tag: DW_TAG_structure_type, scope: !26, file: !3, line: 10, size: 16, elements: !35)

Note that @llvm.preserve.{struct,union}.access.index calls have metadata llvm.preserve.access.index
attached to instructions to provide struct/union debuginfo type information.

For &ctx->u[5].dev.dev_id,
  . The "%6 = ..." represents struct member "u" with index 2 for IR layout and index 3 for DI layout.
  . The "%7 = ..." represents array subscript "5".
  . The "%8 = ..." represents union member "dev" with index 1 for DI layout.
  . The "%10 = ..." represents struct member "dev_id" with index 1 for both IR and DI layout.

Basically, traversing the use-def chain recursively for the 3rd argument of bpf_probe_read() and
examining all preserve_*_access_index calls, the debuginfo struct/union/array access index
can be achieved.

The intrinsics also contain enough information to regenerate codes for IR layout.
For array and structure intrinsics, the proper GEP can be constructed.
For union intrinsics, replacing all uses of "addr" with "base" should be enough.

The test case ThinLTO/X86/lazyload_metadata.ll is adjusted to reflect the
new addition of the metadata.

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

Differential Revision: https://reviews.llvm.org/D61810
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/LangRef.rst (diff)llvm.src/docs/LangRef.rst
The file was modified/llvm/trunk/include/llvm/IR/IRBuilder.h (diff)llvm.src/include/llvm/IR/IRBuilder.h
The file was modified/llvm/trunk/include/llvm/IR/Intrinsics.td (diff)llvm.src/include/llvm/IR/Intrinsics.td
The file was modified/llvm/trunk/include/llvm/IR/LLVMContext.h (diff)llvm.src/include/llvm/IR/LLVMContext.h
The file was modified/llvm/trunk/lib/IR/LLVMContext.cpp (diff)llvm.src/lib/IR/LLVMContext.cpp
The file was modified/llvm/trunk/test/ThinLTO/X86/lazyload_metadata.ll (diff)llvm.src/test/ThinLTO/X86/lazyload_metadata.ll
Revision 365422 by mcgov:
[sanitizers][windows] Rtl-Heap Interception and tests
   - Adds interceptors for Rtl[Allocate|Free|Size|ReAllocate]Heap
   - Adds unit tests for the new interceptors and expands HeapAlloc
     tests to demonstrate new functionality.
   Reviewed as D62927
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/asan/asan_flags.inc (diff)compiler-rt.src/lib/asan/asan_flags.inc
The file was modified/compiler-rt/trunk/lib/asan/asan_malloc_win.cc (diff)compiler-rt.src/lib/asan/asan_malloc_win.cc
The file was modified/compiler-rt/trunk/lib/asan/asan_win.cc (diff)compiler-rt.src/lib/asan/asan_win.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/dll_host.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/dll_host.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/dll_unload.cccompiler-rt.src/test/asan/TestCases/Windows/dll_unload.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_dll_double_free.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_dll_double_free.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_dll_unload_realloc_uaf.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_dll_unload_realloc_uaf.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_doublefree.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_doublefree.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_flags_fallback.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_flags_fallback.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_huge.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_huge.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_rtl_transfer.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_rtl_transfer.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_sanity.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_sanity.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_transfer.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_transfer.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_uaf.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_uaf.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heapalloc_zero_size.cccompiler-rt.src/test/asan/TestCases/Windows/heapalloc_zero_size.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc.cccompiler-rt.src/test/asan/TestCases/Windows/heaprealloc.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc_alloc_zero.cccompiler-rt.src/test/asan/TestCases/Windows/heaprealloc_alloc_zero.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/heaprealloc_zero_size.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/heaprealloc_zero_size.cc
The file was modified/compiler-rt/trunk/test/asan/TestCases/Windows/queue_user_work_item_report.cc (diff)compiler-rt.src/test/asan/TestCases/Windows/queue_user_work_item_report.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap.cccompiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_dll_unload_double_free.cccompiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_dll_unload_double_free.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_dll_unload_realloc.cccompiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_dll_unload_realloc.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_flags_fallback.cccompiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_flags_fallback.cc
The file was added/compiler-rt/trunk/test/asan/TestCases/Windows/rtlallocateheap_zero.cccompiler-rt.src/test/asan/TestCases/Windows/rtlallocateheap_zero.cc
Revision 365419 by reames:
[LoopPred] Extend LFTR normalization to the inverse EQ case

A while back, I added support for NE latches formed by LFTR.  I didn't think that quite through, as LFTR will also produce the inverse EQ form for some loops and I hadn't handled that.  This change just adds handling for that case as well.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopPredication.cpp (diff)llvm.src/lib/Transforms/Scalar/LoopPredication.cpp
The file was modified/llvm/trunk/test/Transforms/LoopPredication/basic.ll (diff)llvm.src/test/Transforms/LoopPredication/basic.ll
Revision 365418 by aheejin:
[WebAssembly] Fix a typo in a test file name

Reviewers: sbc100

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

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64324
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/WebAssembly/add-prototypes-conflict.llllvm.src/test/CodeGen/WebAssembly/add-prototypes-conflict.ll
The file was removed/llvm/trunk/test/CodeGen/WebAssembly/add-prototypes-conflit.llllvm.src/test/CodeGen/WebAssembly/add-prototypes-conflit.ll
Revision 365417 by nilanjana_basu:
Changing CodeView debug info type record representation in assembly files to make it more human-readable & editable & fixing bug introduced in r364987
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h (diff)llvm.src/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
The file was modified/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h (diff)llvm.src/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
The file was modified/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h (diff)llvm.src/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
The file was modified/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h (diff)llvm.src/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp (diff)llvm.src/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modified/llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp (diff)llvm.src/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
The file was modified/llvm/trunk/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp (diff)llvm.src/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
The file was modified/llvm/trunk/lib/DebugInfo/CodeView/TypeRecordMapping.cpp (diff)llvm.src/lib/DebugInfo/CodeView/TypeRecordMapping.cpp
The file was modified/llvm/trunk/test/DebugInfo/COFF/anonymous-struct.ll (diff)llvm.src/test/DebugInfo/COFF/anonymous-struct.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/big-type.ll (diff)llvm.src/test/DebugInfo/COFF/big-type.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/class-options-common.ll (diff)llvm.src/test/DebugInfo/COFF/class-options-common.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/const-unnamed-member.ll (diff)llvm.src/test/DebugInfo/COFF/const-unnamed-member.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll (diff)llvm.src/test/DebugInfo/COFF/defer-complete-type.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/enum-co.ll (diff)llvm.src/test/DebugInfo/COFF/enum-co.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/enum.ll (diff)llvm.src/test/DebugInfo/COFF/enum.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/function-options.ll (diff)llvm.src/test/DebugInfo/COFF/function-options.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/globals.ll (diff)llvm.src/test/DebugInfo/COFF/globals.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/inheritance.ll (diff)llvm.src/test/DebugInfo/COFF/inheritance.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/inlining-padding.ll (diff)llvm.src/test/DebugInfo/COFF/inlining-padding.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/inlining-same-name.ll (diff)llvm.src/test/DebugInfo/COFF/inlining-same-name.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/inlining.ll (diff)llvm.src/test/DebugInfo/COFF/inlining.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/lambda.ll (diff)llvm.src/test/DebugInfo/COFF/lambda.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/long-type-name.ll (diff)llvm.src/test/DebugInfo/COFF/long-type-name.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/nested-types.ll (diff)llvm.src/test/DebugInfo/COFF/nested-types.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/retained-types.ll (diff)llvm.src/test/DebugInfo/COFF/retained-types.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/scopes.ll (diff)llvm.src/test/DebugInfo/COFF/scopes.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/static-methods.ll (diff)llvm.src/test/DebugInfo/COFF/static-methods.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/type-quals.ll (diff)llvm.src/test/DebugInfo/COFF/type-quals.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-array-advanced.ll (diff)llvm.src/test/DebugInfo/COFF/types-array-advanced.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-array-unsized.ll (diff)llvm.src/test/DebugInfo/COFF/types-array-unsized.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-array.ll (diff)llvm.src/test/DebugInfo/COFF/types-array.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-basic.ll (diff)llvm.src/test/DebugInfo/COFF/types-basic.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll (diff)llvm.src/test/DebugInfo/COFF/types-calling-conv.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-cvarargs.ll (diff)llvm.src/test/DebugInfo/COFF/types-cvarargs.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-data-members.ll (diff)llvm.src/test/DebugInfo/COFF/types-data-members.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-empty-member-fn.ll (diff)llvm.src/test/DebugInfo/COFF/types-empty-member-fn.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-method-ref-qualifiers.ll (diff)llvm.src/test/DebugInfo/COFF/types-method-ref-qualifiers.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-nested-class.ll (diff)llvm.src/test/DebugInfo/COFF/types-nested-class.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll (diff)llvm.src/test/DebugInfo/COFF/types-non-virtual-methods.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-ptr-to-member.ll (diff)llvm.src/test/DebugInfo/COFF/types-ptr-to-member.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll (diff)llvm.src/test/DebugInfo/COFF/types-recursive-struct.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/unnamed.ll (diff)llvm.src/test/DebugInfo/COFF/unnamed.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/vftables.ll (diff)llvm.src/test/DebugInfo/COFF/vftables.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/virtual-method-kinds.ll (diff)llvm.src/test/DebugInfo/COFF/virtual-method-kinds.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/virtual-methods.ll (diff)llvm.src/test/DebugInfo/COFF/virtual-methods.ll
The file was modified/llvm/trunk/test/DebugInfo/COFF/vtable-optzn-array.ll (diff)llvm.src/test/DebugInfo/COFF/vtable-optzn-array.ll
Revision 365415 by yln:
[TSan] Fix linker error for Linux/AArch64
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
Revision 365414 by nico:
Use `ln -n` to prevent forming a symlink cycle, instead of rm'ing the source

This is a better fix for the problem fixed in r334972.

Also remove the rm'ing of the symlink destination that was there to
clean up the bots -- it's over a year later, bots should be happy now.

Differential Revision: https://reviews.llvm.org/D64301
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/Driver/no-canonical-prefixes.c (diff)clang.src/test/Driver/no-canonical-prefixes.c
Revision 365413 by nico:
Let unaliased Args track which Alias they were created from, and use that in Arg::getAsString() for diagnostics

With this, `clang-cl /source-charset:utf-16 test.cc` now prints `invalid
value 'utf-16' in '/source-charset:utf-16'` instead of `invalid value
'utf-16' in '-finput-charset=utf-16'` before, and several other clang-cl
flags produce much less confusing output as well.

Fixes PR29106.

Since an arg and its alias can have different arg types (joined vs not)
and different values (because of AliasArgs<>), I chose to give the Alias
its own Arg object. For convenience, I just store the alias directly in
the unaliased arg – there aren't many arg objects at runtime, so that
seems ok.

Finally, I changed Arg::getAsString() to use the alias's representation
if it's present – that function was already documented as being the
suitable function for diagnostics, and most callers already used it for
diagnostics.

Implementation-wise, Arg::accept() previously used to parse things as
the unaliased option. The core of that switch is now extracted into a
new function acceptInternal() which parses as the _aliased_ option, and
the previously-intermingled unaliasing is now done as an explicit step
afterwards.

(This also changes one place in lld that didn't use getAsString() for
diagnostics, so that that one place now also prints the flag as the user
wrote it, not as it looks after it went through unaliasing.)

Differential Revision: https://reviews.llvm.org/D64253
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/Driver/arm-execute-only.c (diff)clang.src/test/Driver/arm-execute-only.c
The file was modified/cfe/trunk/test/Driver/cl-options.c (diff)clang.src/test/Driver/cl-options.c
The file was modified/cfe/trunk/test/Driver/darwin-version.c (diff)clang.src/test/Driver/darwin-version.c
The file was modified/lld/trunk/Common/Reproduce.cpp (diff)lld.src/Common/Reproduce.cpp
The file was modified/lld/trunk/ELF/Driver.cpp (diff)lld.src/ELF/Driver.cpp
The file was modified/lld/trunk/test/ELF/sectionstart.s (diff)lld.src/test/ELF/sectionstart.s
The file was modified/llvm/trunk/include/llvm/Option/Arg.h (diff)llvm.src/include/llvm/Option/Arg.h
The file was modified/llvm/trunk/include/llvm/Option/Option.h (diff)llvm.src/include/llvm/Option/Option.h
The file was modified/llvm/trunk/lib/Option/Arg.cpp (diff)llvm.src/lib/Option/Arg.cpp
The file was modified/llvm/trunk/lib/Option/Option.cpp (diff)llvm.src/lib/Option/Option.cpp
Revision 365412 by maskray:
[X86][PPC] Support -mlong-double-64

-mlong-double-64 is supported on some ports of gcc (i386, x86_64, and ppc{32,64}).
On many other targets, there will be an error:

    error: unrecognized command line option '-mlong-double-64'

This patch makes the driver option -mlong-double-64 available for x86
and ppc. The CC1 option -mlong-double-64 is available on all targets for
users to test on unsupported targets.

LongDoubleSize is added as a VALUE_LANGOPT so that the option can be
shared with -mlong-double-128 when we support it in clang.

Also, make powerpc*-linux-musl default to use 64-bit long double. It is
currently the only supported ABI on musl and is also how people
configure powerpc*-linux-musl-gcc.

Reviewed By: rnk

Differential Revision: https://reviews.llvm.org/D64067
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/LangOptions.def (diff)clang.src/include/clang/Basic/LangOptions.def
The file was modified/cfe/trunk/include/clang/Driver/Options.td (diff)clang.src/include/clang/Driver/Options.td
The file was modified/cfe/trunk/lib/Basic/TargetInfo.cpp (diff)clang.src/lib/Basic/TargetInfo.cpp
The file was modified/cfe/trunk/lib/Basic/Targets/PPC.h (diff)clang.src/lib/Basic/Targets/PPC.h
The file was modified/cfe/trunk/lib/Driver/ToolChains/Clang.cpp (diff)clang.src/lib/Driver/ToolChains/Clang.cpp
The file was modified/cfe/trunk/lib/Frontend/CompilerInvocation.cpp (diff)clang.src/lib/Frontend/CompilerInvocation.cpp
The file was removed/cfe/trunk/test/CodeGen/long-double-x86.cclang.src/test/CodeGen/long-double-x86.c
The file was removed/cfe/trunk/test/CodeGen/ppc64-align-long-double.cclang.src/test/CodeGen/ppc64-align-long-double.c
The file was added/cfe/trunk/test/CodeGen/ppc64-long-double.cppclang.src/test/CodeGen/ppc64-long-double.cpp
The file was added/cfe/trunk/test/CodeGen/x86-long-double.cppclang.src/test/CodeGen/x86-long-double.cpp
The file was added/cfe/trunk/test/Driver/mlong-double-64.cclang.src/test/Driver/mlong-double-64.c
Revision 365411 by nico:
clang-cl: Port cl.exe's C4659 to clang-cl

Differential Revision: https://reviews.llvm.org/D64349
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/Attr.td (diff)clang.src/include/clang/Basic/Attr.td
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/SemaAttr.cpp (diff)clang.src/lib/Sema/SemaAttr.cpp
The file was modified/cfe/trunk/lib/Sema/SemaDeclAttr.cpp (diff)clang.src/lib/Sema/SemaDeclAttr.cpp
The file was modified/cfe/trunk/test/Sema/pragma-section.c (diff)clang.src/test/Sema/pragma-section.c
Revision 365410 by dergachev:
[analyzer] exploded-graph-rewriter: Implement a topology-only mode.

In this mode the rewriter will only rewrite program points
and omit program states. Useful for understanding
the rough topology of the graph.

Differential Revision: https://reviews.llvm.org/D64264
Change TypePath in RepositoryPath in Workspace
The file was added/cfe/trunk/test/Analysis/exploded-graph-rewriter/topology.dotclang.src/test/Analysis/exploded-graph-rewriter/topology.dot
The file was modified/cfe/trunk/utils/analyzer/exploded-graph-rewriter.py (diff)clang.src/utils/analyzer/exploded-graph-rewriter.py
Revision 365409 by dergachev:
[analyzer] exploded-graph-rewriter: Implement a single-path mode.

Instead of rewriting the whole graph, rewrite the leftmost path in the
graph. Useful for trimmed graphs that are still too large to display due
to multiple equivalent reports mixed into them.

Differential Revision: https://reviews.llvm.org/D64263
Change TypePath in RepositoryPath in Workspace
The file was added/cfe/trunk/test/Analysis/exploded-graph-rewriter/explorers.dotclang.src/test/Analysis/exploded-graph-rewriter/explorers.dot
The file was modified/cfe/trunk/utils/analyzer/exploded-graph-rewriter.py (diff)clang.src/utils/analyzer/exploded-graph-rewriter.py
Revision 365408 by epilk:
[ObjC] Add a -Wtautological-compare warning for BOOL

On macOS, BOOL is a typedef for signed char, but it should never hold a value
that isn't 1 or 0. Any code that expects a different value in their BOOL should
be fixed.

rdar://51954400

Differential revision: https://reviews.llvm.org/D63856
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/tautological-objc-bool-compare.mclang.src/test/Sema/tautological-objc-bool-compare.m