Changes
Summary
- [NFC][PowerPC] Use -check-prefixes to simplify the check in code-align.ll Summary: When checking the same output, we can use the `-check-prefixes` to simplify the check. For example, if we want to check below output. ``` ; GENERIC-LABEL: .globl foo ; BASIC-LABEL: .globl foo ; PWR-LABEL: .globl foo ; GENERIC: .p2align 2 ; BASIC: .p2align 4 ; PWR: .p2align 4 ; GENERIC: @foo ; BASIC: @foo ; PWR: @foo ``` If we use `-check-prefixes` ``` ... -check-prefixes=CHECK,GENERAL ... -check-prefixes=CHECK,BASIC ... -check-prefixes=CHECK,PWR ``` Above check can be simplify to: ``` ; CHECK-LABEL: .globl foo ; GENERIC: .p2align 2 ; BASIC: .p2align 4 ; PWR: .p2align 4 ; CHECK: @foo ``` Reviewed By: hfinkel Differential Revision: https://reviews.llvm.org/D61227
- [DAGCombiner] Do not generate ISD::ADDE node if adde is not legal for the target when combine ISD::TRUNC node Do not combine (trunc adde(X, Y, Carry)) into (adde trunc(X), trunc(Y), Carry), if adde is not legal for the target. Even it's at type-legalize phase. Because adde is special and will not be legalized at operation-legalize phase later. This fixes: PR40922 https://bugs.llvm.org/show_bug.cgi?id=40922 Differential Revision: https://reviews.llvm.org//D60854
- [ORC] Fix an ambiguous call in a unit test.
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /llvm/trunk/test/CodeGen/PowerPC/code-align.ll | trunk/test/CodeGen/PowerPC/code-align.ll |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
![]() | /llvm/trunk/test/CodeGen/PowerPC/pr39815.ll | trunk/test/CodeGen/PowerPC/pr39815.ll |
![]() | /llvm/trunk/test/CodeGen/PowerPC/pr40922.ll | trunk/test/CodeGen/PowerPC/pr40922.ll |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp | trunk/unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp |
Summary
- [analyzer] Treat functions without run-time branches as "small". Currently we always inline functions that have no branches, i.e. have exactly three CFG blocks: ENTRY, some code, EXIT. This makes sense because when there are no branches, it means that there's no exponential complexity introduced by inlining such function. Such functions also don't trigger various fundamental problems with our inlining mechanism, such as the problem of inlined defensive checks. Sometimes the CFG may contain more blocks, but in practice it still has linear structure because all directions (except, at most, one) of all branches turned out to be unreachable. When this happens, still treat the function as "small". This is useful, in particular, for dealing with C++17 if constexpr. Differential Revision: https://reviews.llvm.org/D61051
- [analyzer] SmartPtrModeling: Fix a null dereference. Don't crash when trying to model a call in which the callee is unknown in compile time, eg. a pointer-to-member call. Differential Revision: https://reviews.llvm.org/D61285
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /cfe/trunk/include/clang/Analysis/CFG.h | trunk/include/clang/Analysis/CFG.h |
![]() | /cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h | trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h |
![]() | /cfe/trunk/lib/Analysis/CFG.cpp | trunk/lib/Analysis/CFG.cpp |
![]() | /cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp | trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp |
![]() | /cfe/trunk/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp | trunk/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp |
![]() | /cfe/trunk/test/Analysis/inline-if-constexpr.cpp | trunk/test/Analysis/inline-if-constexpr.cpp |
![]() | /cfe/trunk/unittests/Analysis/CFGTest.cpp | trunk/unittests/Analysis/CFGTest.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /cfe/trunk/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp | trunk/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp |
![]() | /cfe/trunk/test/Analysis/smart-ptr.cpp | trunk/test/Analysis/smart-ptr.cpp |