llvm-6502/lib/Transforms/Utils
Gordon Henriksen 0e13821c96 GC poses hazards to the inliner. Consider:
define void @f() {
            ...
            call i32 @g()
            ...
    }

    define void @g() {
            ...
    }

The hazards are:

  - @f and @g have GC, but they differ GC. Inlining is invalid. This
    may never occur.
  - @f has no GC, but @g does. g's GC must be propagated to @f.

The other scenarios are safe:

  - @f and @g have the same GC.
  - @f and @g have no GC.
  - @g has no GC.

This patch adds inliner checks for the former two scenarios.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45351 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-25 03:10:07 +00:00
..
BasicBlockUtils.cpp Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change. 2007-11-27 03:43:35 +00:00
BasicInliner.cpp Use SmallPtrSet. 2007-07-27 18:34:27 +00:00
BreakCriticalEdges.cpp Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change. 2007-11-27 03:43:35 +00:00
CloneFunction.cpp Fix PR1850 by removing an unsafe transformation from VMCore/ConstantFold.cpp. 2007-12-10 22:53:04 +00:00
CloneLoop.cpp Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change. 2007-11-27 03:43:35 +00:00
CloneModule.cpp Adding a collector name attribute to Function in the IR. These 2007-12-10 03:18:06 +00:00
CloneTrace.cpp Fix indent 2007-11-09 12:34:20 +00:00
CodeExtractor.cpp Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space. 2007-12-17 01:12:55 +00:00
DemoteRegToStack.cpp Reg2Mem cleanup and optimizations: 2007-10-21 23:05:16 +00:00
InlineCost.cpp Fix comment. 2007-09-17 20:07:40 +00:00
InlineFunction.cpp GC poses hazards to the inliner. Consider: 2007-12-25 03:10:07 +00:00
LCSSA.cpp Use SmallVector instead of std::vector. 2007-08-21 00:31:24 +00:00
Local.cpp Move the GET_SIDE_EFFECT_INFO logic from isInstructionTriviallyDead 2007-07-26 16:06:08 +00:00
LoopSimplify.cpp Make LoopInfoBase more generic, in preparation for having MachineLoopInfo. This involves a small interface change. 2007-11-27 03:43:35 +00:00
LowerAllocations.cpp Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space. 2007-12-17 01:12:55 +00:00
LowerInvoke.cpp Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space. 2007-12-17 01:12:55 +00:00
LowerSelect.cpp More explicit keywords. 2007-08-01 15:32:29 +00:00
LowerSwitch.cpp GLIBCXX_DEBUG fix. std::vector<>::end() is invalidated by erase. 2007-12-17 17:42:03 +00:00
Makefile Move some constant folding code shared by Analysis and Transform passes 2005-10-27 15:54:34 +00:00
Mem2Reg.cpp Use DominatorTree instead of ETForest. 2007-06-07 21:57:03 +00:00
PromoteMemoryToRegister.cpp Finishing initial docs for all transformations in Passes.html. 2007-11-04 16:15:04 +00:00
SimplifyCFG.cpp If succ has succ itself as one of the predecessors then do 2007-12-22 01:32:53 +00:00
UnifyFunctionExitNodes.cpp Drop 'const' 2007-05-03 01:11:54 +00:00
ValueMapper.cpp Forget to commit users part of value mapper interface 2007-11-09 12:27:04 +00:00