summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Teach LSR to optimize more loop exit compares, i.e. change them to use ↵Evan Cheng2009-05-111-43/+139
| | | | | | | | postinc iv value. Previously LSR would only optimize those which are in the loop latch block. However, if LSR can prove it is safe (and profitable), it's now possible to change those not in the latch blocks to use postinc values. Also, if the compare is the only use, LSR would place the iv increment instruction before the compare instead in the latch. llvm-svn: 71485
* Fix PR4188. TailMerging can't tolerate inexactDale Johannesen2009-05-111-0/+15
| | | | | | sucessor info. llvm-svn: 71478
* Apply patch review feedback.Evan Cheng2009-05-111-0/+2
| | | | llvm-svn: 71472
* Don't #include DerivedTypes.h from TargetData.h.Jay Foad2009-05-111-0/+1
| | | | llvm-svn: 71468
* Fix two wording errors that Duncan spotted.Dan Gohman2009-05-111-1/+1
| | | | llvm-svn: 71459
* Unbreak non-debug build.Evan Cheng2009-05-111-0/+8
| | | | llvm-svn: 71457
* Eliminate a compiler warning.Evan Cheng2009-05-111-0/+1
| | | | llvm-svn: 71456
* When scalarizing a vector BITCAST, check whether the operand has vectorDan Gohman2009-05-111-1/+2
| | | | | | | | type, rather than assume that it does. If the operand is not vector, it shouldn't be run through ScalarizeVectorOp. This fixes one of the testcases in PR3886. llvm-svn: 71453
* LLVM has unaligned loads and stores now.Dan Gohman2009-05-111-2/+1
| | | | llvm-svn: 71449
* Add terminal width detection to llvm::sys::Process. This is needed toDouglas Gregor2009-05-112-0/+53
| | | | | | fix Clang PRs 4148 and 4183. llvm-svn: 71448
* Upgrade this example to new-style syntax.Dan Gohman2009-05-111-5/+5
| | | | llvm-svn: 71447
* Convert a subtract into a negate and an add when it helps x86Dan Gohman2009-05-112-1/+71
| | | | | | address folding. llvm-svn: 71446
* remove some done things: we have nocapture and SROA is smarter.Chris Lattner2009-05-111-77/+13
| | | | llvm-svn: 71443
* add a noteChris Lattner2009-05-111-0/+35
| | | | llvm-svn: 71442
* Reverse a loop that is counting up to a maximum toDale Johannesen2009-05-111-6/+118
| | | | | | | | count down to 0 instead, under very restricted circumstances. Adjust 4 testcases in which this optimization fires. llvm-svn: 71439
* Shrink wrapping in PEI:John Mosby2009-05-111-610/+1066
| | | | | | | | | | | | | | | - reduces _static_ callee saved register spills and restores similar to Chow's original algorithm. - iterative implementation with simple heuristic limits to mitigate compile time impact. - handles placing spills/restores for multi-entry, multi-exit regions in the Machine CFG without splitting edges. - passes test-suite in LLCBETA mode. Added contains() method to ADT/SparseBitVector. llvm-svn: 71438
* Don't generate redundant casts of constant values when lowering calls toJay Foad2009-05-111-38/+29
| | | | | | memcpy, memmove and memset. llvm-svn: 71427
* Change TargetData::getIntPtrType() to return an IntegerType instead ofJay Foad2009-05-111-1/+1
| | | | | | just a Type. llvm-svn: 71426
* Fix more naming issues.Sanjiv Gupta2009-05-114-30/+69
| | | | | | | compiler libcalls start with .lib. now. fixed section names. llvm-svn: 71424
* Detect calls to compiler intrinsics and emit an extern declarations Sanjiv Gupta2009-05-114-10/+43
| | | | | | | | | | | only for those. These extern declarations to intrinsics are currently being emitted at the bottom of generated .s file, which works fine with gpasm(not sure about MPSAM though). PIC16 linker generates errors for few cases (function-args/struct_args_5) if you do not include any extern declarations (even if no intrinsics are being used), but that needs to be fixed in the linker itself. llvm-svn: 71423
* Needed #includes. Thanks Fritz van Bommel!Bill Wendling2009-05-101-0/+1
| | | | llvm-svn: 71413
* This is a large rewrite of how Dwarf info for inlined functions is handled.Bill Wendling2009-05-101-95/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DwarfWriter expects DbgScopes and DIEs to behave themselves according to DwarfWriter's rules. However, inlined functions violate these rules. There are two different types of DIEs associated with an inlined function: an abstract instance, which has information about the original source code for the function being inlined; and concrete instances, which are created for each place the function was inlined and point back to the abstract instance. This patch tries to stay true to this schema. It bypasses how regular DbgScopes and DIEs are created and used when necessary. It provides special handling for DIEs of abstract and concrete instances. This doesn't take care of all of the problems with debug info for inlined functions, but it's a step in the right direction. For one thing, llvm-gcc generates wrong IR (it's missing some llvm.dbg intrinsics at the point where the function's inlined) for this example: #include <stdio.h> static __inline__ __attribute__((always_inline)) int bar(int x) { return 4; } void foo() { long long b = 1; int Y = bar(4); printf("%d\n", Y); } while clang generates correct IR. llvm-svn: 71410
* Make MDNode use CallbackVH. Also change MDNode to store Value* instead ofNick Lewycky2009-05-107-45/+86
| | | | | | | Constant* in preperation of a future change to support holding non-Constants in an MDNode. llvm-svn: 71407
* Module iterator contains list of filescope functions as well, we don't need ↵Sanjiv Gupta2009-05-101-2/+2
| | | | | | to emit and global declarations for them. This was working earlier and was broken during one of the recent commit for PIC16 naming. llvm-svn: 71394
* Add imm-reg and imm-mem patters for cmp on msp430Anton Korobeynikov2009-05-101-0/+14
| | | | | | (imm is allowed to be source operand, not dest...) llvm-svn: 71393
* Changed lowering and asmprinter to use ABI Names class called PAN.Sanjiv Gupta2009-05-107-202/+281
| | | | llvm-svn: 71386
* --- Reverse-merging r71370 into '.':Bill Wendling2009-05-101-34/+58
| | | | | | | | U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp Revert r71370. llvm-svn: 71373
* A debug function start was not being recorded when the optimization level wasn'tBill Wendling2009-05-091-58/+34
| | | | | | | | None. However, we were always recording the region end. There's no longer a good reason for this code to be separated out between the different opt levels, as it was doing pretty much the same thing anyway. llvm-svn: 71370
* Oops. Don't forget to align single bb loops.Evan Cheng2009-05-091-1/+1
| | | | llvm-svn: 71363
* Allow scalar evolution to compute iteration counts for loops with a Eli Friedman2009-05-091-19/+8
| | | | | | pointer-based condition. This fixes PR3171. llvm-svn: 71354
* Remove a completed optimization. Add a potential optimization I ran Eli Friedman2009-05-091-17/+9
| | | | | | into. llvm-svn: 71352
* Rename PaddedSize to AllocSize, in the hope that thisDuncan Sands2009-05-0949-141/+141
| | | | | | | will make it more obvious what it represents, and stop it being confused with the StoreSize. llvm-svn: 71349
* Use 16 bit arithmetic while retrieving the address of callee's frame during ↵Sanjiv Gupta2009-05-091-7/+16
| | | | | | indirect function calls, and set pclath before every call to retrieve the frame address. llvm-svn: 71323
* Factor out code that optimize loop terminating condition.Evan Cheng2009-05-091-0/+9
| | | | llvm-svn: 71305
* Don't attempt to handle unsized types in ScalarEvolution's GEP analyzer.Dan Gohman2009-05-091-0/+3
| | | | llvm-svn: 71302
* Enable loop bb placement optimization.Evan Cheng2009-05-081-9/+0
| | | | llvm-svn: 71291
* Fix bogus overflow checks by replacing them with actualDan Gohman2009-05-081-7/+18
| | | | | | overflow checks. llvm-svn: 71284
* PPC::B and PPC::BCC's target operand may be an immediate.Evan Cheng2009-05-081-0/+9
| | | | llvm-svn: 71282
* Avoid warning in release-asserts build.Mike Stump2009-05-081-0/+1
| | | | llvm-svn: 71275
* Mirror how Fast ISel determines if a region.end intrinsic is the end of anBill Wendling2009-05-081-15/+12
| | | | | | | | | inlined function or the end of a function. Before, this was never executing the "inlined" version of the Record method. This will become important once the inlined Dwarf writer patch lands. llvm-svn: 71268
* Fold trunc casts into add-recurrence expressions, allowing theDan Gohman2009-05-081-8/+62
| | | | | | | add-recurrence to be exposed. Add a new SCEV folding rule to help simplify expressions in the presence of these extra truncs. llvm-svn: 71264
* Compute the offsets of the compile units. We need this so that when we emit aBill Wendling2009-05-081-11/+20
| | | | | | | | | concrete instance of an inlined function, we can get the actual address of the abstract instance inside of the compile unit. This isn't currently used, but will be by a future check-in. llvm-svn: 71263
* Fix another bug in r71252. This code supports GetElementPtrDan Gohman2009-05-081-2/+2
| | | | | | constant exprs as well as instructions. llvm-svn: 71262
* Add memoization for getSCEVAtScope results for instructionsDan Gohman2009-05-081-0/+15
| | | | | | | | | which are not analyzed with SCEV techniques, which can require brute-forcing through a large number of instructions. This fixes a massive compile-time issue on 400.perlbench (in particular, the loop in MD5Transform). llvm-svn: 71259
* Make the SCEV* form of getSCEVAtScope public, to allow ScalarEvolutionDan Gohman2009-05-081-13/+12
| | | | | | clients to use it. llvm-svn: 71258
* Minor clean ups. No functionality change.Bill Wendling2009-05-081-5/+4
| | | | llvm-svn: 71256
* Fix an error from r71252.Dan Gohman2009-05-081-4/+4
| | | | llvm-svn: 71255
* Print out nicer dump info for DIDescriptor.Bill Wendling2009-05-081-1/+2
| | | | llvm-svn: 71253
* Factor out the code for creating SCEVs for GEPs into aDan Gohman2009-05-081-33/+40
| | | | | | separate function. llvm-svn: 71252
* Implement several new SCEV folding rules for UDiv SCEVs.Dan Gohman2009-05-081-2/+54
| | | | | | This fixes an old FIXME, and is needed by some upcoming changes. llvm-svn: 71247
OpenPOWER on IntegriCloud