llvm-project/llvm/lib
Evan Cheng 66298e226f There are times when the coalescer would not coalesce away a copy but the copy
can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.

The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
   legal) so the copy can be eliminated.

This eliminates 443 extra moves from 403.gcc.

llvm-svn: 43662
2007-11-03 07:20:12 +00:00
..
Analysis Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize. 2007-11-01 20:53:16 +00:00
Archive finishing touches of bytecode -> bitcode changes. also unbreak Windows 2007-07-06 20:28:40 +00:00
AsmParser Next PPC long double bits. First cut at constants. 2007-10-11 18:07:22 +00:00
Bitcode Removed ReadVal from SerializeTrait<T>, and also removed it from 2007-11-01 22:23:34 +00:00
CodeGen There are times when the coalescer would not coalesce away a copy but the copy 2007-11-03 07:20:12 +00:00
Debugger switch this to bitcode instead of bytecode 2007-05-06 09:29:13 +00:00
ExecutionEngine Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize. 2007-11-01 20:53:16 +00:00
Linker Use correct parentheses with the '&& "..."' idiom in an assert. 2007-10-08 15:13:30 +00:00
Support Remove some unnecessary C-style statics. 2007-11-02 15:10:05 +00:00
System Silence a warning saying that the variables always resolve to "true" in an 2007-11-01 09:38:19 +00:00
Target Unbreak tailcall opt. 2007-11-02 17:45:40 +00:00
Transforms Add std:: to sort calls. 2007-11-02 22:24:01 +00:00
VMCore Don't barf on empty basic blocks. Do not rely on assert 2007-11-01 10:50:26 +00:00
Makefile build lib/Archive instead of lib/Bytecode 2007-05-06 19:50:06 +00:00