[llvm-branch-commits] [llvm-branch] r277382 - Merging r277114:
Author: hans Date: Mon Aug 1 15:30:12 2016 New Revision: 277382 URL: http://llvm.org/viewvc/llvm-project?rev=277382&view=rev Log: Merging r277114: r277114 | majnemer | 2016-07-28 22:39:21 -0700 (Thu, 28 Jul 2016) | 6 lines [EarlyCSE] Correctly handle simplified, but live, instructions Some instructions may have their uses replaced with a symbolic constant. However, the instruction may still have side effects which percludes it from being removed from the function. EarlyCSE treated such an instruction as if it were removed, resulting in PR28763. Modified: llvm/branches/release_39/ (props changed) llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll Propchange: llvm/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Aug 1 15:30:12 2016 @@ -1,3 +1,3 @@ /llvm/branches/Apple/Pertwee:110850,110961 /llvm/branches/type-system-rewrite:133420-134817 -/llvm/trunk:155241,275868-275870,275879,275898,275928,275935,275946,275978,275981,276015,276077,276109,276119,276181,276209,276236-276237,276358,276364,276368,276389,276435,276438,276479,276510,276740,276956,276980,277135 +/llvm/trunk:155241,275868-275870,275879,275898,275928,275935,275946,275978,275981,276015,276077,276109,276119,276181,276209,276236-276237,276358,276364,276368,276389,276435,276438,276479,276510,276740,276956,276980,277114,277135 Modified: llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp?rev=277382&r1=277381&r2=277382&view=diff == --- llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp (original) +++ llvm/branches/release_39/lib/Transforms/Scalar/EarlyCSE.cpp Mon Aug 1 15:30:12 2016 @@ -582,6 +582,7 @@ bool EarlyCSE::processNode(DomTreeNode * // its simpler value. if (Value *V = SimplifyInstruction(Inst, DL, &TLI, &DT, &AC)) { DEBUG(dbgs() << "EarlyCSE Simplify: " << *Inst << " to: " << *V << '\n'); + bool Killed = false; if (!Inst->use_empty()) { Inst->replaceAllUsesWith(V); Changed = true; @@ -589,11 +590,12 @@ bool EarlyCSE::processNode(DomTreeNode * if (isInstructionTriviallyDead(Inst, &TLI)) { Inst->eraseFromParent(); Changed = true; +Killed = true; } - if (Changed) { + if (Changed) ++NumSimplify; + if (Killed) continue; - } } // If this is a simple instruction that we can value number, process it. Modified: llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll?rev=277382&r1=277381&r2=277382&view=diff == --- llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll (original) +++ llvm/branches/release_39/test/Transforms/EarlyCSE/basic.ll Mon Aug 1 15:30:12 2016 @@ -276,3 +276,17 @@ define void @dse_neg2(i32 *%P) { ret void } +@c = external global i32, align 4 +declare i32 @reads_c(i32 returned) +define void @pr28763() { +entry: +; CHECK-LABEL: @pr28763( +; CHECK: store i32 0, i32* @c, align 4 +; CHECK: call i32 @reads_c(i32 0) +; CHECK: store i32 2, i32* @c, align 4 + %load = load i32, i32* @c, align 4 + store i32 0, i32* @c, align 4 + %call = call i32 @reads_c(i32 0) + store i32 2, i32* @c, align 4 + ret void +} ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [cfe-branch] r277384 - Merging r277221:
Author: hans Date: Mon Aug 1 15:33:18 2016 New Revision: 277384 URL: http://llvm.org/viewvc/llvm-project?rev=277384&view=rev Log: Merging r277221: r277221 | echristo | 2016-07-29 15:11:11 -0700 (Fri, 29 Jul 2016) | 3 lines Remove unused variable. Fixes PR28761. Modified: cfe/branches/release_39/ (props changed) cfe/branches/release_39/lib/Headers/avx512fintrin.h Propchange: cfe/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Aug 1 15:33:18 2016 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141 +/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_39/lib/Headers/avx512fintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Headers/avx512fintrin.h?rev=277384&r1=277383&r2=277384&view=diff == --- cfe/branches/release_39/lib/Headers/avx512fintrin.h (original) +++ cfe/branches/release_39/lib/Headers/avx512fintrin.h Mon Aug 1 15:33:18 2016 @@ -7484,7 +7484,6 @@ _mm512_mask_cvtsepi64_storeu_epi8 (void static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_cvtsepi64_epi32 (__m512i __A) { - __v8si __O; return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, (__v8si) _mm256_undefined_si256 (), (__mmask8) -1); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang-tools-extra-branch] r277385 - Merging r277097:
Author: hans Date: Mon Aug 1 15:35:50 2016 New Revision: 277385 URL: http://llvm.org/viewvc/llvm-project?rev=277385&view=rev Log: Merging r277097: r277097 | prazek | 2016-07-28 19:10:23 -0700 (Thu, 28 Jul 2016) | 5 lines [clang-tidy] Fixes to modernize-use-emplace Not everything is valid, but it should works for 99.8% cases https://reviews.llvm.org/D22208 Modified: clang-tools-extra/branches/release_39/ (props changed) clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.h clang-tools-extra/branches/release_39/clang-tidy/utils/Matchers.h clang-tools-extra/branches/release_39/docs/clang-tidy/checks/modernize-use-emplace.rst clang-tools-extra/branches/release_39/test/clang-tidy/modernize-use-emplace.cpp Propchange: clang-tools-extra/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Aug 1 15:35:50 2016 @@ -1 +1 @@ -/clang-tools-extra/trunk:275943 +/clang-tools-extra/trunk:275943,277097 Modified: clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp?rev=277385&r1=277384&r2=277385&view=diff == --- clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp (original) +++ clang-tools-extra/branches/release_39/clang-tidy/modernize/UseEmplaceCheck.cpp Mon Aug 1 15:35:50 2016 @@ -8,14 +8,25 @@ //===--===// #include "UseEmplaceCheck.h" -#include "../utils/Matchers.h" - +#include "../utils/OptionsUtils.h" using namespace clang::ast_matchers; namespace clang { namespace tidy { namespace modernize { +static const auto DefaultContainersWithPushBack = +"::std::vector; ::std::list; ::std::deque"; +static const auto DefaultSmartPointers = +"::std::shared_ptr; ::std::unique_ptr; ::std::auto_ptr; ::std::weak_ptr"; + +UseEmplaceCheck::UseEmplaceCheck(StringRef Name, ClangTidyContext *Context) +: ClangTidyCheck(Name, Context), + ContainersWithPushBack(utils::options::parseStringList(Options.get( + "ContainersWithPushBack", DefaultContainersWithPushBack))), + SmartPointers(utils::options::parseStringList( + Options.get("SmartPointers", DefaultSmartPointers))) {} + void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus11) return; @@ -31,40 +42,51 @@ void UseEmplaceCheck::registerMatchers(M // + match for make_pair calls. auto callPushBack = cxxMemberCallExpr( hasDeclaration(functionDecl(hasName("push_back"))), - on(hasType(cxxRecordDecl(hasAnyName("std::vector", "llvm::SmallVector", - "std::list", "std::deque"); + on(hasType(cxxRecordDecl(hasAnyName(SmallVector( + ContainersWithPushBack.begin(), ContainersWithPushBack.end())); // We can't replace push_backs of smart pointer because // if emplacement fails (f.e. bad_alloc in vector) we will have leak of // passed pointer because smart pointer won't be constructed // (and destructed) as in push_back case. - auto isCtorOfSmartPtr = hasDeclaration(cxxConstructorDecl( - ofClass(hasAnyName("std::shared_ptr", "std::unique_ptr", "std::auto_ptr", - "std::weak_ptr"; + auto isCtorOfSmartPtr = hasDeclaration(cxxConstructorDecl(ofClass(hasAnyName( + SmallVector(SmartPointers.begin(), SmartPointers.end()); // Bitfields binds only to consts and emplace_back take it by universal ref. - auto bitFieldAsArgument = hasAnyArgument(ignoringParenImpCasts( - memberExpr(hasDeclaration(fieldDecl(matchers::isBitfield()); + auto bitFieldAsArgument = hasAnyArgument( + ignoringImplicit(memberExpr(hasDeclaration(fieldDecl(isBitField()); + + // Initializer list can't be passed to universal reference. + auto initializerListAsArgument = hasAnyArgument( + ignoringImplicit(cxxConstructExpr(isListInitialization(; // We could have leak of resource. - auto newExprAsArgument = hasAnyArgument(ignoringParenImpCasts(cxxNewExpr())); + auto newExprAsArgument = hasAnyArgument(ignoringImplicit(cxxNewExpr())); + // We would call another constructor. auto constructingDerived = hasParent(implicitCastExpr(hasCastKind(CastKind::CK_DerivedToBase))); - auto hasInitList = has(ignoringParenImpCasts(initListExpr())); + // emplace_back can't access private constructor. + auto isPrivateCtor = hasDeclaration(cxxConstructorDecl(isPrivate())); + + auto hasInit
[llvm-branch-commits] [compiler-rt-branch] r277423 - Merging r277297:
Author: dim Date: Tue Aug 2 01:42:41 2016 New Revision: 277423 URL: http://llvm.org/viewvc/llvm-project?rev=277423&view=rev Log: Merging r277297: r277297 | dim | 2016-07-31 21:27:46 +0200 (Sun, 31 Jul 2016) | 21 lines XFAIL one sanitizer symbolizer test for FreeBSD Summary: Due to a QoI issuse in FreeBSD's libcxxrt-based demangler, one sanitizer symbolizer test consistently appears to fail: Value of: DemangleSwiftAndCXX("foo") Actual: "float" Expected: "foo" This is because libcxxrt's __cxa_demangle() incorrectly demangles the "foo" identifier to "float". It should return an error instead. For now, XFAIL this particular test for FreeBSD, until we can fix libcxxrt properly (which might take some time to coordinate with upstream). Reviewers: rnk, zaks.anna, emaste Subscribers: emaste, llvm-commits, kubabrecka Differential Revision: https://reviews.llvm.org/D23001 Modified: compiler-rt/branches/release_39/ (props changed) compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc Propchange: compiler-rt/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Aug 2 01:42:41 2016 @@ -1 +1 @@ -/compiler-rt/trunk:275946,275948 +/compiler-rt/trunk:275946,275948,277297 Modified: compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc URL: http://llvm.org/viewvc/llvm-project/compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc?rev=277423&r1=277422&r2=277423&view=diff == --- compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc (original) +++ compiler-rt/branches/release_39/lib/sanitizer_common/tests/sanitizer_symbolizer_test.cc Tue Aug 2 01:42:41 2016 @@ -62,7 +62,9 @@ TEST(Symbolizer, DemangleSwiftAndCXX) { EXPECT_STREQ("_TtSd", DemangleSwiftAndCXX("_TtSd")); // Check that the rest demangles properly. EXPECT_STREQ("f1(char*, int)", DemangleSwiftAndCXX("_Z2f1Pci")); +#if !SANITIZER_FREEBSD // QoI issue with libcxxrt on FreeBSD EXPECT_STREQ("foo", DemangleSwiftAndCXX("foo")); +#endif EXPECT_STREQ("", DemangleSwiftAndCXX("")); } #endif ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt-branch] r277424 - Merging r277300:
Author: dim Date: Tue Aug 2 01:44:37 2016 New Revision: 277424 URL: http://llvm.org/viewvc/llvm-project?rev=277424&view=rev Log: Merging r277300: r277300 | dim | 2016-07-31 22:16:59 +0200 (Sun, 31 Jul 2016) | 5 lines Fix ASan alloca_constant_size.cc test on FreeBSD. On FreeBSD does not exist: alloca(3) is defined in instead. Modified: compiler-rt/branches/release_39/ (props changed) compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc Propchange: compiler-rt/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Aug 2 01:44:37 2016 @@ -1 +1 @@ -/compiler-rt/trunk:275946,275948,277297 +/compiler-rt/trunk:275946,275948,277297,277300 Modified: compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc URL: http://llvm.org/viewvc/llvm-project/compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc?rev=277424&r1=277423&r2=277424&view=diff == --- compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc (original) +++ compiler-rt/branches/release_39/test/asan/TestCases/alloca_constant_size.cc Tue Aug 2 01:44:37 2016 @@ -10,6 +10,8 @@ // MSVC provides _alloca instead of alloca. #if defined(_MSC_VER) && !defined(alloca) # define alloca _alloca +#elif defined(__FreeBSD__) +#include #else #include #endif ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [cfe-branch] r277425 - Merging r277307:
Author: dim Date: Tue Aug 2 01:46:09 2016 New Revision: 277425 URL: http://llvm.org/viewvc/llvm-project?rev=277425&view=rev Log: Merging r277307: r277307 | dim | 2016-07-31 22:23:23 +0200 (Sun, 31 Jul 2016) | 23 lines Add more gcc compatibility names to clang's cpuid.h Summary: Some cpuid bit defines are named slightly different from how gcc's cpuid.h calls them. Define a few more compatibility names to appease software built for gcc: * `bit_PCLMUL` alias of `bit_PCLMULQDQ` * `bit_SSE4_1` alias of `bit_SSE41` * `bit_SSE4_2` alias of `bit_SSE42` * `bit_AES` alias of `bit_AESNI` * `bit_CMPXCHG8B` alias of `bit_CX8` While here, add the misssing 29th bit, `bit_F16C` (which is how gcc calls this bit). Reviewers: joerg, rsmith Subscribers: bruno, cfe-commits Differential Revision: https://reviews.llvm.org/D22010 Modified: cfe/branches/release_39/ (props changed) cfe/branches/release_39/lib/Headers/cpuid.h Propchange: cfe/branches/release_39/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Aug 2 01:46:09 2016 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221 +/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979,276983,277138,277141,277221,277307 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_39/lib/Headers/cpuid.h URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Headers/cpuid.h?rev=277425&r1=277424&r2=277425&view=diff == --- cfe/branches/release_39/lib/Headers/cpuid.h (original) +++ cfe/branches/release_39/lib/Headers/cpuid.h Tue Aug 2 01:46:09 2016 @@ -82,6 +82,7 @@ /* Features in %ecx for level 1 */ #define bit_SSE30x0001 #define bit_PCLMULQDQ 0x0002 +#define bit_PCLMUL bit_PCLMULQDQ /* for gcc compat */ #define bit_DTES64 0x0004 #define bit_MONITOR 0x0008 #define bit_DSCPL 0x0010 @@ -98,15 +99,19 @@ #define bit_PCID0x0002 #define bit_DCA 0x0004 #define bit_SSE41 0x0008 +#define bit_SSE4_1 bit_SSE41 /* for gcc compat */ #define bit_SSE42 0x0010 +#define bit_SSE4_2 bit_SSE42 /* for gcc compat */ #define bit_x2APIC 0x0020 #define bit_MOVBE 0x0040 #define bit_POPCNT 0x0080 #define bit_TSCDeadline 0x0100 #define bit_AESNI 0x0200 +#define bit_AES bit_AESNI /* for gcc compat */ #define bit_XSAVE 0x0400 #define bit_OSXSAVE 0x0800 #define bit_AVX 0x1000 +#define bit_F16C0x2000 #define bit_RDRND 0x4000 /* Features in %edx for level 1 */ @@ -119,6 +124,7 @@ #define bit_PAE 0x0040 #define bit_MCE 0x0080 #define bit_CX8 0x0100 +#define bit_CMPXCHG8B bit_CX8 /* for gcc compat */ #define bit_APIC0x0200 #define bit_SEP 0x0800 #define bit_MTRR0x1000 @@ -133,7 +139,7 @@ #define bit_ACPI0x0040 #define bit_MMX 0x0080 #define bit_FXSR0x0100 -#define bit_FXSAVE bit_FXSR/* for gcc compat */ +#define bit_FXSAVE bit_FXSR/* for gcc compat */ #define bit_SSE 0x0200 #define bit_SSE20x0400 #define bit_SS 0x0800 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits