aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore
Commit message (Collapse)AuthorAgeFilesLines
* Fix PR1850 by removing an unsafe transformation from VMCore/ConstantFold.cpp.Chris Lattner2007-12-101-11/+10
| | | | | | | | | Reimplement the xform in Analysis/ConstantFolding.cpp where we can use targetdata to validate that it is safe. While I'm in there, fix some const correctness issues and generalize the interface to the "operand folder". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44817 91177308-0d34-0410-b5e6-96231b3b80d8
* Delete the CollectorNamePool if it should become empty.Gordon Henriksen2007-12-101-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44775 91177308-0d34-0410-b5e6-96231b3b80d8
* Adding a collector name attribute to Function in the IR. These Gordon Henriksen2007-12-103-0/+54
| | | | | | | | | | | | | | | | | | | | | methods are new to Function: bool hasCollector() const; const std::string &getCollector() const; void setCollector(const std::string &); void clearCollector(); The assembly representation is as such: define void @f() gc "shadow-stack" { ... The implementation uses an on-the-side table to map Functions to collector names, such that there is no overhead. A StringPool is further used to unique collector names, which are extremely likely to be unique per process. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44769 91177308-0d34-0410-b5e6-96231b3b80d8
* Reverting dtor devirtualization patch.Gordon Henriksen2007-12-107-295/+197
| | | | | | | _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
* fix some warnings.Chris Lattner2007-12-101-15/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44756 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a big problem in the recent dtor refactoring work, now it passes ↵Chris Lattner2007-12-101-50/+14
| | | | | | 2007-11-19-InlineAsm.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44755 91177308-0d34-0410-b5e6-96231b3b80d8
* Devirtualizing Value destructor (PR889). Patch by Pawel Kunio!Gordon Henriksen2007-12-097-197/+334
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44747 91177308-0d34-0410-b5e6-96231b3b80d8
* Commit 44487 broke bootstrap of llvm-gcc-4.2. It isDuncan Sands2007-12-051-0/+3
| | | | | | | | not yet clear why, but in the meantime work around the problem by making less use of readnone/readonly info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44626 91177308-0d34-0410-b5e6-96231b3b80d8
* Rather than having special rules like "intrinsics cannotDuncan Sands2007-12-035-23/+57
| | | | | | | | | | 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
* Small optimization of parameter attribute lookup.Duncan Sands2007-11-301-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44458 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a convenience method for modifying parameterDuncan Sands2007-11-301-1/+59
| | | | | | | | | attributes. While there, I noticed that not all attribute methods returned a pointer-to-constant, so I fixed that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44457 91177308-0d34-0410-b5e6-96231b3b80d8
* Check that there are not more attributes thanDuncan Sands2007-11-301-0/+4
| | | | | | | function parameters. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44452 91177308-0d34-0410-b5e6-96231b3b80d8
* Small parameter attributes cleanup.Duncan Sands2007-11-291-4/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44433 91177308-0d34-0410-b5e6-96231b3b80d8
* Add some convenience methods for querying attributes, andDuncan Sands2007-11-282-15/+18
| | | | | | | use them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44403 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR1146: parameter attributes are longer part ofDuncan Sands2007-11-276-97/+105
| | | | | | | | | | | | | 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
* Fix PR1816. If a bitcast of a function only exists because of aDuncan Sands2007-11-252-31/+51
| | | | | | | | | | trivial difference in function attributes, allow calls to it to be converted to direct calls. Based on a patch by Török Edwin. While there, move the various lists of mutually incompatible parameters etc out of the verifier and into ParameterAttributes.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44315 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename the 'const' parameter attribute to 'readnone',Duncan Sands2007-11-222-6/+6
| | | | | | | | and the 'pure' parameter attribute to 'readonly'. Names suggested by DannyB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44273 91177308-0d34-0410-b5e6-96231b3b80d8
* In order for parameter attribute uniquing to makeDuncan Sands2007-11-201-2/+6
| | | | | | | | | | | | | any sense it is important that ParamAttr::None gets treated the same as not supplying an attribute at all. Rather than stripping ParamAttr::None out of the list of attributes, assert if ParamAttr::None is seen. Fix up the bitcode reader which liked to insert ParamAttr::None all over the place. Patch based on one by Török Edwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44250 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove meaningless qualifiers from return types, avoiding compiler warnings.Dan Gohman2007-11-191-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44240 91177308-0d34-0410-b5e6-96231b3b80d8
* print a call to a fastcc function as:Chris Lattner2007-11-181-2/+2
| | | | | | | | | | | call x86_fastcallcc void @func( i32* %X, i64 0 ) not: callx86_fastcallcc void @func( i32* %X, i64 0 ) This fixes Codegen/X86/fast-cc-merge-stack-adj.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44217 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for vectors to int <-> float casts.Nate Begeman2007-11-174-17/+91
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44204 91177308-0d34-0410-b5e6-96231b3b80d8
* Basic non-power-of-2 vector supportNate Begeman2007-11-151-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44181 91177308-0d34-0410-b5e6-96231b3b80d8
* I discover array_lengthof, thanks to gabor on #llvm.Duncan Sands2007-11-141-2/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44139 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify the attribute verification code.Duncan Sands2007-11-141-34/+24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44116 91177308-0d34-0410-b5e6-96231b3b80d8
* Add pure/const attributes. Documentation will follow.Anton Korobeynikov2007-11-142-4/+17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44109 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't barf on empty basic blocks. Do not rely on assertDuncan Sands2007-11-011-9/+21
| | | | | | | | | | | doing something - this needs to work for release builds too. I chose to just abort rather than following the fancy logic of abortIfBroken, because (1) it is a pain to do otherwise, and (2) nothing is going to work if the module is this broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43611 91177308-0d34-0410-b5e6-96231b3b80d8
* remove verifier command line option: this should be part of the API, notChris Lattner2007-11-011-11/+0
| | | | | | | a command line optn. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43603 91177308-0d34-0410-b5e6-96231b3b80d8
* Now with less tabs!Owen Anderson2007-11-011-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43601 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix InstCombine/2007-10-31-StringCrash.ll by removing an obviousChris Lattner2007-11-011-12/+8
| | | | | | | (in hindsight) infinite recursion. Simplify the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43597 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a regression in test/CodeGen/X86/2007-04-24-VectorCrash.ll introducedDan Gohman2007-10-311-4/+3
| | | | | | | | by r43510. Gracefully handle constants with vector type that aren't ConstantVector or ConstantAggregateZero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43579 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a preverifier pass to check that every basic block ends in a terminator, ↵Owen Anderson2007-10-311-1/+20
| | | | | | so that we don't segfault when verifying invalid code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43578 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for folding binary operators with vector zero operands.Dan Gohman2007-10-301-19/+29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43510 91177308-0d34-0410-b5e6-96231b3b80d8
* I am not sure this is a good idea to be an option, but rename the option forChris Lattner2007-10-291-1/+1
| | | | | | | now. It conflicts with clang's -pedantic flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43431 91177308-0d34-0410-b5e6-96231b3b80d8
* Add 'pedantic' mode to verifier rejecting syntactically valid, but 'bad' due ↵Anton Korobeynikov2007-10-281-3/+14
| | | | | | to other reasons code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43424 91177308-0d34-0410-b5e6-96231b3b80d8
* Make DomTree and PostDomTree thin wrappers around DomTreeBase, rather than ↵Owen Anderson2007-10-231-11/+1
| | | | | | inheriting from it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43259 91177308-0d34-0410-b5e6-96231b3b80d8
* The #include <iterator> isn't needed in this header.Dan Gohman2007-10-221-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43232 91177308-0d34-0410-b5e6-96231b3b80d8
* this doesn't need dynamic_cast.Chris Lattner2007-10-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43133 91177308-0d34-0410-b5e6-96231b3b80d8
* Reduce reliance on rtti infoChris Lattner2007-10-181-2/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43130 91177308-0d34-0410-b5e6-96231b3b80d8
* fix typoChris Lattner2007-10-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43129 91177308-0d34-0410-b5e6-96231b3b80d8
* Define a helper function ConstantVector::getSplatValue for testing forDan Gohman2007-10-171-0/+11
| | | | | | | and working with broadcasted constants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43076 91177308-0d34-0410-b5e6-96231b3b80d8
* Move splitBlock into DomTreeBase from DomTree.Owen Anderson2007-10-171-82/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43059 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable attempts to constant fold PPC f128.Dale Johannesen2007-10-161-0/+4
| | | | | | | | | Remove the assumption that this will happen from various places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43053 91177308-0d34-0410-b5e6-96231b3b80d8
* Template DominatorTreeBase by node type. This is the next major step towardsOwen Anderson2007-10-161-199/+5
| | | | | | | having dominator information on MBB's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43036 91177308-0d34-0410-b5e6-96231b3b80d8
* Initial infrastructure for arbitrary precision integerDuncan Sands2007-10-161-15/+7
| | | | | | | | | | | codegen support. This should have no effect on codegen for other types. Debatable bits: (1) the use (abuse?) of a set in SDNode::getValueTypeList; (2) the length of getTypeToTransformTo, which maybe should be refactored with a non-inline part for extended value types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43030 91177308-0d34-0410-b5e6-96231b3b80d8
* avoid an APFloat copy.Chris Lattner2007-10-151-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42979 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable some compile-time optimizations on PPCDale Johannesen2007-10-141-0/+12
| | | | | | | | long double. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42958 91177308-0d34-0410-b5e6-96231b3b80d8
* Next PPC long double bits. First cut at constants.Dale Johannesen2007-10-112-2/+13
| | | | | | | | | | | No compile-time support for constant operations yet, just format transformations. Make readers and writers work. Split constants into 2 doubles in Legalize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42865 91177308-0d34-0410-b5e6-96231b3b80d8
* C and Objective Caml bindings for PHINode::addIncoming etc.Gordon Henriksen2007-10-081-1/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42760 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove debugging printf to get build going on x86-64.Evan Cheng2007-10-081-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42757 91177308-0d34-0410-b5e6-96231b3b80d8
* Add explicit keywords.Dan Gohman2007-10-081-5/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42747 91177308-0d34-0410-b5e6-96231b3b80d8