llvm-6502/lib
Juergen Ributzka 5cfc91c9a5 [Constant Hoisting] Fix multiple entries for the same basic block in PHI nodes.
A PHI node usually has only one value/basic block pair per incoming basic block.
In the case of a switch statement it is possible that a following PHI node may
have more than one such pair per incoming basic block. E.g.:
%0 = phi i64 [ 123456, %case2 ], [ 654321, %Entry ], [ 654321, %Entry ]
This is valid and the verfier doesn't complain, because both values are the
same.

Constant hoisting materializes the constant for each operand separately and the
value is still the same, but the variable names have changed. As a result the
verfier can't recognize anymore that they are the same value and complains.

This fix adds special update code for PHI node in constant hoisting to prevent
this corner case.

This fixes <rdar://problem/16394449>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204537 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-22 01:49:27 +00:00
..
Analysis [Constant Hoisting] Make the constant materialization cost operand dependent 2014-03-21 06:04:45 +00:00
AsmParser Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
Bitcode Support: Make error_category's constructor public 2014-03-15 04:05:59 +00:00
CodeGen [DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat' 2014-03-22 01:47:22 +00:00
DebugInfo Make some assertions on constant expressions static. 2014-03-15 18:47:07 +00:00
ExecutionEngine [RuntimeDyld] Fix comment for previous commit (r204439) 2014-03-21 20:38:46 +00:00
IR Fix comment (PR19188) 2014-03-19 18:41:38 +00:00
IRReader Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker [Layering] Sink Linker.h into a Linker subdirectory to make it 2014-03-06 03:42:23 +00:00
LTO Remove the linker_private and linker_private_weak linkages. 2014-03-13 23:18:37 +00:00
MC Fix the value computation in 2014-03-21 22:00:29 +00:00
Object [RuntimeDyld] Allow processRelocationRef to process more than one relocation entry at a time. 2014-03-21 07:26:41 +00:00
Option
ProfileData InstrProf: Move constructor to the header 2014-03-21 20:59:19 +00:00
Support [Support] Follow up to r204426, for LockFileManager, make the given path absolute so relative paths are properly handled in both Windows and Unix. 2014-03-21 21:45:07 +00:00
TableGen Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
Target [AArch64] Add SchedRW lists to NEON instructions. 2014-03-21 19:34:41 +00:00
Transforms [Constant Hoisting] Fix multiple entries for the same basic block in PHI nodes. 2014-03-22 01:49:27 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00