llvm-project/llvm/lib
Gordon Henriksen b969c5981b 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.

llvm-svn: 45351
2007-12-25 03:10:07 +00:00
..
Analysis Adding bindings for memory buffers and module providers. Switching 2007-12-19 22:30:40 +00:00
Archive finishing touches of bytecode -> bitcode changes. also unbreak Windows 2007-07-06 20:28:40 +00:00
AsmParser regenerate. 2007-12-17 01:17:35 +00:00
Bitcode Adding bindings for memory buffers and module providers. Switching 2007-12-19 22:30:40 +00:00
CodeGen Flesh out the Briggs implementation a little bit more, fix a few FIXMEs. 2007-12-24 22:12:23 +00:00
Debugger switch this to bitcode instead of bytecode 2007-05-06 09:29:13 +00:00
ExecutionEngine C and Ocaml bindings for ExecutionEngine (i.e., the JIT compiler). 2007-12-23 16:59:28 +00:00
Linker Fix PR1146: parameter attributes are longer part of 2007-11-27 13:23:08 +00:00
Support Cygwin defines uint32_t as unsigned long. Unbreak call to std::min in this case 2007-12-24 11:16:47 +00:00
System Unbreak mingw build 2007-12-22 14:26:49 +00:00
Target add a simple hack 2007-12-24 19:27:46 +00:00
Transforms GC poses hazards to the inliner. Consider: 2007-12-25 03:10:07 +00:00
VMCore Noting and enforcing that GC intrinsics are valid only within a 2007-12-25 02:31:26 +00:00
Makefile build lib/Archive instead of lib/Bytecode 2007-05-06 19:50:06 +00:00