1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/unittests/Analysis
Serguei Katkov 0e56998fde [SCEV] Be careful with nuw/nsw/exact in InsertBinop
InsertBinop tries to find an appropriate instruction instead of
creating a new instruction. When it checks whether instruction is
the same as we need to create it ignores nuw/nsw/exact flags.

It leads to invalid behavior when poison instruction can be used
when it was not expected. Specifically, for example Expander
expands the SCEV built for instruction
%a = add i32 %v, 1
It is possible that InsertBinop can find an instruction
% b = add nuw nsw i32 %v, 1
and will use it instead of version w/o nuw nsw.
It is incorrect.

The patch conservatively ignores all instructions with any of
poison flags installed.

Reviewers: sanjoy, mkazantsev, sebpop, jbhateja
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D41576

llvm-svn: 321475
2017-12-27 08:26:22 +00:00
..
AliasAnalysisTest.cpp [ModRefInfo] Make enum ModRefInfo an enum class [NFC]. 2017-12-07 22:41:34 +00:00
AliasSetTrackerTest.cpp [AST] Fix a bug in aliasesUnknownInst. Make sure we are comparing the unknown instructions in the alias set and the instruction interested in. 2017-06-25 12:55:11 +00:00
BlockFrequencyInfoTest.cpp Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
BranchProbabilityInfoTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
CallGraphTest.cpp [GraphTraits] Replace all NodeType usage with NodeRef 2016-08-22 21:09:30 +00:00
CFGTest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
CGSCCPassManagerTest.cpp [PM] Switch the CGSCC debug messages to use the standard LLVM debug 2017-08-11 05:47:13 +00:00
CMakeLists.txt [SparsePropagation] Enable interprocedural analysis 2017-10-16 17:44:17 +00:00
GlobalsModRefTest.cpp GlobalsModRef: Ensure optnone+readonly/readnone attributes are respected 2017-06-07 21:37:39 +00:00
LazyCallGraphTest.cpp [LCG] Switch one of the update methods for the LazyCallGraph to support 2017-08-09 09:05:27 +00:00
LoopInfoTest.cpp [LoopInfo] Add helper methods to compute two useful orderings of the 2017-01-20 02:41:20 +00:00
MemoryBuiltinsTest.cpp Don't consider allocsize functions to be allocation functions. 2016-12-23 01:18:09 +00:00
MemorySSA.cpp [mssa] Fix case when there is no definition in a block prior to an inserted use. 2017-06-07 16:46:53 +00:00
OrderedBasicBlockTest.cpp [OrderedBasicBlock] Return false for comesBefore(A, A) 2017-06-02 13:10:31 +00:00
ProfileSummaryInfoTest.cpp Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
ScalarEvolutionTest.cpp [SCEV] Be careful with nuw/nsw/exact in InsertBinop 2017-12-27 08:26:22 +00:00
SparsePropagation.cpp [SparsePropagation] Enable interprocedural analysis 2017-10-16 17:44:17 +00:00
TargetLibraryInfoTest.cpp [SimplifyLibCalls] Inline calls to cabs when it's safe to do so 2017-12-16 01:26:25 +00:00
TBAATest.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
UnrollAnalyzer.cpp Re-sort #include lines for unittests. This uses a slightly modified 2017-06-06 11:06:56 +00:00
ValueLatticeTest.cpp [LVI] Move LVILatticeVal class to separate header file (NFC). 2017-09-28 11:09:22 +00:00
ValueTrackingTest.cpp Infer lowest bits of an integer Multiply when the low bits of the operands are known 2017-12-09 23:25:57 +00:00