SuccessChanges

Summary

  1. Revert "[GlobalISel] Remove the GISelAccessor API." This reverts commit r310115. It causes a linker failure for the one of the unittests of AArch64 on one of the linux bot: http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/3429 : && /home/fedora/gcc/install/gcc-7.1.0/bin/g++ -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -ffunction-sections -fdata-sections -O2 -L/home/fedora/gcc/install/gcc-7.1.0/lib64 -Wl,-allow-shlib-undefined -Wl,-O3 -Wl,--gc-sections unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o -o unittests/Target/AArch64/AArch64Tests lib/libLLVMAArch64CodeGen.so.6.0.0svn lib/libLLVMAArch64Desc.so.6.0.0svn lib/libLLVMAArch64Info.so.6.0.0svn lib/libLLVMCodeGen.so.6.0.0svn lib/libLLVMCore.so.6.0.0svn lib/libLLVMMC.so.6.0.0svn lib/libLLVMMIRParser.so.6.0.0svn lib/libLLVMSelectionDAG.so.6.0.0svn lib/libLLVMTarget.so.6.0.0svn lib/libLLVMSupport.so.6.0.0svn -lpthread lib/libgtest_main.so.6.0.0svn lib/libgtest.so.6.0.0svn -lpthread -Wl,-rpath,/home/buildbots/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/lib && : unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x0): undefined reference to `vtable for llvm::LegalizerInfo' unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x8): undefined reference to `vtable for llvm::RegisterBankInfo' The particularity of this bot is that it is built with BUILD_SHARED_LIBS=ON However, I was not able to reproduce the problem so far. Reverting to unblock the bot.
  2. My commit r310346 introduced some valid warnings. This cleans them up.
  3. Lexer: always allow imaginary constants in GNU mode.
  4. [MachineOutliner] Ensure AArch64 outliner doesn't mess with W30 or LR Before, the outliner would mark all instructions that read from/modify LR as illegal. This doesn't handle W30, which overlaps with LR. This shouldn't be outlined. This commit fixes that by making modifiesRegister() and readsRegister() look at W30 + take in a TRI argument. This makes sure that modifiesRegister() and readsRegister() won't outline either of W30 and LR. https://reviews.llvm.org/D36435
  5. [GVN] Remove stale entries in phitranslate cache when new phi is generated for PRE When a new phi is generated for scalarpre of an expression, the phiTranslate cache will become stale: Before PRE, the candidate expression must not be available in a predecessor block, and phitranslate will cache the information. After PRE, the expression will become available in all predecessor blocks, so the related entries in phiTranslate cache becomes stale. The patch will simply remove the stale entries so phiTranslate can be recomputed next time. The stale entries in phitranslate cache will not affect correctness but will cause missing PRE opportunity for later instructions. Differential Revision: https://reviews.llvm.org/D36124
  6. BasicAA: assert on another case where aliasGEP shouldn't get a PartialAlias response
  7. [winasan] Fix hotpatching ntdll!strcpy for Win10 creators edition The 9 byte nop is a suffix of the 10 byte nop, and we need at most 6 bytes. ntdll's version of strcpy is written in assembly and is very clever. strcat tail calls strcpy but with a slightly different arrangement of argument registers at an alternate entry point. It looks like this: ntdll!strcpy: 00007ffd`64e8a7a0 4c8bd9 mov r11,rcx ntdll!__entry_from_strcat_in_strcpy: 00007ffd`64e8a7a3 482bca sub rcx,rdx 00007ffd`64e8a7a6 f6c207 test dl,7 If we overwrite more than two bytes in our interceptor, that label will no longer be a valid instruction boundary. By recognizing the 9 byte nop, we use the two byte backwards branch to start our trampoline, avoiding this issue. Fixes https://github.com/google/sanitizers/issues/829 Patch by David Major
  8. [mips] Enable `long_call/short_call` attributes on MIPS64 This change enables `long_call/short_call/far/near` attributes on MIPS64 targets. Differential revision: https://reviews.llvm.org/D36208
  9. Make ICP uses PSI to check for hotness. Summary: Currently, ICP checks the count against a fixed value to see if it is hot enough to be promoted. This does not work for SamplePGO because sampled count may be much smaller. This patch uses PSI to check if the count is hot enough to be promoted. Reviewers: davidxl, tejohnson, eraman Reviewed By: davidxl Subscribers: sanjoy, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D36341
  10. Add NetBSD support in asan_malloc_linux.cc Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, fjricci, vitalybuka, filcab Reviewed By: fjricci Subscribers: llvm-commits, kubamracek, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36376
  11. Add NetBSD support in asan_symbolize.py Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, filcab, vitalybuka, kcc, fjricci Reviewed By: fjricci Subscribers: kubamracek, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36484
  12. Enable ubsan on NetBSD Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka, kcc, filcab, fjricci Reviewed By: fjricci Subscribers: srhines, kubamracek, mgorny, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36483
  13. Reuse sanitizer_linux for NetBSD Summary: Follow FreeBSD and reuse sanitizer_linux for NetBSD. Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, filcab, vitalybuka, fjricci, dvyukov Reviewed By: fjricci Subscribers: dvyukov, emaste, kubamracek, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36325
  14. [codeview] Emit nested enums and typedefs from classes Previously we limited ourselves to only emitting nested classes, but we need other kinds of types as well. This fixes the Visual Studio STL visualizers, so that users can visualize std::string and other objects.
  15. [sanitizer-coverage] -fsanitize-coverage=bb,inline-8bit-counters
  16. Integrate Kostya's clang-proto-fuzzer with LLVM. Summary: The clang-proto-fuzzer models a subset of C++ as a protobuf and uses libprotobuf-mutator to generate interesting mutations of C++ programs. Clang-proto-fuzzer has already found several bugs in Clang (e.g., https://bugs.llvm.org/show_bug.cgi?id=33747, https://bugs.llvm.org/show_bug.cgi?id=33749). As with clang-fuzzer, clang-proto-fuzzer requires the following cmake flags: - CMAKE_C_COMPILER=clang - CMAKE_CXX_COMPILER=clang++ - LLVM_USE_SANITIZE_COVERAGE=YES // needed for libFuzzer - LLVM_USE_SANITIZER=Address // needed for libFuzzer In addition, clang-proto-fuzzer requires: - CLANG_ENABLE_PROTO_FUZZER=ON clang-proto-fuzzer also requires the following dependencies: - binutils // needed for libprotobuf-mutator - liblzma-dev // needed for libprotobuf-mutator - libz-dev // needed for libprotobuf-mutator - docbook2x // needed for libprotobuf-mutator - Recent version of protobuf [3.3.0 is known to work] A working version of libprotobuf-mutator will automatically be downloaded and built as an external project. Implementation of clang-proto-fuzzer provided by Kostya Serebryany. https://bugs.llvm.org/show_bug.cgi?id=33829 Reviewers: kcc, vitalybuka, bogner Reviewed By: kcc, vitalybuka Subscribers: thakis, mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D36324
  17. [InstCombine] Support pulling left shifts through a subtract with constant LHS We already support pulling through an add with constant RHS. We can do the same for subtract. Differential Revision: https://reviews.llvm.org/D36443
  18. [coverage] Special-case calls to noreturn functions. The code after a noreturn call doesn't execute. The pattern in the testcase is pretty common in LLVM (a switch with a default case that calls llvm_unreachable). The original version of this patch was reverted in r309995 due to a crash. This version includes a fix for that crash (testcase in test/CoverageMapping/md.cpp). Differential Revision: https://reviews.llvm.org/D36250
  19. [DAG] Introduce peekThroughBitcast function. NFCI.
  20. [DAG] Update comments. NFC.
  21. Thread Safety Analysis: warn on nonsensical attributes. Add warnings in cases where an implicit `this` argument is expected to attributes because either `this` doesn't exist because the attribute is on a free function, or because `this` is on a type that doesn't have a corresponding capability/lockable/scoped_lockable attribute. Reviewers: delesley, aaron.ballman Differential Revision: https://reviews.llvm.org/D36237
  22. Reland "Thread Safety Analysis: fix assert_capability." Delete the test that was broken by rL309725, and add it back in a follow up commit. Also, improve the tests a bit. Reviewers: delesley, aaron.ballman Differential Revision: https://reviews.llvm.org/D36237
Revision 310425 by qcolombet:
Revert "[GlobalISel] Remove the GISelAccessor API."

This reverts commit r310115.

It causes a linker failure for the one of the unittests of AArch64 on one
of the linux bot:
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/3429

: && /home/fedora/gcc/install/gcc-7.1.0/bin/g++   -fPIC
-fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -pedantic -Wno-long-long
-Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment
-ffunction-sections -fdata-sections -O2
-L/home/fedora/gcc/install/gcc-7.1.0/lib64 -Wl,-allow-shlib-undefined
-Wl,-O3 -Wl,--gc-sections
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o  -o
unittests/Target/AArch64/AArch64Tests
lib/libLLVMAArch64CodeGen.so.6.0.0svn lib/libLLVMAArch64Desc.so.6.0.0svn
lib/libLLVMAArch64Info.so.6.0.0svn lib/libLLVMCodeGen.so.6.0.0svn
lib/libLLVMCore.so.6.0.0svn lib/libLLVMMC.so.6.0.0svn
lib/libLLVMMIRParser.so.6.0.0svn lib/libLLVMSelectionDAG.so.6.0.0svn
lib/libLLVMTarget.so.6.0.0svn lib/libLLVMSupport.so.6.0.0svn -lpthread
lib/libgtest_main.so.6.0.0svn lib/libgtest.so.6.0.0svn -lpthread
-Wl,-rpath,/home/buildbots/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/lib
&& :
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x0):
undefined reference to `vtable for llvm::LegalizerInfo'
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x8):
undefined reference to `vtable for llvm::RegisterBankInfo'

The particularity of this bot is that it is built with
BUILD_SHARED_LIBS=ON

However, I was not able to reproduce the problem so far.
Reverting to unblock the bot.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/GlobalISel.rstllvm.src/docs/GlobalISel.rst
The file was added/llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.hllvm.src/include/llvm/CodeGen/GlobalISel/GISelAccessor.h
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cppllvm.src/lib/Target/AArch64/AArch64Subtarget.cpp
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64Subtarget.hllvm.src/lib/Target/AArch64/AArch64Subtarget.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cppllvm.src/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.hllvm.src/lib/Target/AMDGPU/AMDGPUSubtarget.h
The file was modified/llvm/trunk/lib/Target/ARM/ARMSubtarget.cppllvm.src/lib/Target/ARM/ARMSubtarget.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMSubtarget.hllvm.src/lib/Target/ARM/ARMSubtarget.h
The file was modified/llvm/trunk/lib/Target/X86/X86Subtarget.cppllvm.src/lib/Target/X86/X86Subtarget.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86Subtarget.hllvm.src/lib/Target/X86/X86Subtarget.h
Revision 310424 by nemanjai:
My commit r310346 introduced some valid warnings. This cleans them up.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cppllvm.src/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
Revision 310423 by Tim Northover:
Lexer: always allow imaginary constants in GNU mode.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Lex/LiteralSupport.cppclang.src/lib/Lex/LiteralSupport.cpp
The file was added/cfe/trunk/test/Lexer/imaginary-constants.cppclang.src/test/Lexer/imaginary-constants.cpp
The file was modified/cfe/trunk/test/SemaCXX/constexpr-printing.cppclang.src/test/SemaCXX/constexpr-printing.cpp
The file was modified/cfe/trunk/unittests/AST/DeclTest.cppclang.src/unittests/AST/DeclTest.cpp
Revision 310422 by paquette:
[MachineOutliner] Ensure AArch64 outliner doesn't mess with W30 or LR

Before, the outliner would mark all instructions that read from/modify LR as
illegal. This doesn't handle W30, which overlaps with LR. This shouldn't be
outlined.

This commit fixes that by making modifiesRegister() and readsRegister() look at
W30 + take in a TRI argument. This makes sure that modifiesRegister() and
readsRegister() won't outline either of W30 and LR.

https://reviews.llvm.org/D36435
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.cppllvm.src/lib/Target/AArch64/AArch64InstrInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/machine-outliner.mirllvm.src/test/CodeGen/AArch64/machine-outliner.mir
Revision 310421 by wmi:
[GVN] Remove stale entries in phitranslate cache when new phi is generated for PRE

When a new phi is generated for scalarpre of an expression, the phiTranslate cache
will become stale: Before PRE, the candidate expression must not be available in a
predecessor block, and phitranslate will cache the information. After PRE, the
expression will become available in all predecessor blocks, so the related entries
in phiTranslate cache becomes stale. The patch will simply remove the stale entries
so phiTranslate can be recomputed next time.

The stale entries in phitranslate cache will not affect correctness but will cause
missing PRE opportunity for later instructions.

Differential Revision: https://reviews.llvm.org/D36124
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Transforms/Scalar/GVN.hllvm.src/include/llvm/Transforms/Scalar/GVN.h
The file was modified/llvm/trunk/lib/Transforms/Scalar/GVN.cppllvm.src/lib/Transforms/Scalar/GVN.cpp
The file was modified/llvm/trunk/test/Transforms/GVN/PRE/phi-translate-2.llllvm.src/test/Transforms/GVN/PRE/phi-translate-2.ll
Revision 310420 by nlopes:
BasicAA: assert on another case where aliasGEP shouldn't get a PartialAlias response
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/BasicAliasAnalysis.cppllvm.src/lib/Analysis/BasicAliasAnalysis.cpp
Revision 310419 by rnk:
[winasan] Fix hotpatching ntdll!strcpy for Win10 creators edition

The 9 byte nop is a suffix of the 10 byte nop, and we need at most 6
bytes.

ntdll's version of strcpy is written in assembly and is very clever.
strcat tail calls strcpy but with a slightly different arrangement of
argument registers at an alternate entry point. It looks like this:

  ntdll!strcpy:
  00007ffd`64e8a7a0 4c8bd9          mov     r11,rcx
  ntdll!__entry_from_strcat_in_strcpy:
  00007ffd`64e8a7a3 482bca          sub     rcx,rdx
  00007ffd`64e8a7a6 f6c207          test    dl,7

If we overwrite more than two bytes in our interceptor, that label will
no longer be a valid instruction boundary.

By recognizing the 9 byte nop, we use the two byte backwards branch to
start our trampoline, avoiding this issue.

Fixes https://github.com/google/sanitizers/issues/829

Patch by David Major
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/interception/interception_win.cccompiler-rt.src/lib/interception/interception_win.cc
Revision 310418 by atanasyan:
[mips] Enable `long_call/short_call` attributes on MIPS64

This change enables `long_call/short_call/far/near` attributes on
MIPS64 targets.

Differential revision: https://reviews.llvm.org/D36208
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/Attr.tdclang.src/include/clang/Basic/Attr.td
The file was modified/cfe/trunk/test/CodeGen/long-call-attr.cclang.src/test/CodeGen/long-call-attr.c
The file was modified/cfe/trunk/test/Sema/attr-long-call.cclang.src/test/Sema/attr-long-call.c
Revision 310416 by dehao:
Make ICP uses PSI to check for hotness.

Summary: Currently, ICP checks the count against a fixed value to see if it is hot enough to be promoted. This does not work for SamplePGO because sampled count may be much smaller. This patch uses PSI to check if the count is hot enough to be promoted.

Reviewers: davidxl, tejohnson, eraman

Reviewed By: davidxl

Subscribers: sanjoy, llvm-commits, mehdi_amini

Differential Revision: https://reviews.llvm.org/D36341
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/IndirectCallPromotionAnalysis.cppllvm.src/lib/Analysis/IndirectCallPromotionAnalysis.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/IndirectCallPromotion.cppllvm.src/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
The file was modified/llvm/trunk/test/Other/new-pm-lto-defaults.llllvm.src/test/Other/new-pm-lto-defaults.ll
The file was modified/llvm/trunk/test/Transforms/PGOProfile/icp_invoke.llllvm.src/test/Transforms/PGOProfile/icp_invoke.ll
The file was modified/llvm/trunk/test/Transforms/PGOProfile/indirect_call_promotion.llllvm.src/test/Transforms/PGOProfile/indirect_call_promotion.ll
The file was modified/llvm/trunk/test/Transforms/PGOProfile/thinlto_indirect_call_promotion.llllvm.src/test/Transforms/PGOProfile/thinlto_indirect_call_promotion.ll
The file was modified/llvm/trunk/test/Transforms/PGOProfile/thinlto_samplepgo_icp.llllvm.src/test/Transforms/PGOProfile/thinlto_samplepgo_icp.ll
Revision 310414 by kamil:
Add NetBSD support in asan_malloc_linux.cc

Summary:
Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, kcc, fjricci, vitalybuka, filcab

Reviewed By: fjricci

Subscribers: llvm-commits, kubamracek, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D36376
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/asan/asan_malloc_linux.cccompiler-rt.src/lib/asan/asan_malloc_linux.cc
Revision 310413 by kamil:
Add NetBSD support in asan_symbolize.py

Summary:
Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, filcab, vitalybuka, kcc, fjricci

Reviewed By: fjricci

Subscribers: kubamracek, llvm-commits, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D36484
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.pycompiler-rt.src/lib/asan/scripts/asan_symbolize.py
Revision 310412 by kamil:
Enable ubsan on NetBSD

Summary:
Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, vitalybuka, kcc, filcab, fjricci

Reviewed By: fjricci

Subscribers: srhines, kubamracek, mgorny, llvm-commits, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D36483
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/cmake/config-ix.cmakecompiler-rt.src/cmake/config-ix.cmake
The file was modified/compiler-rt/trunk/lib/ubsan/ubsan_platform.hcompiler-rt.src/lib/ubsan/ubsan_platform.h
The file was modified/compiler-rt/trunk/test/ubsan/TestCases/Float/cast-overflow.cppcompiler-rt.src/test/ubsan/TestCases/Float/cast-overflow.cpp
The file was modified/compiler-rt/trunk/test/ubsan/lit.common.cfgcompiler-rt.src/test/ubsan/lit.common.cfg
Revision 310411 by kamil:
Reuse sanitizer_linux for NetBSD

Summary:
Follow FreeBSD and reuse sanitizer_linux for NetBSD.

Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, kcc, filcab, vitalybuka, fjricci, dvyukov

Reviewed By: fjricci

Subscribers: dvyukov, emaste, kubamracek, llvm-commits, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D36325
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cccompiler-rt.src/lib/sanitizer_common/sanitizer_linux.cc
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.hcompiler-rt.src/lib/sanitizer_common/sanitizer_linux.h
Revision 310410 by rnk:
[codeview] Emit nested enums and typedefs from classes

Previously we limited ourselves to only emitting nested classes, but we
need other kinds of types as well.

This fixes the Visual Studio STL visualizers, so that users can
visualize std::string and other objects.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGDebugInfo.cppclang.src/lib/CodeGen/CGDebugInfo.cpp
The file was modified/cfe/trunk/lib/CodeGen/CGDebugInfo.hclang.src/lib/CodeGen/CGDebugInfo.h
The file was added/cfe/trunk/test/CodeGenCXX/debug-info-codeview-nested-types.cppclang.src/test/CodeGenCXX/debug-info-codeview-nested-types.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cppllvm.src/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was added/llvm/trunk/test/DebugInfo/COFF/nested-types.llllvm.src/test/DebugInfo/COFF/nested-types.ll
Revision 310409 by kcc:
[sanitizer-coverage] -fsanitize-coverage=bb,inline-8bit-counters
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/SanitizerArgs.cppclang.src/lib/Driver/SanitizerArgs.cpp
The file was modified/cfe/trunk/test/Driver/fsanitize-coverage.cclang.src/test/Driver/fsanitize-coverage.c
Revision 310408 by morehouse:
Integrate Kostya's clang-proto-fuzzer with LLVM.

Summary:
The clang-proto-fuzzer models a subset of C++ as a protobuf and
uses libprotobuf-mutator to generate interesting mutations of C++
programs.  Clang-proto-fuzzer has already found several bugs in
Clang (e.g., https://bugs.llvm.org/show_bug.cgi?id=33747,
https://bugs.llvm.org/show_bug.cgi?id=33749).

As with clang-fuzzer, clang-proto-fuzzer requires the following
cmake flags:
- CMAKE_C_COMPILER=clang
- CMAKE_CXX_COMPILER=clang++
- LLVM_USE_SANITIZE_COVERAGE=YES  // needed for libFuzzer
- LLVM_USE_SANITIZER=Address  // needed for libFuzzer

In addition, clang-proto-fuzzer requires:
- CLANG_ENABLE_PROTO_FUZZER=ON

clang-proto-fuzzer also requires the following dependencies:
- binutils  // needed for libprotobuf-mutator
- liblzma-dev  // needed for libprotobuf-mutator
- libz-dev  // needed for libprotobuf-mutator
- docbook2x  // needed for libprotobuf-mutator
- Recent version of protobuf [3.3.0 is known to work]

A working version of libprotobuf-mutator will automatically be
downloaded and built as an external project.

Implementation of clang-proto-fuzzer provided by Kostya
Serebryany.

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

Reviewers: kcc, vitalybuka, bogner

Reviewed By: kcc, vitalybuka

Subscribers: thakis, mgorny, cfe-commits

Differential Revision: https://reviews.llvm.org/D36324
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/CMakeLists.txtclang.src/CMakeLists.txt
The file was added/cfe/trunk/cmake/modules/ProtobufMutator.cmakeclang.src/cmake/modules/ProtobufMutator.cmake
The file was modified/cfe/trunk/tools/clang-fuzzer/CMakeLists.txtclang.src/tools/clang-fuzzer/CMakeLists.txt
The file was modified/cfe/trunk/tools/clang-fuzzer/ClangFuzzer.cppclang.src/tools/clang-fuzzer/ClangFuzzer.cpp
The file was added/cfe/trunk/tools/clang-fuzzer/ExampleClangProtoFuzzer.cppclang.src/tools/clang-fuzzer/ExampleClangProtoFuzzer.cpp
The file was added/cfe/trunk/tools/clang-fuzzer/README.txtclang.src/tools/clang-fuzzer/README.txt
The file was added/cfe/trunk/tools/clang-fuzzer/cxx_proto.protoclang.src/tools/clang-fuzzer/cxx_proto.proto
The file was added/cfe/trunk/tools/clang-fuzzer/handle-cxxclang.src/tools/clang-fuzzer/handle-cxx
The file was added/cfe/trunk/tools/clang-fuzzer/handle-cxx/CMakeLists.txtclang.src/tools/clang-fuzzer/handle-cxx/CMakeLists.txt
The file was added/cfe/trunk/tools/clang-fuzzer/handle-cxx/handle_cxx.cppclang.src/tools/clang-fuzzer/handle-cxx/handle_cxx.cpp
The file was added/cfe/trunk/tools/clang-fuzzer/handle-cxx/handle_cxx.hclang.src/tools/clang-fuzzer/handle-cxx/handle_cxx.h
The file was added/cfe/trunk/tools/clang-fuzzer/proto-to-cxxclang.src/tools/clang-fuzzer/proto-to-cxx
The file was added/cfe/trunk/tools/clang-fuzzer/proto-to-cxx/CMakeLists.txtclang.src/tools/clang-fuzzer/proto-to-cxx/CMakeLists.txt
The file was added/cfe/trunk/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.cppclang.src/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.cpp
The file was added/cfe/trunk/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.hclang.src/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.h
The file was added/cfe/trunk/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx_main.cppclang.src/tools/clang-fuzzer/proto-to-cxx/proto_to_cxx_main.cpp
Revision 310407 by ctopper:
[InstCombine] Support pulling left shifts through a subtract with constant LHS

We already support pulling through an add with constant RHS. We can do the same for subtract.

Differential Revision: https://reviews.llvm.org/D36443
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineShifts.cppllvm.src/lib/Transforms/InstCombine/InstCombineShifts.cpp
The file was modified/llvm/trunk/test/Transforms/InstCombine/sub.llllvm.src/test/Transforms/InstCombine/sub.ll
Revision 310406 by efriedma:
[coverage] Special-case calls to noreturn functions.

The code after a noreturn call doesn't execute.

The pattern in the testcase is pretty common in LLVM (a switch with
a default case that calls llvm_unreachable).

The original version of this patch was reverted in r309995 due to a
crash. This version includes a fix for that crash (testcase in
test/CoverageMapping/md.cpp).

Differential Revision: https://reviews.llvm.org/D36250
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CoverageMappingGen.cppclang.src/lib/CodeGen/CoverageMappingGen.cpp
The file was modified/cfe/trunk/test/CoverageMapping/md.cppclang.src/test/CoverageMapping/md.cpp
The file was modified/cfe/trunk/test/CoverageMapping/switch.cppclang.src/test/CoverageMapping/switch.cpp
Revision 310405 by niravd:
[DAG] Introduce peekThroughBitcast function. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 310404 by niravd:
[DAG] Update comments. NFC.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Revision 310403 by jmgao:
Thread Safety Analysis: warn on nonsensical attributes.

Add warnings in cases where an implicit `this` argument is expected to
attributes because either `this` doesn't exist because the attribute is
on a free function, or because `this` is on a type that doesn't have a
corresponding capability/lockable/scoped_lockable attribute.

Reviewers: delesley, aaron.ballman

Differential Revision: https://reviews.llvm.org/D36237
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.tdclang.src/include/clang/Basic/DiagnosticSemaKinds.td
The file was modified/cfe/trunk/lib/Sema/SemaDeclAttr.cppclang.src/lib/Sema/SemaDeclAttr.cpp
The file was modified/cfe/trunk/test/Sema/attr-capabilities.cclang.src/test/Sema/attr-capabilities.c
The file was modified/cfe/trunk/test/SemaCXX/warn-thread-safety-parsing.cppclang.src/test/SemaCXX/warn-thread-safety-parsing.cpp
Revision 310402 by jmgao:
Reland "Thread Safety Analysis: fix assert_capability."

Delete the test that was broken by rL309725, and add it back in a
follow up commit. Also, improve the tests a bit.

Reviewers: delesley, aaron.ballman

Differential Revision: https://reviews.llvm.org/D36237
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/Attr.tdclang.src/include/clang/Basic/Attr.td
The file was modified/cfe/trunk/lib/Analysis/ThreadSafety.cppclang.src/lib/Analysis/ThreadSafety.cpp
The file was modified/cfe/trunk/lib/Sema/SemaDeclAttr.cppclang.src/lib/Sema/SemaDeclAttr.cpp
The file was modified/cfe/trunk/test/Sema/attr-capabilities.cclang.src/test/Sema/attr-capabilities.c
The file was modified/cfe/trunk/test/SemaCXX/warn-thread-safety-analysis.cppclang.src/test/SemaCXX/warn-thread-safety-analysis.cpp