- Dec 04, 2009
-
-
Jakob Stoklund Olesen authored
The coalescer is supposed to clean these up, but when setting up parameters for a function call, there may be copies to physregs. If the defining instruction has been LICM'ed far away, the coalescer won't touch it. The register allocation hint does not always work - when the register allocator is backtracking, it clears the hints. This patch takes care of a few more cases that r90163 missed. llvm-svn: 90502
-
Evan Cheng authored
- If the reaching definition is an undef and the use is a PHI, add the implicit_def to the end of the source block. - When reaching value is replaced with another, update the cache as well. llvm-svn: 90501
-
Devang Patel authored
Insert composite type DIE into the map before processing type fields. This allows fields to find their context DIE from the map. llvm-svn: 90498
-
- Dec 03, 2009
-
-
Evan Cheng authored
llvm-svn: 90489
-
Evan Cheng authored
llvm-svn: 90488
-
Duncan Sands authored
Pointed out by Javier Martinez (who also provided a patch). Since this logic is not used on (for example) x86, I guess nobody noticed. Tested by generating SHL, SRL, SRA on various choices of i64 for all possible shift amounts, and comparing with gcc. Since I did this on x86-32, I had to force the use of ExpandShiftWithUnknownAmountBit. What I'm saying here is that I don't have a testcase I can add to the repository. llvm-svn: 90482
-
Jakob Stoklund Olesen authored
llvm-svn: 90481
-
Devang Patel authored
llvm-svn: 90474
-
Evan Cheng authored
llvm-svn: 90432
-
Nate Begeman authored
Don't pull vector sext through both hands of a logical operation, since doing so prevents the fusion of vector sext and setcc into vsetcc. Add a testcase for the above transformation. Fix a bogus use of APInt noticed while tracking this down. llvm-svn: 90423
-
Jakob Stoklund Olesen authored
llvm-svn: 90415
-
Evan Cheng authored
llvm-svn: 90395
-
Jakob Stoklund Olesen authored
The MO reference to a MachineOperand can be invalidated by MachineInstr::addOperand. Don't even use it for debugging. llvm-svn: 90381
-
Devang Patel authored
Emit method definition DIE at module level (even for methods with inlined functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite. llvm-svn: 90375
-
Chris Lattner authored
Patch by Howard Hinnant! llvm-svn: 90365
-
- Dec 02, 2009
-
-
Douglas Gregor authored
llvm-svn: 90354
-
Evan Cheng authored
llvm-svn: 90353
-
Jim Grosbach authored
llvm-svn: 90337
-
Jim Grosbach authored
No functionality change. llvm-svn: 90336
-
Bob Wilson authored
llvm-svn: 90326
-
Devang Patel authored
llvm-svn: 90318
-
Devang Patel authored
llvm-svn: 90281
-
- Dec 01, 2009
-
-
Evan Cheng authored
- A valno should be set HasRedefByEC if there is an early clobber def in the middle of its live ranges. It should not be set if the def of the valno is defined by an early clobber. - If a physical register def is tied to an use and it's an early clobber, it just means the HasRedefByEC is set since it's still one continuous live range. - Add a couple of missing checks for HasRedefByEC in the coalescer. In general, it should not coalesce a vr with a physical register if the physical register has a early clobber def somewhere. This is overly conservative but that's the price for using such a nasty inline asm "feature". llvm-svn: 90269
-
Dan Gohman authored
framework omits differentiated edge sources in the case where the labels are empty strings. llvm-svn: 90254
-
Dan Gohman authored
llvm-svn: 90253
-
Dan Gohman authored
llvm-svn: 90252
-
Devang Patel authored
Clear function specific containers while processing end of a function, even if DW_TAG_subprogram for current function is not found. llvm-svn: 90247
-
Jakob Stoklund Olesen authored
We want LiveVariables clients to use methods rather than accessing the getVarInfo data structure directly. That way it will be possible to change the LiveVariables representation. llvm-svn: 90240
-
Jakob Stoklund Olesen authored
This means that well connected blocks are copy coalesced before the less connected blocks. Connected blocks are more difficult to coalesce because intervals are more complicated, so handling them first gives a greater chance of success. llvm-svn: 90194
-
Dan Gohman authored
DICompileUnit. This code now prints debug filenames successfully. llvm-svn: 90181
-
Evan Cheng authored
llvm-svn: 90180
-
Devang Patel authored
llvm-svn: 90172
-
- Nov 30, 2009
-
-
Jakob Stoklund Olesen authored
New virtual registers created for spill intervals should inherit allocation hints from the original register. This helps us avoid silly copies when rematting values that are copied to a physical register: leaq _.str44(%rip), %rcx movq %rcx, %rsi call _strcmp becomes: leaq _.str44(%rip), %rsi call _strcmp The coalescer will not touch the movq because that would tie down the physical register. llvm-svn: 90163
-
Bob Wilson authored
branches even when optimizing for code size. Unless we find evidence to the contrary in the future, the special treatment for indirect branches does not have a significant effect on code size, and performance still matters with -Os. llvm-svn: 90147
-
Bob Wilson authored
for all the processors where I have tried it, and even when it might not help performance, the cost is quite low. The opportunities for duplicating indirect branches are limited by other factors so code size does not change much due to tail duplicating indirect branches aggressively. llvm-svn: 90144
-
Tobias Grosser authored
llvm-svn: 90136
-
Tobias Grosser authored
llvm-svn: 90134
-
Tobias Grosser authored
llvm-svn: 90133
-
Mon P Wang authored
divide/remainder since these operations can trap by unroll them and adding undefs for the resulting vector. llvm-svn: 90108
-
- Nov 26, 2009
-
-
Bob Wilson authored
llvm-svn: 89968
-