summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* A handler for a function in the Win64 EH scheme can be both an unwind handlerCharles Davis2011-05-212-10/+15
| | | | | | | | | and an exception handler. Handle that case. Also, add an 'Emitted' member to the MCWin64EHUnwindInfo struct. It will be needed later. llvm-svn: 131791
* InstCombine: Turn mul.with.overflow(X, 2) into the cheaper ↵Benjamin Kramer2011-05-212-0/+35
| | | | | | add.with.overflow(X, X) llvm-svn: 131789
* Fix PR9978 by adding RIP to GR64_TC so it can be used as an address in PIC ↵Cameron Zwarich2011-05-211-1/+1
| | | | | | | | | code. It is already in GR64 for the same reasons. Since it isn't allocatable it can't cause any problems. llvm-svn: 131787
* Use the correct register to access stack frame objects.Akira Hatanaka2011-05-211-10/+31
| | | | llvm-svn: 131785
* Insert instructions that copy $sp to or from $fp at the right locations. Akira Hatanaka2011-05-211-11/+26
| | | | llvm-svn: 131784
* When BasicAA can determine that two pointers have the same base butDan Gohman2011-05-213-2/+143
| | | | | | | differ by a dynamic offset, return PartialAlias instead of MayAlias. See the comment in the code for details. This fixes PR9971. llvm-svn: 131781
* Have Program::Wait return -2 for crashed and timeouts instead of embeddingAndrew Trick2011-05-216-31/+23
| | | | | | info in the error message. Per Dan's request. llvm-svn: 131780
* Set the "LastFrameInst" field when streaming a .seh_setframe directive. ThisCharles Davis2011-05-211-0/+1
| | | | | | is needed for an upcoming patch. llvm-svn: 131772
* Fix PR9962 by properly constraining register classes in ↵Cameron Zwarich2011-05-201-0/+4
| | | | | | | | RemoveCopyByCommutingDef(). This actually fixes most of the VerifyCoalescing failures in test-suite. llvm-svn: 131768
* Change the order fixed objects are created in MipsTargetLowering::LowerCall inAkira Hatanaka2011-05-201-25/+35
| | | | | | | | | | | | | | preparation for reversing StackDirection. Fixed objects are created in the following order: 1. Incoming arguments passed on stack. 2. va_arg objects (include both arguments that are passed in registers and pointer to the location of the first va_arg argument). 3. $gp restore slot. 4. Outgoing arguments passed on stack. 5. Pointer to alloca'd space. llvm-svn: 131767
* Fix typo. When will I learn?Charles Davis2011-05-201-1/+0
| | | | llvm-svn: 131765
* Add fast-isel support for byval calls on x86.Eli Friedman2011-05-202-20/+70
| | | | llvm-svn: 131764
* Add .pdata and .xdata sections to the COFF TLOF implementation.Charles Davis2011-05-203-0/+27
| | | | llvm-svn: 131763
* No reason not to allow defining the CFA as a reg w/ offset zero.Jim Grosbach2011-05-202-4/+0
| | | | llvm-svn: 131760
* In CC_MipsO32, allocate a stack space regardless of whether the argument isAkira Hatanaka2011-05-201-22/+25
| | | | | | passed in register or on the stack. llvm-svn: 131758
* Fix typo.Jim Grosbach2011-05-201-1/+1
| | | | llvm-svn: 131757
* Add support for frame info use of the .cfi_def_cfa directive.Jim Grosbach2011-05-201-1/+2
| | | | llvm-svn: 131756
* Add missing leading \t when printing .cfi_def_cfa in the asmstreamer.Jim Grosbach2011-05-201-1/+1
| | | | llvm-svn: 131755
* Define functions that get/set maximum call frame size.Akira Hatanaka2011-05-201-1/+6
| | | | llvm-svn: 131752
* adds some attributes to attribute section when cpu is "xscale"Rafael Espindola2011-05-202-0/+37
| | | | | | | | (this is what used in Android NDK, when architecture is ARMv5) patch by Koan-Sin Tan llvm-svn: 131751
* fixes target address tBL and tBLX and sets relocation typeRafael Espindola2011-05-203-2/+50
| | | | | | | | of tBL/tBLX to R_ARM_THM_CALL (ARM ELF 4.7.1.6) Patch by koan-sin tan. llvm-svn: 131748
* Add asserts in StringRef to make sure we avoid undefined behavior:Argyrios Kyrtzidis2011-05-201-7/+20
| | | | | | | | | -strlen should not be called with NULL. Also guarantee that StringRef's Length is 0 if Data is NULL. -memcmp should not be called with NULL (even if size is 0) Patch by Matthieu Monrocq! llvm-svn: 131747
* Re-commit 131641 with fixes; de-pseudoize MOVSX16rr8 and friends.Stuart Hastings2011-05-206-50/+60
| | | | | | rdar://problem/8614450 llvm-svn: 131746
* Make $fp and $ra callee-saved registers and let PrologEpilogInserter handleAkira Hatanaka2011-05-206-103/+39
| | | | | | saving and restoring them. llvm-svn: 131745
* indvars: Prototyping Sign/ZeroExtend elimination without canonical IVs.Andrew Trick2011-05-204-114/+373
| | | | | | | | | | No functionality enabled by default. Use -disable-iv-rewrite. Extended IVUsers to keep track of the phi that represents the users' IV. Added the WidenIV transform to replace a narrow IV with a wide IV by doing a one-for-one replacement of IV users instead of expanding the SCEV expressions. [sz]exts are removed and truncs are inserted. llvm-svn: 131744
* Now that they're implemented, make the Win64 EH MCAsmStreamer methods callCharles Davis2011-05-201-0/+26
| | | | | | super. llvm-svn: 131743
* Fixed regression due to commit 131709, which disables vararg tail call ↵Chad Rosier2011-05-201-12/+24
| | | | | | optimizations on Win64 llvm-svn: 131740
* Revert accidental commit.Evan Cheng2011-05-203-10/+1
| | | | llvm-svn: 131739
* "Implement" the HandlerData Win64 EH method in the base MCStreamer.Charles Davis2011-05-201-2/+1
| | | | | | | | There's really nothing to implement. All this really does is swap to a pseudo-section that later gets written to the unwind info struct. That needs to be implemented in the object streamers. llvm-svn: 131734
* Rename the "sandybridge" subtarget to "corei7-avx", for GCC compatibility.Benjamin Kramer2011-05-203-3/+3
| | | | llvm-svn: 131730
* Remove noisy semicolons.Benjamin Kramer2011-05-203-8/+13
| | | | llvm-svn: 131724
* Fix PR9960 by teaching SimpleRegisterCoalescing::AdjustCopiesBackFrom() to ↵Cameron Zwarich2011-05-202-0/+36
| | | | | | | | preserve the phikill flag. llvm-svn: 131717
* indvars: minor cleanup in preparation for sign/zero extend elimination.Andrew Trick2011-05-201-18/+11
| | | | llvm-svn: 131716
* Fix bug in which nodes that write to argument registers do not get glued ↵Akira Hatanaka2011-05-202-16/+17
| | | | | | with the JALR node. Patch by Sasa Stankovic llvm-svn: 131714
* Remove code that creates unnecessary frame objects.Akira Hatanaka2011-05-201-4/+0
| | | | llvm-svn: 131711
* Define variables and functions in MipsFunctionInfo.Akira Hatanaka2011-05-201-1/+30
| | | | | | | This is the first of a series of patches that attempt to simplify handling of stack frame objects. llvm-svn: 131710
* Don't attempt to tail call optimize for Win64.Chad Rosier2011-05-202-8/+9
| | | | llvm-svn: 131709
* Revert r131664 and fix it in instcombine instead. rdar://9467055Evan Cheng2011-05-207-33/+31
| | | | llvm-svn: 131708
* Fix PR9955 by only attaching load memory operands to load instructions andCameron Zwarich2011-05-191-3/+37
| | | | | | | similarly for stores. Now "make check" passes with the MachineVerifier forced on with the VerifyCoalescing option! llvm-svn: 131705
* Add fast-isel support for zeroext and signext ret instructions on x86.Eli Friedman2011-05-192-5/+63
| | | | llvm-svn: 131689
* Looks like OS X assemblers (including MC) don't likeRafael Espindola2011-05-192-1/+25
| | | | | | | | | | foo: bar = foo .quad bar Avoid producing it. Fixes PR9951. llvm-svn: 131687
* Misc code refactorings:Rafael Espindola2011-05-194-21/+14
| | | | | | | * Remove unnecessary arguments now that ForceExpAbs is a method. * Use ForceExpAbs in EmitAbsValue. llvm-svn: 131683
* Oddly people want to use the 'r' constraint for fp constants on x86.Eric Christopher2011-05-192-1/+13
| | | | | | | Fixes rdar://9218925 Fixes PR9601 llvm-svn: 131682
* Implement the EndProlog Win64 EH method on the base MCStreamer.Charles Davis2011-05-192-5/+7
| | | | llvm-svn: 131679
* Fix PR9947 by placing OPFL_MemRefs on the node using memory operands rather thanCameron Zwarich2011-05-191-14/+48
| | | | | | | the root if there is only one such node. This leaves only 2 verifier failures in the entire test suite when running "make check". llvm-svn: 131677
* Fix up this test to use explicit triples (Win64 passes a different number of ↵Eli Friedman2011-05-191-13/+26
| | | | | | arguments in registers). llvm-svn: 131676
* This fixes one divergence between LLVM and binutils for ARM in theJason W Kim2011-05-192-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | text section. Assume the following bit of annotated assembly: .section .data.rel.ro,"aw",%progbits .align 2 .LAlpha: .long startval(GOTOFF) .text .align 2 .type main,%function .align 4 main: ;;; assume "main" starts at offset 0x20 0x0 push {r11, lr} 0x4 movw r0, :lower16:(.LAlpha-(.LBeta+8)) ;;; ==> (.AddrOf(.LAlpha) - ((.AddrOf(.LBeta) - .AddrOf(".")) + 8) ;;; ==> (??? - ((16-4) + 8) = -20 0x8 movt r0, :upper16:(.LAlpha-(.LBeta+8)) ;;; ==> (.AddrOf(.LAlpha) - ((.AddrOf(.LBeta) - .AddrOf(".")) + 8) ;;; ==> (??? - ((16-8) + 8) = -16 0xc ... blah .LBeta: 0x10 add r0, pc, r0 0x14 ... blah .LGamma: 0x18 add r1, pc, r1 Above snippet results in the following relocs in the .o file for the first pair of movw/movt instructions 00000024 R_ARM_MOVW_PREL_NC .LAlpha 00000028 R_ARM_MOVT_PREL .LAlpha And the encoded instructions in the .o file for main: must be 00000020 <main>: 20: e92d4800 push {fp, lr} 24: e30f0fec movw r0, #65516 ; 0xffec i.e. -20 28: e34f0ff0 movt r0, #65520 ; 0xfff0 i.e. -16 However, llc (prior to this commit) generates the following sequence 00000020 <main>: 20: e92d4800 push {fp, lr} 24: e30f0fec movw r0, #65516 ; 0xffec - i.e. -20 28: e34f0fff movt r0, #65535 ; 0xffff - i.e. -1 What has to happen in the ArmAsmBackend is that if the relocation is PC relative, the 16 bits encoded as part of movw and movt must be both addends, not addresses. It makes sense to encode addresses by right shifting the value by 16, but the result is incorrect for PIC. i.e., the right shift by 16 for movt is ONLY valid for the NON-PCRel case. This change agrees with what GNU as does, and makes the PIC code run. MC/ARM/elf-movt.s covers this case. llvm-svn: 131674
* Reapply r131605. This time with a fix, which is to use NoFolder.Devang Patel2011-05-191-30/+34
| | | | llvm-svn: 131673
* ADD64ri32 sign extends its argument, so we need to use a R_X86_64_32S.Rafael Espindola2011-05-192-1/+9
| | | | | | | | Fixes PR9934. We really need to start tblgening the relocation info :-( llvm-svn: 131669
* Align i64 arguments to 64 bit boundaries.Akira Hatanaka2011-05-192-1/+41
| | | | llvm-svn: 131668
OpenPOWER on IntegriCloud