llvm-6502/lib/VMCore
Joel Jones 9df72a93ef Fix a problem with incomplete equality testing of PHINodes in
Instruction::IsIdenticalToWhenDefined.

This manifested itself when inlining two calls to the same function.  The 
inlined function had a switch statement that returned one of a set of 
global variables.  Without this modification, the two phi instructions that 
chose values from the branches of the switch instruction inlined from the 
callee were considered equivalent and jump-threading replaced a load for the 
first switch value with a phi selecting from the second switch, thereby 
producing incorrect code.

This patch has been tested with "make check-all", "lnt runteste nt", and 
llvm self-hosted, and on the original program that had this problem, 
wireshark.

<rdar://problem/11025519>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156548 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-10 15:59:41 +00:00
..
AsmWriter.cpp llvm::SwitchInst 2012-03-11 06:09:17 +00:00
Attributes.cpp Extend Attributes to 64 bits 2012-01-20 17:56:17 +00:00
AutoUpgrade.cpp change the objectsize intrinsic signature: add a 3rd parameter to denote the maximum runtime performance penalty that the user is willing to accept. 2012-05-09 15:52:43 +00:00
BasicBlock.cpp Add a constified getLandingPad() method. 2012-01-31 00:26:24 +00:00
CMakeLists.txt Fix up cmake build. 2012-03-23 03:55:14 +00:00
ConstantFold.cpp Reapply r155682, making constant folding more consistent, with a fix to work 2012-04-27 17:50:22 +00:00
ConstantFold.h
Constants.cpp Reserve space in these vectors to prevent having to grow the array too 2012-02-07 01:27:51 +00:00
ConstantsContext.h Switch this code to use hash_combine_range rather than incremental calls 2012-03-07 03:22:32 +00:00
Core.cpp Introduce llvm-c function LLVMPrintModuleToFile. 2012-05-09 16:54:17 +00:00
DebugLoc.cpp Compute hashes directly with hash_combine instead of taking a detour through FoldingSetNodeID. 2012-04-11 14:06:39 +00:00
Dominators.cpp Def here is an Instruction, so !isa<Instruction>(Def) is always false, 2012-04-13 00:50:57 +00:00
Function.cpp Emit the "is an intrinsic overloaded" table as a bitfield. 2012-03-01 02:16:57 +00:00
GCOV.cpp Remove extra semi-colons. 2012-02-22 17:25:00 +00:00
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp Fix a problem with incomplete equality testing of PHINodes in 2012-05-10 15:59:41 +00:00
Instructions.cpp Rejected r156374: Ordinary PR1255 patch. Due to clang-x86_64-debian-fnt buildbot failure. 2012-05-08 08:33:21 +00:00
IntrinsicInst.cpp
IRBuilder.cpp reapply the patches reverted in r149470 that reenable ConstantDataArray, 2012-02-05 02:29:43 +00:00
LeakDetector.cpp
LeaksContext.h
LLVMBuild.txt LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
LLVMContext.cpp Rename "fpaccuracy" metadata to the more generic "fpmath". That's because I'm 2012-04-14 12:36:06 +00:00
LLVMContextImpl.cpp Efficient Constant Uniquing. 2012-02-05 20:54:10 +00:00
LLVMContextImpl.h Cache the hash value of the operands in the MDNode. 2012-04-11 14:06:54 +00:00
Makefile
Metadata.cpp Don't forget to reset 'first operand' flag when we're setting the MDNodeOperand value. 2012-04-26 00:38:42 +00:00
Module.cpp Cleanup whitespace. 2012-04-23 00:23:33 +00:00
Pass.cpp Added TargetPassConfig::disablePass/substitutePass as a general mechanism to override specific passes. 2012-02-15 03:21:47 +00:00
PassManager.cpp Take out the debug info probe stuff. It's making some changes to 2012-03-23 03:54:05 +00:00
PassRegistry.cpp
PrintModulePass.cpp
SymbolTableListTraitsImpl.h
Type.cpp Revert r155241, which is causing some breakage. 2012-04-20 23:11:38 +00:00
Use.cpp Add missing include of <new> 2012-03-26 14:04:17 +00:00
User.cpp
Value.cpp The MDString class stored a StringRef to the string which was already in a 2012-04-10 20:12:16 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
Verifier.cpp Remove support for the special 'fast' value for fpmath accuracy for the moment. 2012-04-16 19:39:33 +00:00