llvm/lib/VMCore
Dan Gohman e3394d4a49 When a constant's type is refined, update the constant in place
instead of cloning and RAUWing it.

 - Make AbstractTypeUser a friend of Value so that it can offer
   its subclasses a way to update a Value's type in place. This
   is better than a universally visible setType method on Value,
   and it's sufficient for the immediate need.

 - Eliminate the constant "convert" functions. This eliminates a
   lot of logic duplication, and fixes a complicated bug where a
   constant can't actually be cloned during the type refinement
   process because some of the types that its folder needs are
   half-destroyed, being in the middle of refinement themselves.

 - Move the getValType functions from being static overloaded
   functions in Constants.cpp to be members of class template
   specializations in ConstantsContext.h. This means that the
   code ends up getting instantiated twice, however it also
   makes it possible to eliminate all "convert" functions, so
   it's not a big net code size increase. And if desired, the
   duplicate instantiations could be eliminated with some
   reorganization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81861 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-15 15:58:07 +00:00
..
AsmWriter.cpp Remove some unused variables and methods warned about by 2009-09-06 08:33:48 +00:00
Attributes.cpp Add an 'inline hint' attribute to represent source 2009-08-26 01:08:21 +00:00
AutoUpgrade.cpp Reapply 79977. 2009-08-28 23:24:31 +00:00
BasicBlock.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
CMakeLists.txt
ConstantFold.cpp fix PR4963: folding insertvalue would sometimes turn a packed struct into 2009-09-15 06:28:12 +00:00
ConstantFold.h Teach lib/VMCore/ConstantFold.cpp how to set the inbounds keyword and 2009-09-11 00:04:14 +00:00
Constants.cpp When a constant's type is refined, update the constant in place 2009-09-15 15:58:07 +00:00
ConstantsContext.h When a constant's type is refined, update the constant in place 2009-09-15 15:58:07 +00:00
Core.cpp Revert 80959. It isn't sufficient to solve the full problem. And it 2009-09-03 23:34:49 +00:00
Dominators.cpp Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
Function.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
Globals.cpp
InlineAsm.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
Instruction.cpp This should use isIndenticalToWhenDefined. 2009-08-25 22:24:20 +00:00
Instructions.cpp Fix -Asserts warning. 2009-09-11 22:07:31 +00:00
IntrinsicInst.cpp Fix DbgStopPointInst->getFileName/getDirectory, broken by the MDNodification in 2009-09-02 11:13:56 +00:00
LeakDetector.cpp Kill off more cerr/cout uses and prune includes a bit. 2009-08-23 11:37:21 +00:00
LeaksContext.h switch from std::ostream to raw ostream, fix file header. 2009-08-23 03:56:06 +00:00
LLVMContext.cpp While replacing an MDNode elment, properly update MDNode's operand list. 2009-09-04 21:32:05 +00:00
LLVMContextImpl.h Fix whitespaces. 2009-09-10 22:36:12 +00:00
Makefile
Mangler.cpp Make the MC symbol printer and llvm::Mangler exactly agree on mangling 2009-09-13 18:04:46 +00:00
Metadata.cpp Take lock before removing a node from MDNodeSet. 2009-09-09 17:44:26 +00:00
Module.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
ModuleProvider.cpp
Pass.cpp Remove some unused fields. 2009-08-29 23:34:14 +00:00
PassManager.cpp make -debug-pass=Executions show information about what call graph nodes 2009-09-15 05:03:04 +00:00
PrintModulePass.cpp
SymbolTableListTraitsImpl.h
Type.cpp When a constant's type is refined, update the constant in place 2009-09-15 15:58:07 +00:00
TypesContext.h Free the constants that have no uses in ~LLVMContext. 2009-08-31 16:14:59 +00:00
TypeSymbolTable.cpp Fix the build when DEBUG_SYMBOL_TABLE is set. 2009-09-12 21:56:48 +00:00
Use.cpp Public and private corrections, warned about by icc (#304). 2009-09-06 08:55:57 +00:00
Value.cpp Teach getUnderlyingObject and skipPointerCasts about GlobalAliases. 2009-08-27 17:55:13 +00:00
ValueSymbolTable.cpp remove some DOUTs 2009-08-23 04:44:11 +00:00
ValueTypes.cpp Reapply 79977. 2009-08-28 23:24:31 +00:00
Verifier.cpp Fifth time's a charm! Remove ourselves as abstract type listeners once we've 2009-09-14 02:25:19 +00:00