mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-06 20:32:19 +00:00
Updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26375 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
71fb834b50
commit
53f280a30e
@ -157,6 +157,7 @@ aren't.
|
||||
|
||||
Use push/pop instructions in prolog/epilog sequences instead of stores off
|
||||
ESP (certain code size win, perf win on some [which?] processors).
|
||||
Also, it appears icc use push for parameter passing. Need to investigate.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
@ -411,22 +412,6 @@ void clearbit(int *target, int bit) {
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Easy: Global addresses are not always allowed as immediates. For this:
|
||||
|
||||
int dst = 0; int *ptr = 0;
|
||||
void foo() { ptr = &dst; }
|
||||
|
||||
we get this:
|
||||
|
||||
_foo:
|
||||
movl $_dst, %eax
|
||||
movl %eax, _ptr
|
||||
ret
|
||||
|
||||
When: "movl $_dst, _ptr" is sufficient.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Instead of the following for memset char*, 1, 10:
|
||||
|
||||
movl $16843009, 4(%edx)
|
||||
@ -505,10 +490,6 @@ and ISD::FMAX node types?
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Select (add, x, GlobalAddress) to ADD32ri, etc. when it's appropriate.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
The first BB of this code:
|
||||
|
||||
declare bool %foo()
|
||||
@ -533,4 +514,6 @@ _bar:
|
||||
|
||||
It would be better to emit "cmp %al, 1" than a xor and test.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Enable X86InstrInfo::convertToThreeAddress().
|
||||
|
Loading…
Reference in New Issue
Block a user