summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Make code a bit less brittle by no hardcoding the numberRafael Espindola2009-03-283-8/+15
| | | | | | of operands in an address in so many places. llvm-svn: 67945
* Make check in CheckTailCallReturnConstraints for ignorable instructions betweenArnold Schwaighofer2009-03-281-18/+32
| | | | | | | a CALL and a RET node more generic. Add a test for tail calls with a void return. llvm-svn: 67943
* Enable tail call optimization for functions that return a struct (bug 3664) ↵Arnold Schwaighofer2009-03-281-0/+24
| | | | | | and for functions that return types that need extending (e.g i1). llvm-svn: 67934
* Optimize some 64-bit multiplication by constants into two lea's or one lea + ↵Evan Cheng2009-03-282-8/+79
| | | | | | | | | | | | | | | | | shl since imulq is slow (latency 5). e.g. x * 40 => shlq $3, %rdi leaq (%rdi,%rdi,4), %rax This has the added benefit of allowing more multiply to be folded into addressing mode. e.g. a * 24 + b => leaq (%rdi,%rdi,2), %rax leaq (%rsi,%rax,8), %rax llvm-svn: 67917
* move a large method out of line.Chris Lattner2009-03-281-0/+19
| | | | llvm-svn: 67892
* Fix what surely must be a copy+pasto.Dan Gohman2009-03-271-2/+2
| | | | llvm-svn: 67881
* Initialize LiveOutInfo's APInt members to zero, as APInt'sDan Gohman2009-03-271-1/+1
| | | | | | | default constructor produces an uninitialized APInt. This fixes PR3896. llvm-svn: 67879
* remove trailing whitespaceJim Grosbach2009-03-271-8/+8
| | | | llvm-svn: 67874
* "ghostify" the ilist<Function> sentinelGabor Greif2009-03-271-8/+0
| | | | llvm-svn: 67872
* Avoid hardcoding that X86 addresses have 4 operands.Rafael Espindola2009-03-271-5/+8
| | | | llvm-svn: 67848
* Use less hard coded constants to make the code less brittle.Rafael Espindola2009-03-271-6/+11
| | | | llvm-svn: 67846
* I am trying to add a segment to the X86 addresses matching toRafael Espindola2009-03-271-19/+28
| | | | | | | | improve TLS support (see http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090309/075220.html), but that code is VERY brittle. This patch just makes it a bit more resistant. llvm-svn: 67843
* Revert r67798: it breaks llvm-gcc bootstrap on x86-64-linux, presumably due toDuncan Sands2009-03-271-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | a miscompilation. make[4]: Entering directory `gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include' if [ ! -d "./x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch" ]; then \ mkdir -p ./x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch; \ fi; \ gcc-4.2.llvm-objects/./gcc/xgcc -shared-libgcc -Bgcc-4.2.llvm-objects/./gcc -nostdinc++ -Lgcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/src -Lgcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/usr/local/gnat-llvm/x86_64-unknown-linux-gnu/bin/ -B/usr/local/gnat-llvm/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/gnat-llvm/x86_64-unknown-linux-gnu/include -isystem /usr/local/gnat-llvm/x86_64-unknown-linux-gnu/sys-include -Winvalid-pch -Wno-deprecated -x c++-header -g -O2 -D_GNU_SOURCE -Igcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu -Igcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include -Igcc-4.2.llvm/libstdc++-v3/libsupc++ -O2 -g gcc-4.2.llvm/libstdc++-v3/include/precompiled/stdtr1c++.h -o x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch/O2g.gch In file included from gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/repeat.h:247, from gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/functional:1098, from gcc-4.2.llvm/libstdc++-v3/include/precompiled/stdtr1c++.h:53: gcc-4.2.llvm-objects/x86_64-unknown-linux-gnu/libstdc++-v3/include/tr1/functional_iterate.h:417: internal compiler error: in ggc_recalculate_in_use_p, at ggc-page.c:1602 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://llvm.org/bugs/> for instructions. make[4]: *** [x86_64-unknown-linux-gnu/bits/stdtr1c++.h.gch/O2g.gch] Error 1 llvm-svn: 67839
* -write-graph now can be used with -o.Mikhail Glushenkov2009-03-271-8/+5
| | | | | | Makes it possible to set the output file name. llvm-svn: 67835
* Shrink wrapping in PEI: initial release. Finishing development, enable with ↵John Mosby2009-03-271-43/+913
| | | | | | --shrink-wrap. llvm-svn: 67828
* One more place to skip debug info.Dale Johannesen2009-03-271-7/+14
| | | | llvm-svn: 67811
* While hoisting an instruction, update alias info set tracker.Devang Patel2009-03-261-0/+1
| | | | llvm-svn: 67798
* -no-implicit-float means explicit fp operations are legal.Evan Cheng2009-03-261-4/+4
| | | | llvm-svn: 67784
* Fix misc. small issues with debug visualization.Mikhail Glushenkov2009-03-261-1/+6
| | | | | | | Detailed bug report: http://llvm.org/bugs/show_bug.cgi?id=3873 llvm-svn: 67768
* tADDhirr is a thumb instruction. Do not allow this code to be reached in ↵Evan Cheng2009-03-261-0/+2
| | | | | | non-thumb mode. llvm-svn: 67765
* Don't assign a new stack slot if the pre-alloc splitter already assigned one.Owen Anderson2009-03-261-2/+9
| | | | llvm-svn: 67764
* Pull transform from target-dependent code into target-independent code.Bill Wendling2009-03-262-39/+49
| | | | llvm-svn: 67742
* fix warning in -asserts mode.Chris Lattner2009-03-261-4/+3
| | | | llvm-svn: 67739
* fix some warnings in release-asserts mode.Chris Lattner2009-03-261-20/+19
| | | | llvm-svn: 67738
* fix an apparently real bug exposed by a warning in -asserts mode.Chris Lattner2009-03-261-3/+4
| | | | llvm-svn: 67737
* fix warning in -asserts build.Chris Lattner2009-03-261-4/+2
| | | | llvm-svn: 67736
* Match this pattern so that we can generate simpler code:Bill Wendling2009-03-261-0/+39
| | | | | | | | | | | | | | | | | | | | %a = ... %b = and i32 %a, 2 %c = srl i32 %b, 1 %d = br i32 %c, into %a = ... %b = and %a, 2 %c = X86ISD::CMP %b, 0 %d = X86ISD::BRCOND %c ... This applies only when the AND constant value has one bit set and the SRL constant is equal to the log2 of the AND constant. The back-end is smart enough to convert the result into a TEST/JMP sequence. llvm-svn: 67728
* Doxygen-ify comments.Bill Wendling2009-03-261-2/+2
| | | | llvm-svn: 67727
* Skip debug info one more place. (This one getsDale Johannesen2009-03-261-6/+12
| | | | | | | called from llc, not opt, but it's an IR level optimization nevertheless.) llvm-svn: 67724
* Before deleting a basic block, give other loop passes a chance cleanup ↵Devang Patel2009-03-252-1/+8
| | | | | | analysis values, related to the instructions in the basic block. llvm-svn: 67719
* Revert 67132. This is breaking some objective-c apps.Evan Cheng2009-03-251-3/+13
| | | | | | Also fixes SDISel so it *does not* force promote return value if the function is not marked signext / zeroext. llvm-svn: 67701
* When optimizing with debug info, don't keep theDale Johannesen2009-03-251-4/+5
| | | | | | | | stoppoint nodes around until Legalize; doing this imposed an ordering on a sequence of loads that came from different lines, interfering with scheduling. llvm-svn: 67692
* Fix a bug in our autoupgrade support: in an argument list to a functionChris Lattner2009-03-251-4/+8
| | | | | | | | | | | | call, we should treat "i64 zext" as the start of a constant expr, but "i64 0 zext" as an argument with an obsolete attribute on it (this form is already tested by test/Assembler/2007-07-30-AutoUpgradeZextSext.ll). Make the autoupgrade logic more discerning to avoid treating "i64 zext" as an old-style attribute, causing us to reject a valid constant expr. This fixes PR3876. llvm-svn: 67682
* do not rely on callee being operand 0Gabor Greif2009-03-251-1/+1
| | | | llvm-svn: 67681
* Do not ignore DW_TAG_class_type!Devang Patel2009-03-251-0/+1
| | | | llvm-svn: 67675
* CodeGen still defaults to non-verbose asm, but llc now overrides it and ↵Evan Cheng2009-03-2547-118/+136
| | | | | | default to verbose. llvm-svn: 67668
* Don't print global names twice with -asm-verbose.Evan Cheng2009-03-252-3/+3
| | | | llvm-svn: 67667
* Fix PR3874 by restoring a condition I removed, but making it moreChris Lattner2009-03-251-1/+2
| | | | | | precise than it used to be. llvm-svn: 67662
* Do not ignore DW_TAG_class_type!Devang Patel2009-03-251-0/+1
| | | | llvm-svn: 67661
* oops, I intended to remove this, not comment it out. Thanks Duncan!Chris Lattner2009-03-241-2/+1
| | | | llvm-svn: 67657
* Fix PR3845: Avoid stale MachineInstruction pointer reference.Evan Cheng2009-03-241-3/+1
| | | | llvm-svn: 67649
* simplify logic and get rid of the assumption that operand 0 is the calleeGabor Greif2009-03-241-3/+3
| | | | llvm-svn: 67642
* canonicalize inttoptr and ptrtoint instructions which cast pointers Chris Lattner2009-03-241-5/+37
| | | | | | | | to/from integer types that are not intptr_t to convert to intptr_t then do an integer conversion to the dest type. This exposes the cast to the optimizer. llvm-svn: 67638
* fix one more fp80 case (used only by Interpreter)Dale Johannesen2009-03-241-21/+5
| | | | | | and streamline code here a bit. llvm-svn: 67636
* two changes:Chris Lattner2009-03-241-45/+29
| | | | | | | | | | | 1. Make instcombine always canonicalize trunc x to i1 into an icmp(x&1). This exposes the AND to other instcombine xforms and is more of what the code generator expects. 2. Rewrite the remaining trunc pattern match to use 'match', which simplifies it a lot. llvm-svn: 67635
* Change JIT for different layout of fp80.Dale Johannesen2009-03-241-5/+5
| | | | llvm-svn: 67629
* more tidying: name the components of PhysReg in the case whenChris Lattner2009-03-241-8/+9
| | | | | | the target constraint specifies a specific physreg. llvm-svn: 67618
* Tidy a bit more.Chris Lattner2009-03-241-3/+3
| | | | llvm-svn: 67617
* simplify this code a bit now that "allocation to a vreg class" can neverChris Lattner2009-03-241-16/+13
| | | | | | fail. llvm-svn: 67616
* I was convinced that it's ok to allow a second i8 return valueDan Gohman2009-03-241-7/+8
| | | | | | | | | | | to be returned in DL. LLVM's multiple-return-value support is not ABI-conforming; front-ends that wish to have code emitted that conforms to an ABI are currently expected to make arrangements for this on their own rather than assuming that multiple-return-values will automatically do the right thing. This commit doesn't fundamentally change this situation. llvm-svn: 67588
OpenPOWER on IntegriCloud