aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/IntrinsicLowering.cpp
AgeCommit message (Collapse)AuthorFilesLines
2011-07-18land David Blaikie's patch to de-constify Type, with a few tweaks.Chris Lattner1-5/+5
llvm-svn: 135375
2011-07-15Convert CallInst and InvokeInst APIs to use ArrayRef.Jay Foad1-1/+1
llvm-svn: 135265
2011-07-14Change Intrinsic::getDeclaration and friends to take an ArrayRef.Benjamin Kramer1-2/+1
llvm-svn: 135154
2011-07-12Second attempt at de-constifying LLVM Types in FunctionType::get(),Jay Foad1-4/+4
StructType::get() and TargetData::getIntPtrType(). llvm-svn: 134982
2011-07-12Revert r134893 and r134888 (and related patches in other trees). It was causingBill Wendling1-4/+4
an assert on Darwin llvm-gcc builds. Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\ ne 2067. etc. http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354 --- Reverse-merging r134893 into '.': U include/llvm/Target/TargetData.h U include/llvm/DerivedTypes.h U tools/bugpoint/ExtractFunction.cpp U unittests/Support/TypeBuilderTest.cpp U lib/Target/ARM/ARMGlobalMerge.cpp U lib/Target/TargetData.cpp U lib/VMCore/Constants.cpp U lib/VMCore/Type.cpp U lib/VMCore/Core.cpp U lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Instrumentation/ProfilingUtils.cpp U lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/CodeGen/SjLjEHPrepare.cpp --- Reverse-merging r134888 into '.': G include/llvm/DerivedTypes.h U include/llvm/Support/TypeBuilder.h U include/llvm/Intrinsics.h U unittests/Analysis/ScalarEvolutionTest.cpp U unittests/ExecutionEngine/JIT/JITTest.cpp U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp U unittests/VMCore/PassManagerTest.cpp G unittests/Support/TypeBuilderTest.cpp U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp U lib/VMCore/IRBuilder.cpp G lib/VMCore/Type.cpp U lib/VMCore/Function.cpp G lib/VMCore/Core.cpp U lib/VMCore/Module.cpp U lib/AsmParser/LLParser.cpp U lib/Transforms/Utils/CloneFunction.cpp G lib/Transforms/Utils/CodeExtractor.cpp U lib/Transforms/Utils/InlineFunction.cpp U lib/Transforms/Instrumentation/GCOVProfiling.cpp U lib/Transforms/Scalar/ObjCARC.cpp U lib/Transforms/Scalar/SimplifyLibCalls.cpp U lib/Transforms/Scalar/MemCpyOptimizer.cpp G lib/Transforms/IPO/DeadArgumentElimination.cpp U lib/Transforms/IPO/ArgumentPromotion.cpp U lib/Transforms/InstCombine/InstCombineCompares.cpp U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp U lib/Transforms/InstCombine/InstCombineCalls.cpp U lib/CodeGen/DwarfEHPrepare.cpp U lib/CodeGen/IntrinsicLowering.cpp U lib/Bitcode/Reader/BitcodeReader.cpp llvm-svn: 134949
2011-07-11De-constify Types in FunctionType::get().Jay Foad1-4/+4
llvm-svn: 134888
2011-07-06Introduce "expect" intrinsic instructions.Jakub Staszak1-0/+7
llvm-svn: 134516
2011-01-08Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call.Evan Cheng1-0/+24
llvm-svn: 123048
2010-09-24Get rid of pop_macro warnings on MSVC.Michael J. Spencer1-3/+5
llvm-svn: 114750
2010-07-22undo 80 column trespassing I causedGabor Greif1-1/+2
llvm-svn: 109092
2010-06-30use CallSite::arg_end instead of CallInst::op_endGabor Greif1-1/+1
llvm-svn: 107276
2010-06-25use ArgOperand API and CallSite to access arguments of CallInstGabor Greif1-23/+26
llvm-svn: 106833
2010-05-11Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!Douglas Gregor1-0/+6
llvm-svn: 103457
2010-04-16Revert 101465, it broke internal OpenGL testing.Eric Christopher1-23/+23
Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
2010-04-16reapply r101434Gabor Greif1-23/+23
with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465
2010-04-16back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif1-23/+23
llvm-svn: 101434
2010-04-15reapply r101364, which has been backed out in r101368Gabor Greif1-23/+23
with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
2010-04-15back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif1-23/+23
llvm-svn: 101368
2010-04-15rotate CallInst operands, i.e. move callee to the backGabor Greif1-23/+23
of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101364
2010-04-15Add const qualifiers to CodeGen's use of LLVM IR constructs.Dan Gohman1-1/+1
llvm-svn: 101334
2010-04-07rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner1-2/+2
llvm-svn: 100709
2010-02-15Uniformize the names of type predicates: rather than having isFloatTy andDuncan Sands1-2/+2
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! llvm-svn: 96223
2010-01-05Avoid going through the LLVMContext for type equality where it's safe to ↵Benjamin Kramer1-3/+3
dereference the type pointer. llvm-svn: 92726
2010-01-05Delete renaming use of dead dbg intrinsics.Devang Patel1-4/+0
Intrinsic::dbg_stoppoint Intrinsic::dbg_region_start Intrinsic::dbg_region_end Intrinsic::dbg_func_start llvm-svn: 92672
2009-11-10Codegen support for the llvm.invariant/lifetime.start/end intrinsics:Duncan Sands1-0/+9
just throw them away. llvm-svn: 86678
2009-10-14I don't see any point in having both eh.selector.i32 and eh.selector.i64,Duncan Sands1-4/+2
so get rid of eh.selector.i64 and rename eh.selector.i32 to eh.selector. Likewise for eh.typeid.for. This aligns us with gcc, which always uses a 32 bit value for the selector on all platforms. My understanding is that the register allocator used to assert if the selector intrinsic size didn't match the pointer size, and this was the reason for introducing the two variants. However my testing shows that this is no longer the case (I fixed some bugs in selector lowering yesterday, and some more today in the fastisel path; these might have caused the original problems). llvm-svn: 84106
2009-10-06Introduce and use convenience methods for getting pointer typesDuncan Sands1-8/+8
where the element is of a basic builtin type. For example, to get an i8* use getInt8PtrTy. llvm-svn: 83379
2009-08-23Change Pass::print to take a raw ostream instead of std::ostream,Chris Lattner1-7/+8
update all code that this affects. llvm-svn: 79830
2009-08-13Push LLVMContexts through the IntegerType APIs.Owen Anderson1-38/+46
llvm-svn: 78948
2009-07-31Move a few more APIs back to 2.5 forms. The only remaining ones left to ↵Owen Anderson1-3/+3
change back are metadata related, which I'm waiting on to avoid conflicting with Devang. llvm-svn: 77721
2009-07-24Revert the ConstantInt constructors back to their 2.5 forms where possible, ↵Owen Anderson1-31/+31
thanks to contexts-on-types. More to come. llvm-svn: 77011
2009-07-22Get rid of the Pass+Context magic.Owen Anderson1-12/+12
llvm-svn: 76702
2009-07-14Move EVER MORE stuff over to LLVMContext.Owen Anderson1-39/+44
llvm-svn: 75703
2009-07-14llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin1-2/+2
This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
2009-07-14eliminate extra space.Torok Edwin1-1/+1
llvm-svn: 75630
2009-07-13Begin the painful process of tearing apart the rat'ss nest that is ↵Owen Anderson1-3/+4
Constants.cpp and ConstantFold.cpp. This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's the only way I could figure out to make this process vaguely incremental. llvm-svn: 75445
2009-07-12remove llvm.part.set.* and llvm.part.select.*. They have never been Chris Lattner1-340/+0
implemented in codegen, have no frontend to generate them, and are better implemented with pattern matching (like the ppc backend does to generate rlwimi/rlwinm etc). PR4543 llvm-svn: 75430
2009-07-11assert(0) -> LLVM_UNREACHABLE.Torok Edwin1-1/+1
Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
2009-07-11Convert more assert(0)+abort() -> LLVM_UNREACHABLE,Torok Edwin1-7/+6
and abort()/exit() -> llvm_report_error(). llvm-svn: 75363
2009-07-08Push LLVMContext _back_ through IRBuilder.Owen Anderson1-2/+2
llvm-svn: 75040
2009-06-26Get rid of these cache variables, which are a holdover from the days whenOwen Anderson1-41/+28
we had multiple type planes and these lookups were expensive. llvm-svn: 74319
2009-06-25Now with EVEN FEWER statics!Owen Anderson1-28/+0
llvm-svn: 74143
2009-05-12Switch to using IRBuilder throughout.Jay Foad1-204/+195
llvm-svn: 71587
2009-05-11Don't generate redundant casts of constant values when lowering calls toJay Foad1-38/+29
memcpy, memmove and memset. llvm-svn: 71427
2009-03-07Introduce new linkage types linkonce_odr, weak_odr, common_odrDuncan Sands1-2/+2
and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. llvm-svn: 66339
2009-02-07Add missing break statements, fixing PR3503.Chris Lattner1-8/+11
llvm-svn: 64040
2009-01-30As Duncan suggested, add braces for the one-line "else branch".Zhou Sheng1-1/+2
Thanks, Duncan. llvm-svn: 63389
2009-01-30This is to fix the bug in IntrinsicLowering.cpp,Zhou Sheng1-1/+2
the LowerPartSet(). It didn't handle the situation correctly when the low, high argument values are in reverse order (low > high) with 'Val' type i32 (a corner case). llvm-svn: 63388
2008-11-21reapply Sanjiv's patch to genericize memcpy/memset/memmove to take anChris Lattner1-12/+6
arbitrary integer width for the count. llvm-svn: 59823
2008-11-21Revert r59802. It was breaking the build of llvm-gcc:Bill Wendling1-6/+12
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