- Apr 28, 2011
-
-
Rafael Espindola authored
give it a bit more responsibility. Also implement it for MachO. If hacked to use cfi, 32 bit MachO will produce .cfi_personality 155, L___gxx_personality_v0$non_lazy_ptr and 64 bit will produce .cfi_presonality ___gxx_personality_v0 The general idea is that .cfi_personality gets passed the final symbol. It is up to codegen to produce it if using indirect representation (like 32 bit MachO), but it is up to MC to decide which relocations to create. llvm-svn: 130341
-
Eli Friedman authored
Make the fast-isel code for literal 0.0 a bit shorter/faster, since 0.0 is common. rdar://problem/9303592 . llvm-svn: 130338
-
- Apr 27, 2011
-
-
Kevin Enderby authored
value is zero so it does not add a NULL expr operand. llvm-svn: 130330
-
Devang Patel authored
llvm-svn: 130326
-
Eli Friedman authored
length. (I'm planning to use this to implement byval.) llvm-svn: 130274
-
Eli Friedman authored
rdar://problem/9303306 . llvm-svn: 130272
-
- Apr 26, 2011
-
-
Chris Lattner authored
when X has multiple uses. This is useful for exposing secondary optimizations, but the X86 backend isn't ready for this when X has a single use. For example, this can disable load folding. This is inching towards resolving PR6627. llvm-svn: 130238
-
Jim Grosbach authored
rdar://9326019 llvm-svn: 130234
-
Jakob Stoklund Olesen authored
The hook will be used by the register allocator when recomputing register classes after removing constraints. Thumb1 code doesn't allow anything larger than tGPR, and x86 needs to ensure that the spill size doesn't change. llvm-svn: 130228
-
Rafael Espindola authored
Remove previous DwarfCFI hack. llvm-svn: 130187
-
Devang Patel authored
Let dwarf writer allocate extra space in the debug location expression. This space, if requested, will be used for complex addresses of the Blocks' variables. llvm-svn: 130178
-
- Apr 25, 2011
-
-
Chris Lattner authored
llvm-svn: 130137
-
Akira Hatanaka authored
llvm-svn: 130131
-
Chandler Carruth authored
these was just one line of a file. Explicitly set the eol-style property on the files to try and ensure this fix stays. llvm-svn: 130125
-
Duncan Sands authored
llvm-svn: 130120
-
- Apr 24, 2011
-
-
Sebastian Redl authored
llvm-svn: 130097
-
- Apr 23, 2011
-
-
Jay Foad authored
llvm-svn: 130068
-
Benjamin Kramer authored
llvm-svn: 130053
-
Andrew Trick authored
Fixes Thumb2 ADCS and SBCS lowering: <rdar://problem/9275821>. t2ADCS/t2SBCS are now pseudo instructions, consistent with ARM, so the assembly printer correctly prints the 's' suffix. Fixes Thumb2 adde -> SBC matching to check for live/dead carry flags. Fixes the internal ARM machine opcode mnemonic for ADCS/SBCS. Fixes ARM SBC lowering to check for live carry (potential bug). llvm-svn: 130048
-
Andrew Trick authored
llvm-svn: 130046
-
- Apr 22, 2011
-
-
Johnny Chen authored
print out ldr, not ldr.n. rdar://problem/9267772 llvm-svn: 130008
-
Benjamin Kramer authored
On x86 this allows to fold a load into the cmp, greatly reducing register pressure. movzbl (%rdi), %eax cmpl $47, %eax -> cmpb $47, (%rdi) This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :) llvm-svn: 130005
-
Devang Patel authored
llvm-svn: 129995
-
Benjamin Kramer authored
X86: Try to use a smaller encoding by transforming (X << C1) & C2 into (X & (C2 >> C1)) & C1. (Part of PR5039) This tends to happen a lot with bitfield code generated by clang. A simple example for x86_64 is uint64_t foo(uint64_t x) { return (x&1) << 42; } which used to compile into bloated code: shlq $42, %rdi ## encoding: [0x48,0xc1,0xe7,0x2a] movabsq $4398046511104, %rax ## encoding: [0x48,0xb8,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00] andq %rdi, %rax ## encoding: [0x48,0x21,0xf8] ret ## encoding: [0xc3] with this patch we can fold the immediate into the and: andq $1, %rdi ## encoding: [0x48,0x83,0xe7,0x01] movq %rdi, %rax ## encoding: [0x48,0x89,0xf8] shlq $42, %rax ## encoding: [0x48,0xc1,0xe0,0x2a] ret ## encoding: [0xc3] It's possible to save another byte by using 'andl' instead of 'andq' but I currently see no way of doing that without making this code even more complicated. See the TODOs in the code. llvm-svn: 129990
-
Evan Cheng authored
add <rd>, sp, #<imm8> ldr <rd>, [sp, #<imm8>] When the offset from sp is multiple of 4 and in range of 0-1020. This saves code size by utilizing 16-bit instructions. rdar://9321541 llvm-svn: 129971
-
Rafael Espindola authored
X8664_ELFTargetObjectFile::getFDEEncoding to match reality. llvm-svn: 129959
-
Rafael Espindola authored
llvm-svn: 129955
-
Devang Patel authored
llvm-svn: 129952
-
Devang Patel authored
llvm-svn: 129947
-
- Apr 21, 2011
-
-
Devang Patel authored
llvm-svn: 129922
-
Justin Holewinski authored
llvm-svn: 129913
-
Che-Liang Chiou authored
This patch depends on the prior fix r129908 that changes to use std::find, rather than std::binary_search, on unordered array. Patch by Dan Bailey llvm-svn: 129909
-
Che-Liang Chiou authored
llvm-svn: 129908
-
Evan Cheng authored
llvm-svn: 129884
-
- Apr 20, 2011
-
-
Jakob Stoklund Olesen authored
On the x86-64 and thumb2 targets, some registers are more expensive to encode than others in the same register class. Add a CostPerUse field to the TableGen register description, and make it available from TRI->getCostPerUse. This represents the cost of a REX prefix or a 32-bit instruction encoding required by choosing a high register. Teach the greedy register allocator to prefer cheap registers for busy live ranges (as indicated by spill weight). llvm-svn: 129864
-
-
-
Justin Holewinski authored
used by Clang. To help Clang integration, the PTX target has been split into two targets: ptx32 and ptx64, depending on the desired pointer size. - Add GCCBuiltin class to all intrinsics - Split PTX target into ptx32 and ptx64 llvm-svn: 129851
-
Che-Liang Chiou authored
Patched by Dan Bailey llvm-svn: 129848