aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* MC: Switch assembler API to using MCExpr instead of MCValue.Daniel Dunbar2009-10-163-46/+54
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84234 91177308-0d34-0410-b5e6-96231b3b80d8
* MC: Remove unneeded context argument to MCExpr::Evaluate*.Daniel Dunbar2009-10-164-12/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84233 91177308-0d34-0410-b5e6-96231b3b80d8
* MC: Tweak variable assignment diagnostics, and make reassignment of non-absoluteDaniel Dunbar2009-10-163-7/+36
| | | | | | variables and symbols invalid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84232 91177308-0d34-0410-b5e6-96231b3b80d8
* MC: When parsing a variable reference, substitute absolute variables immediatelyDaniel Dunbar2009-10-164-14/+43
| | | | | | since they are allowed to be redefined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84230 91177308-0d34-0410-b5e6-96231b3b80d8
* MC: Move assembler variable values from MCContext to MCSymbol.Daniel Dunbar2009-10-163-32/+33
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84229 91177308-0d34-0410-b5e6-96231b3b80d8
* MC: Switch MCContext value table to storing MCExprs.Daniel Dunbar2009-10-163-32/+22
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84228 91177308-0d34-0410-b5e6-96231b3b80d8
* When checking aliases between phi sources and V2, we know the sources are ↵Evan Cheng2009-10-161-3/+3
| | | | | | not themselves phi nodes. However, V2 may be. Call aliasCheck with V2 first to potentially eliminate a std::swap call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84226 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert svn r80498 and replace it with a different solution. The only problemBob Wilson2009-10-151-12/+4
| | | | | | | | | | | | | | | I can see with the original code was that I forgot that this runs after type legalization and hence the result type will always be i32. (Custom legalization of EXTRACT_VECTOR_ELT is only enabled for vector types with 8- and 16-bit elements.) Regarding the FIXME comment: any information about sign and zero-extension should be captured by separate extension operations. The DAG combiner should handle those to produce either VGETLANEu or VGETLANEs, and that seems to be working now. If there are cases that we're missing, let me know. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84218 91177308-0d34-0410-b5e6-96231b3b80d8
* Dllexport stuff cleanup:Anton Korobeynikov2009-10-151-34/+40
| | | | | | | | 1. Emit external function type information for all COFF targets since it's a feature of object format 2. Emit linker directives only for cygming (since this is ld-specific stuff) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84214 91177308-0d34-0410-b5e6-96231b3b80d8
* Branches must be the last instruction in a Thumb2 IT block. Approved by Evan ↵Sandeep Patel2009-10-152-1/+49
| | | | | | Cheng. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84212 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix encoding bits for N3VLInt3_QHS multiclass with 8-bit elements.Bob Wilson2009-10-151-1/+1
| | | | | | | Patch by Johnny Chen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84206 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ARM memory operand parsing of post indexing with just a base register, thatKevin Enderby2009-10-151-36/+41
| | | | | | | is just "[Rn]" and no tailing comma with an offset, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84205 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a potential performance problem in placing ARM constant pools.Bob Wilson2009-10-151-29/+67
| | | | | | | | | | | | | In the case where there are no good places to put constants and we fall back upon inserting unconditional branches to make new blocks, allow all constant pool references in range of those blocks to put constants there, even if that means resetting the "high water marks" for those references. This will still terminate because you can't keep splitting blocks forever, and in the bad cases where we have to split blocks, it is important to avoid splitting more than necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84202 91177308-0d34-0410-b5e6-96231b3b80d8
* More bits of the ARM target assembler for llvm-mc, code added to parse labelsKevin Enderby2009-10-151-16/+130
| | | | | | | | | as expressions, code for parsing a few arm specific directives (still needs the MCStreamer calls for these). Some clean up of the operand parsing code and adding some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84201 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove X86Subtarget::IsLinux. It's no longer being used.Evan Cheng2009-10-152-10/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84200 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bug where array malloc with unexpected computation of the size argument ↵Victor Hernandez2009-10-154-37/+72
| | | | | | | | | | | | | | | | | | | | | | resulted in MallocHelper identifying the malloc as a non-array malloc. This broke GlobalOpt's optimization of stores of mallocs to global variables. The fix is to classify malloc's into 3 categories: 1. non-array mallocs 2. array mallocs whose array size can be determined 3. mallocs that cannot be determined to be of type 1 or 2 and cannot be optimized getMallocArraySize() returns NULL for category 3, and all users of this function must avoid their malloc optimization if this function returns NULL. Eventually, currently unexpected codegen for computing the malloc's size argument will be supported in isArrayMalloc() and getMallocArraySize(), extending malloc optimizations to those examples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84199 91177308-0d34-0410-b5e6-96231b3b80d8
* Add files Sanjiv forgot.Benjamin Kramer2009-10-153-0/+487
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84196 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-apply 84180 with the fixed test case.Sanjiv Gupta2009-10-1511-692/+394
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84195 91177308-0d34-0410-b5e6-96231b3b80d8
* Move Blackfin intrinsics into the Target/Blackfin directory.Jakob Stoklund Olesen2009-10-159-14/+105
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84194 91177308-0d34-0410-b5e6-96231b3b80d8
* Report errors correctly for unselected target intrinsics.Jakob Stoklund Olesen2009-10-153-8/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84193 91177308-0d34-0410-b5e6-96231b3b80d8
* Clean up TargetIntrinsicInfo API. Add pure virtual methods.Jakob Stoklund Olesen2009-10-152-26/+20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84192 91177308-0d34-0410-b5e6-96231b3b80d8
* Add missing break statements! Thanks to Duncan Sands for pointing this out!Nick Lewycky2009-10-151-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84191 91177308-0d34-0410-b5e6-96231b3b80d8
* Tablegen target intrinsics from the target main .td file.Jakob Stoklund Olesen2009-10-151-2/+2
| | | | | | Fix pasto. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84190 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable another unittest that doesn't work on arm and ppc.Benjamin Kramer2009-10-151-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84186 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "Complete Rewrite of AsmPrinter, TargetObjectFile based on newDaniel Dunbar2009-10-1513-878/+689
| | | | | | PIC16Section class", it breaks globals.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84184 91177308-0d34-0410-b5e6-96231b3b80d8
* Complete Rewrite of AsmPrinter, TargetObjectFile based on new PIC16Section classSanjiv Gupta2009-10-1513-689/+878
| | | | | | | derived from MCSection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84180 91177308-0d34-0410-b5e6-96231b3b80d8
* Few changes to comply with new DebugInfo Metadata representation.Sanjiv Gupta2009-10-151-4/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84179 91177308-0d34-0410-b5e6-96231b3b80d8
* The gcc plugin is now called dragonegg.so and no longer llvm.so.Duncan Sands2009-10-151-1/+1
| | | | | | | Pointed out by Gabor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84177 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach basicaa about memcpy/memmove/memset. The length argument can be used toNick Lewycky2009-10-151-0/+22
| | | | | | | improve alias results if constant, and the source pointer can't be modified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84175 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach BasicAA to use the size parameter of the memory use marker intrinsics.Nick Lewycky2009-10-151-18/+29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84174 91177308-0d34-0410-b5e6-96231b3b80d8
* Be smarter about reusing constant pool entries.Bob Wilson2009-10-151-4/+17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84173 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix another problem with ARM constant pools. Radar 7303551.Bob Wilson2009-10-151-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When ARMConstantIslandPass cannot find any good locations (i.e., "water") to place constants, it falls back to inserting unconditional branches to make a place to put them. My recent change exposed a problem in this area. We may sometimes append to the same block more than one unconditional branch. The symptoms of this are that the generated assembly has a branch to an undefined label and running llc with -debug will cause a seg fault. This happens more easily since my change to prevent CPEs from moving from lower to higher addresses as the algorithm iterates, but it could have happened before. The end of the block may be in range for various constant pool references, but the insertion point for new CPEs is not right at the end of the block -- it is at the end of the CPEs that have already been placed at the end of the block. The insertion point could be out of range. When that happens, the fallback code will always append another unconditional branch if the end of the block is in range. The fix is to only append an unconditional branch if the block does not already end with one. I also removed a check to see if the constant pool load instruction is at the end of the block, since that is redundant with checking if the end of the block is in-range. There is more to be done here, but I think this fixes the immediate problem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84172 91177308-0d34-0410-b5e6-96231b3b80d8
* only try to fold constantexpr operands when the worklist is first populated, Chris Lattner2009-10-151-15/+30
| | | | | | | | | | don't bother every time going around the main worklist. This speeds up a release-asserts opt -std-compile-opts on 403.gcc by about 4% (1.5s). It seems to speed up the most expensive instances of instcombine by ~10%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84171 91177308-0d34-0410-b5e6-96231b3b80d8
* don't bother calling ConstantFoldInstruction unless there is a use of theChris Lattner2009-10-151-22/+25
| | | | | | | | | | | instruction (which disqualifies stores, unreachable, etc) and at least the first operand is a constant. This filters out a lot of obvious cases that can't be folded. Also, switch the IRBuilder to a TargetFolder, which tries harder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84170 91177308-0d34-0410-b5e6-96231b3b80d8
* Take advantage of TargetData when available; we know that the atomic intrinsicsNick Lewycky2009-10-151-18/+23
| | | | | | | only dereference the element they point to directly with no pointer arithmetic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84159 91177308-0d34-0410-b5e6-96231b3b80d8
* Make CodePlacementOpt align loops, rather than loop headers. TheDan Gohman2009-10-153-73/+43
| | | | | | | | | | | header is just the entry block to the loop, and it needn't be at the top of the loop in the code layout. Remove the code that suppressed loop alignment for outer loops, so that outer loops are aligned. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84158 91177308-0d34-0410-b5e6-96231b3b80d8
* When LiveVariables is adding implicit-def to model "partial dead", add the ↵Evan Cheng2009-10-142-1/+27
| | | | | | earlyclobber marker if the superreg def has it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84153 91177308-0d34-0410-b5e6-96231b3b80d8
* Print earlyclobber for implicit-defs as well.Evan Cheng2009-10-141-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84152 91177308-0d34-0410-b5e6-96231b3b80d8
* One more iteration here and a yet better way to solve it.Eric Christopher2009-10-141-14/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84150 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix the unused argument problem here a different way - cast to void.Eric Christopher2009-10-141-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84147 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix instruction encoding bits for NEON VPADAL.Bob Wilson2009-10-141-2/+2
| | | | | | | Patch by Johnny Chen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84146 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unused variables to fix build warning.Bob Wilson2009-10-141-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84144 91177308-0d34-0410-b5e6-96231b3b80d8
* Make loop not recalc getNumOperands() each time aroundJim Grosbach2009-10-141-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84138 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support to record DbgScope as inlined scope.Devang Patel2009-10-142-25/+44
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84134 91177308-0d34-0410-b5e6-96231b3b80d8
* quiet compiler warningJim Grosbach2009-10-141-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84133 91177308-0d34-0410-b5e6-96231b3b80d8
* Delete bogus semicolons.Dan Gohman2009-10-144-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84132 91177308-0d34-0410-b5e6-96231b3b80d8
* Inst{11-8} for vshl should be 0b0101, not 0b1111.Jim Grosbach2009-10-141-1/+1
| | | | | | | | | Refs: A7-17 & A8-750. Patch by Johnny Chen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84131 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a bunch of unused arguments from functions, silencing aEric Christopher2009-10-148-15/+14
| | | | | | | warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84130 91177308-0d34-0410-b5e6-96231b3b80d8
* The ARM and PowerPC jits are broken in this regard.Nick Lewycky2009-10-141-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84128 91177308-0d34-0410-b5e6-96231b3b80d8
* There seems to be no reason for opt's -S option to be hidden.Duncan Sands2009-10-141-2/+1
| | | | | | | Make it visible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84127 91177308-0d34-0410-b5e6-96231b3b80d8