- Apr 23, 2011
-
-
Devang Patel authored
llvm-svn: 130028
-
Eric Christopher authored
llvm-svn: 130027
-
Jakob Stoklund Olesen authored
Sometimes it is better to split per block, and we missed those cases. llvm-svn: 130025
-
Mikhail Glushenkov authored
llvm-svn: 130021
-
- Apr 22, 2011
-
-
rdar://9289512Chris Lattner authored
fix bugs exposed by the gcc dejagnu testsuite: 1. The load may actually be used by a dead instruction, which would cause an assert. 2. The load may not be used by the current chain of instructions, and we could move it past a side-effecting instruction. Change how we process uses to define the problem away. llvm-svn: 130018
-
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: 130004
-
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
-
Frits van Bommel authored
llvm-svn: 129988
-
Eric Christopher authored
llvm-svn: 129984
-
Eric Christopher authored
llvm-svn: 129980
-
Eric Christopher authored
llvm-svn: 129978
-
Eric Christopher authored
llvm-svn: 129976
-
Eric Christopher authored
llvm-svn: 129975
-
Eric Christopher authored
Patch by Patrick Walton! llvm-svn: 129974
-
Eric Christopher authored
llvm-svn: 129973
-
NAKAMURA Takumi authored
llvm-svn: 129972
-
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
-
Evan Cheng authored
llvm-svn: 129970
-
Chandler Carruth authored
the first time through. llvm-svn: 129969
-
Chandler Carruth authored
Silences GCC warning. I wonder why Clang doesn't warn on this... llvm-svn: 129968
-
Bill Wendling authored
An exception is thrown via a call to _cxa_throw, which we don't expect to return. Therefore, the "true" part of the invoke goes to a BB that has 'unreachable' as its only instruction. This is lowered into an empty MachineBB. The landing pad for this invoke, however, is directly after the "true" MBB. When the empty MBB is removed, the landing pad is directly below the BB with the invoke call. The unconditional branch is removed and then the two blocks are merged together. The testcase is too big for a regression test. <rdar://problem/9305728> llvm-svn: 129965
-
Bob Wilson authored
This is needed so the front-end can see "aligned" attributes on the type for the pointer arguments. Radar 9311427. llvm-svn: 129964
-
Rafael Espindola authored
X8664_ELFTargetObjectFile::getFDEEncoding to match reality. llvm-svn: 129959
-
Rafael Espindola authored
llvm-svn: 129955
-
Rafael Espindola authored
llvm-svn: 129953
-
Devang Patel authored
llvm-svn: 129952
-
Devang Patel authored
llvm-svn: 129947
-
Devang Patel authored
llvm-svn: 129945
-
- Apr 21, 2011
-
-
Devang Patel authored
llvm-svn: 129938
-
Devang Patel authored
llvm-svn: 129934
-
Jay Foad authored
llvm-svn: 129932
-
Matt Beaumont-Gay authored
llvm-svn: 129928
-
Jakob Stoklund Olesen authored
These intervals are allocatable immediately after splitting, but they may be evicted because of later splitting. This is rare, but when it happens they should be split again. The remainder intervals that cannot be allocated after splitting still move directly to spilling. SplitEditor::finish can optionally provide a mapping from new live intervals back to the original interval indexes returned by openIntv(). Each original interval index can map to multiple new intervals after connected components have been separated. Dead code elimination may also add existing intervals to the list. The reverse mapping allows the SplitEditor client to treat the new intervals differently depending on the split region they came from. llvm-svn: 129925
-
Rafael Espindola authored
MC :-) llvm-svn: 129923
-
Devang Patel authored
llvm-svn: 129922
-
Devang Patel authored
llvm-svn: 129921
-
rdar://9289512Daniel Dunbar authored
which broke a couple GCC test suite tests at -O0. llvm-svn: 129914
-