- Apr 13, 2008
-
-
Nicolas Geoffray authored
llvm-svn: 49611
-
Anton Korobeynikov authored
llvm-svn: 49593
-
- Apr 12, 2008
-
-
Arnold Schwaighofer authored
optimized x86-64 (and x86) calls so that they work (... at least for my test cases). Should fix the following problems: Problem 1: When i introduced the optimized handling of arguments for tail called functions (using a sequence of copyto/copyfrom virtual registers instead of always lowering to top of the stack) i did not handle byval arguments correctly e.g they did not work at all :). Problem 2: On x86-64 after the arguments of the tail called function are moved to their registers (which include ESI/RSI etc), tail call optimization performs byval lowering which causes xSI,xDI, xCX registers to be overwritten. This is handled in this patch by moving the arguments to virtual registers first and after the byval lowering the arguments are moved from those virtual registers back to RSI/RDI/RCX. llvm-svn: 49584
-
Dan Gohman authored
on any current target and aren't optimized in DAGCombiner. Instead of using intermediate nodes, expand the operations, choosing between simple loads/stores, target-specific code, and library calls, immediately. Previously, the code to emit optimized code for these operations was only used at initial SelectionDAG construction time; now it is used at all times. This fixes some cases where rep;movs was being used for small copies where simple loads/stores would be better. This also cleans up code that checks for alignments less than 4; let the targets make that decision instead of doing it in target-independent code. This allows x86 to use rep;movs in low-alignment cases. Also, this fixes a bug that resulted in the use of rep;stos for memsets of 0 with non-constant memory size when the alignment was at least 4. It's better to use the library in this case, which can be significantly faster when the size is large. This also preserves more SourceValue information when memory intrinsics are lowered into simple loads/stores. llvm-svn: 49572
-
Dan Gohman authored
8-byte-aligned data. llvm-svn: 49571
-
Nate Begeman authored
llvm-svn: 49569
-
- Apr 10, 2008
-
-
Chris Lattner authored
llvm-svn: 49466
-
Chris Lattner authored
llvm-svn: 49465
-
Chris Lattner authored
MOVZQI2PQIrr. This would be better handled as a dag combine (with the goal of eliminating the bitconvert) but I don't know how to do that safely. Thoughts welcome. llvm-svn: 49463
-
- Apr 09, 2008
-
-
Dan Gohman authored
llvm-svn: 49446
-
Dan Gohman authored
is needed for the x86-64-ABI handling of structs that contain floating-point members that are returned by value. llvm-svn: 49441
-
Dan Gohman authored
llvm-svn: 49440
-
- Apr 08, 2008
-
-
Dale Johannesen authored
llvm-svn: 49389
-
Dale Johannesen authored
correctly when unwind info is being generated. llvm-svn: 49366
-
Dale Johannesen authored
Corresponds to -fno-unwind-tables (usually default in gcc). llvm-svn: 49361
-
- Apr 07, 2008
-
-
Dan Gohman authored
review feedback from Chris quite a while ago. No functionality change. llvm-svn: 49348
-
Roman Levenstein authored
by Dan Gohman is fixed. llvm-svn: 49330
-
- Apr 06, 2008
-
-
Gabor Greif authored
Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
-
- Apr 05, 2008
-
-
Evan Cheng authored
llvm-svn: 49244
-
- Apr 04, 2008
-
-
Torok Edwin authored
llvm-svn: 49218
-
- Apr 03, 2008
-
-
Evan Cheng authored
llvm-svn: 49158
-
Evan Cheng authored
Fix x86-64 encoding bug. REX prefix must always follow 0x0F prefix. For example, extractps in 64bit mode: 66 REX 0F 3A 17, not 66 0F 3A REX 17. llvm-svn: 49157
-
Evan Cheng authored
llvm-svn: 49156
-
Evan Cheng authored
llvm-svn: 49129
-
Evan Cheng authored
llvm-svn: 49124
-
Dan Gohman authored
it causes compile errors. llvm-svn: 49122
-
- Apr 02, 2008
-
-
Dan Gohman authored
now that llvm-gcc is lowering appropriately-sized struct returns to i128 on x86-64. llvm-svn: 49109
-
Dale Johannesen authored
llvm-svn: 49096
-
Anton Korobeynikov authored
when some another register is used for argument passing. Currently is used on Win64. llvm-svn: 49079
-
Dale Johannesen authored
review feedback. -enable-eh is still accepted but doesn't do anything. EH intrinsics use Dwarf EH if the target supports that, and are handled by LowerInvoke otherwise. The separation of the EH table and frame move data is, I think, logically figured out, but either one still causes full EH info to be generated (not sure how to split the metadata correctly). MachineModuleInfo::needsFrameInfo is no longer used and is removed. llvm-svn: 49064
-
Evan Cheng authored
ReMat of load from stub in pic mode extends the life of pic base. Currently spiller doesn't do a good job of estimating the impact. Disable for now. llvm-svn: 49059
-
- Apr 01, 2008
-
-
Evan Cheng authored
llvm-svn: 49054
-
Dan Gohman authored
llvm-svn: 49050
-
Dan Gohman authored
llvm-svn: 49048
-
Dale Johannesen authored
llvm-svn: 49046
-
Evan Cheng authored
llvm-svn: 49037
-
Evan Cheng authored
llvm-svn: 49012
-
Dale Johannesen authored
llvm-svn: 49011
-
Dale Johannesen authored
not marked nounwind, or for all functions when -enable-eh is set, provided the target supports Dwarf EH. llvm-gcc generates nounwind in the right places; other FEs will need to do so also. Given such a FE, -enable-eh should no longer be needed. llvm-svn: 49006
-
Evan Cheng authored
llvm-svn: 49002
-