|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | the [I|F]CmpInst constructors.  Who knew!?
llvm-svn: 75200 | 
| | 
| 
| 
| | llvm-svn: 74807 | 
| | 
| 
| 
| | llvm-svn: 71199 | 
| | 
| 
| 
| 
| 
| | llvm.dbg.region.end instrinsic. This nested llvm.dbg.func.start/llvm.dbg.region.end pair now enables DW_TAG_inlined_subroutine support in code generator.
llvm-svn: 69118 | 
| | 
| 
| 
| 
| 
| | Patch by Jay Foad.
llvm-svn: 68120 | 
| | 
| 
| 
| | llvm-svn: 66001 | 
| | 
| 
| 
| 
| 
| | per Chris' suggestion.  Slightly faster.
llvm-svn: 65999 | 
| | 
| 
| 
| 
| 
| 
| | calls with the tail marker when inlining them through an invoke.  Patch,
testcase, and perfect analysis by Jay Foad!
llvm-svn: 64364 | 
| | 
| 
| 
| | llvm-svn: 63618 | 
| | 
| 
| 
| | llvm-svn: 63600 | 
| | 
| 
| 
| | llvm-svn: 62384 | 
| | 
| 
| 
| | llvm-svn: 62377 | 
| | 
| 
| 
| 
| 
| | this fixes PR3332
llvm-svn: 62271 | 
| | 
| 
| 
| | llvm-svn: 62189 | 
| | 
| 
| 
| 
| 
| | arbitrary integer width for the count.
llvm-svn: 59823 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include  -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include  -D_DEBUG  -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS   -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include  -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic'
../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic'
make[3]: *** [llvm-convert.o] Error 1
make[3]: *** Waiting for unfinished jobs....
rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod
make[2]: *** [all-stage1-gcc] Error 2
make[1]: *** [stage1-bubble] Error 2
make: *** [all] Error 2
llvm-svn: 59809 | 
| | 
| 
| 
| | llvm-svn: 59802 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage 
- to implement function notes as function attributes and 
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622 | 
| | 
| 
| 
| | llvm-svn: 56513 | 
| | 
| 
| 
| 
| 
| 
| | long as the callgraph is correct.  It checks
for wrong callgraphs more strictly.
llvm-svn: 55894 | 
| | 
| 
| 
| 
| 
| | commit.
llvm-svn: 55865 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | because it does not maintain a correct list
of callsites.  I discovered (see following
commit) that the inliner will create a wrong
callgraph if it is fed a callgraph with
correct edges but incorrect callsites.  These
were created by Prune-EH, and while it wasn't
done via removeCallEdgeTo, it could have been
done via removeCallEdgeTo, which is an accident
waiting to happen.  Use removeCallEdgeFor
instead.
llvm-svn: 55859 | 
| | 
| 
| 
| | llvm-svn: 55835 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | In particular, Collector was confusing to implementors. Several
thought that this compile-time class was the place to implement
their runtime GC heap. Of course, it doesn't even exist at runtime.
Specifically, the renames are:
  Collector               -> GCStrategy
  CollectorMetadata       -> GCFunctionInfo
  CollectorModuleMetadata -> GCModuleInfo
  CollectorRegistry       -> GCRegistry
  Function::getCollector  -> getGC (setGC, hasGC, clearGC)
Several accessors and nested types have also been renamed to be
consistent. These changes should be obvious.
llvm-svn: 54899 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.
The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.
llvm-svn: 53941 | 
| | 
| 
| 
| | llvm-svn: 52606 | 
| | 
| 
| 
| | llvm-svn: 52544 | 
| | 
| 
| 
| 
| 
| 
| | return statements and aggregate returns so that it handles both
correctly.
llvm-svn: 52519 | 
| | 
| 
| 
| 
| 
| | makefile targets to find these better.
llvm-svn: 51143 | 
| | 
| 
| 
| 
| 
| | r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.
llvm-svn: 50265 | 
| | 
| 
| 
| | llvm-svn: 50179 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | needs to be fixed here - a previous commit made sure
that intrinsics always get the right attributes.
So remove no-longer needed code, and while there use
Intrinsic::getDeclaration rather than getOrInsertFunction. 
llvm-svn: 49337 | 
| | 
| 
| 
| 
| 
| 
| 
| | nounwind.  When such calls are inlined into something
else that is invoked, they were getting changed to invokes,
which is badness.
llvm-svn: 49299 | 
| | 
| 
| 
| 
| 
| 
| 
| | Specifically, introduction of XXX::Create methods
for Users that have a potentially variable number of
Uses.
llvm-svn: 49277 | 
| | 
| 
| 
| 
| 
| | has single return value.
llvm-svn: 48162 | 
| | 
| 
| 
| | llvm-svn: 48161 | 
| | 
| 
| 
| | llvm-svn: 48086 | 
| | 
| 
| 
| | llvm-svn: 48020 | 
| | 
| 
| 
| | llvm-svn: 47909 | 
| | 
| 
| 
| 
| 
| | Update test to use multiple return value directly, instead of relying on -sretpromotion.
llvm-svn: 47907 | 
| | 
| 
| 
| | llvm-svn: 47904 | 
| | 
| 
| 
| 
| 
| | longer allowed to write through byval arguments.
llvm-svn: 46416 | 
| | 
| 
| 
| 
| 
| | when inlining a readonly function.
llvm-svn: 46393 | 
| | 
| 
| 
| | llvm-svn: 46369 | 
| | 
| 
| 
| 
| 
| 
| | inlining a function if we know that the function does not write
to *any* memory.  This implements test/Transforms/Inline/byval2.ll
llvm-svn: 45912 | 
| | 
| 
| 
| 
| 
| | copy of it in case the callee modifies the struct.
llvm-svn: 45853 | 
| | 
| 
| 
| | llvm-svn: 45418 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | calls 'nounwind'.  It is important for correct C++
exception handling that nounwind markings do not get
lost, so this transformation is actually needed for
correctness.
llvm-svn: 45218 | 
| | 
| 
| 
| 
| 
| | doesNotThrow.
llvm-svn: 45160 |