aboutsummaryrefslogtreecommitdiff
path: root/lib/VMCore/Instructions.cpp
AgeCommit message (Collapse)Author
2008-02-18Simplify caller updating using a CallSite, asDuncan Sands
requested by Chris. While there, do the same for an existing function committed by someone called "lattner" :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47273 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-28Handle some more combinations of extend and icmp. Fixes PR1940.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46431 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-21Be consistent with other attribute methods, andDuncan Sands
check the callee also if it is known. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46206 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14Simplify CallInst::hasByValArgument using a new method.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45974 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14Simplify code.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45950 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-12Add hasByValArgument() to test if a call instruction has byval argument(s).Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45913 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-06When transforming a call to a bitcast function intoDuncan Sands
a direct call with cast parameters and cast return value (if any), instcombine was prepared to cast any non-void return value into any other, whether castable or not. Add a new predicate for testing whether casting is valid, and check it both for the return value and (as a cleanup) for the parameters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45657 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-02Split param attr implementation out from Function.cpp into itsChris Lattner
own file. Don't #include ParameterAttributes.h into any major public header files: just move methods out of line as appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45517 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-02remove blob of #if'd out code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45512 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29Remove attribution from file headers, per discussion on llvmdev.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-19When inlining through an 'nounwind' call, mark inlinedDuncan Sands
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45218 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-18Rename isNoReturn to doesNotReturn, and isNoUnwind toDuncan Sands
doesNotThrow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45160 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-17Change the PointerType api for creating pointer types. The old functionality ↵Christopher Lamb
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45082 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-16Make instcombine promote inline asm calls to 'nounwind'Duncan Sands
calls. Remove special casing of inline asm from the inliner. There is a potential problem: the verifier rejects invokes of inline asm (not sure why). If an asm call is not marked "nounwind" in some .ll, and instcombine is not run, but the inliner is run, then an illegal module will be created. This is bad but I'm not sure what the best approach is. I'm tempted to remove the check in the verifier... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-11Implement address space attribute for LLVM pointer types. Address spaces are Christopher Lamb
regions of memory that have a target specific relationship, as described in the Embedded C Technical Report. This also implements the 2007-12-11-AddressSpaces test, which demonstrates how address space attributes can be used in LLVM IR. In addition, this patch changes the bitcode signature for stores (in a backwards compatible manner), such that the pointer type, rather than the pointee type, is encoded. This permits type information in the pointer (e.g. address space) to be preserved for stores. LangRef updates are forthcoming. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44858 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-10Reverting dtor devirtualization patch.Gordon Henriksen
_sabre_: it has a major problem: by the time ~Value is run, all of the "parts" of the derived classes have been destroyed _sabre_: the vtable lives to fight another day git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44760 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-09Devirtualizing Value destructor (PR889). Patch by Pawel Kunio!Gordon Henriksen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44747 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-03Rather than having special rules like "intrinsics cannotDuncan Sands
throw exceptions", just mark intrinsics with the nounwind attribute. Likewise, mark intrinsics as readnone/readonly and get rid of special aliasing logic (which didn't use anything more than this anyway). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-29Small parameter attributes cleanup.Duncan Sands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44433 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-28Add some convenience methods for querying attributes, andDuncan Sands
use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-27Fix PR1146: parameter attributes are longer part ofDuncan Sands
the function type, instead they belong to functions and function calls. This is an updated and slightly corrected version of Reid Spencer's original patch. The only known problem is that auto-upgrading of bitcode files doesn't seem to work properly (see test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully a bitcode guru (who might that be? :) ) will fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44359 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-17Add support for vectors to int <-> float casts.Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44204 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18fix typoChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43129 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04Update GEP constructors to use an iterator interface to fixDavid Greene
GLIBCXX_DEBUG issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41697 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27Update InvokeInst to work like CallInstDavid Greene
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41506 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-24sink clone() down the class hierarchy from CmpInst into ICmpInst/FCmpInst.Chris Lattner
This eliminates a conditional on that path, and ensures ICmpInst/FCmpInst both have an out-of-line virtual method to home the class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41371 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01New CallInst interface to address GLIBCXX_DEBUG errors caused byDavid Greene
indexing an empty std::vector. Updates to all clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40660 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18Add constructor overloads for LoadInst and StoreInst that insert at theDan Gohman
end of a BasicBlock and have an alignment parameter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40016 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-15Enhance BinaryOperator::isNot to support vector not.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37585 91177308-0d34-0410-b5e6-96231b3b80d8
2007-05-11Update comments to say "vector" instead of "packed".Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36995 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-27add a GEP helper functionChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36515 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-22PR400 work phase 1. Add attributed load/store instructions for ↵Christopher Lamb
volatile/align to LLVM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36349 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-22For PR1136:Reid Spencer
Add reference counting to ParamAttrsList and make use of it in Function, CallInst and InvokeInst classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36346 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-22For PR1146:Reid Spencer
Make ParamAttrsList objects unique. You can no longer directly create or destroy them but instead must go through the ParamAttrsList::get() interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36327 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21Revert Christopher Lamb's load/store alignment changes.Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36309 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21add support for alignment attributes on load/store instructionsChristopher Lamb
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36301 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14add GetElementPtrInst::hasAllZeroIndices, a long-overdue helper method.Chris Lattner
Writing it twice in the same day was too much for me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35978 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-11Fix a bug where ICmpInst objects instantiated directly with a name wouldReid Spencer
not retain that name. Not noticed because AsmParser always sets name after construction. However, llvm2cpp noticed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35903 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09For PR1146:Reid Spencer
* Add ParamAttrs to InvokeInst class too. * Make sure all initializes of ParamAttrs in CallInst and InvokeInst are 0 * Destruct the ParamAttrs in Call/Invoke destructors to avoid memory leaks. This will change when ParamAttrsList is uniquified but needs to be correct until then. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35824 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09For PR1146:Reid Spencer
* Add ParamAttrList pointers to Function and CallInst. * Move the implementation of ParamAttrList from Type.cpp to Function.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35818 91177308-0d34-0410-b5e6-96231b3b80d8
2007-03-22Change uses of Function::front to Function::getEntryBlock for readability.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35265 91177308-0d34-0410-b5e6-96231b3b80d8
2007-03-01Use modern variable name. ConstantUnsignedInt is long since dead. NoReid Spencer
functional change with this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34806 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-28Provide an ICmpInst::makeConstantRange to generate a ConstantRange valueReid Spencer
from a predicate and an APInt. This is removed from ConstantRange class so that ConstantRange doesn't have to depend on lib/VMCore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34760 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-24Refactor the setName stuff, moving it down the inheritance hierarchy, toChris Lattner
solve a crash in -instcombine -debug that was hit while investigating PR1217 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34544 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-15For PR1195:Reid Spencer
Change use of "packed" term to "vector" in comments, strings, variable names, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34300 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-15For PR1195:Reid Spencer
Rename PackedType -> VectorType, ConstantPacked -> ConstantVector, and PackedTyID -> VectorTyID. No functional changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34293 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-13Switch UnaryOperators to default to passing names up by const char* when ↵Chris Lattner
possible. This speeds up bcreading by 1.5%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34233 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-13eliminate instruction ctors that take vectors.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34228 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-13Add invokeinst and callinst ctors that don't take vectors.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34214 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-13remove some dead methods.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34213 91177308-0d34-0410-b5e6-96231b3b80d8