- Apr 22, 2011
-
-
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
-
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
-
Jakob Stoklund Olesen authored
These values were not used for anything. Spill size and alignment is a property of the register class, not the register. llvm-svn: 129906
-
Nick Lewycky authored
necessary since gcov counts transitions between blocks. It can't see if you've run every line in a straight-line function, so we add an edge for it to notice. llvm-svn: 129905
-
Nick Lewycky authored
comment for 80 columns. llvm-svn: 129904
-
Nick Lewycky authored
instrument the program to emit .gcda. TODO: we should emit slightly different .gcda files when .gcno emission is off. llvm-svn: 129903
-
Nick Lewycky authored
llvm-svn: 129902
-