llvm-6502/lib/VMCore
Dan Gohman 97b44f9b80 Use ConstantExpr::getExtractElement when constant-folding vectors
instead of getAggregateElement. This has the advantage of being
more consistent and allowing higher-level constant folding to
procede even if an inner extract element cannot be folded.

Make ConstantFoldInstruction call ConstantFoldConstantExpression
on the instruction's operands, making it more consistent with 
ConstantFoldConstantExpression itself. This makes sure that
ConstantExprs get TargetData-aware folding before being handed
off as operands for further folding.

This causes more expressions to be folded, but due to a known
shortcoming in constant folding, this currently has the side effect
of stripping a few more nuw and inbounds flags in the non-targetdata
side of constant-fold-gep.ll. This is mostly harmless.

This fixes rdar://11324230.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155682 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-27 00:54:36 +00:00
..
AsmWriter.cpp llvm::SwitchInst 2012-03-11 06:09:17 +00:00
Attributes.cpp
AutoUpgrade.cpp Remove AVX vpermil intrinsics. I removed their uses from clang headers and builtins a while back. 2012-04-18 05:24:00 +00:00
BasicBlock.cpp
CMakeLists.txt Fix up cmake build. 2012-03-23 03:55:14 +00:00
ConstantFold.cpp Use ConstantExpr::getExtractElement when constant-folding vectors 2012-04-27 00:54:36 +00:00
ConstantFold.h
Constants.cpp
ConstantsContext.h Switch this code to use hash_combine_range rather than incremental calls 2012-03-07 03:22:32 +00:00
Core.cpp add load/store volatility control to the C API, patch by Yiannis Tsiouris! 2012-03-22 03:54:15 +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
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp Remove support for the special 'fast' value for fpmath accuracy for the moment. 2012-04-16 19:39:33 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h
LLVMBuild.txt
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
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
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
Verifier.cpp Remove support for the special 'fast' value for fpmath accuracy for the moment. 2012-04-16 19:39:33 +00:00