mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
add a note.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45388 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9bfcc624ba
commit
a1643ba71a
@ -480,6 +480,38 @@ int i;
|
||||
}
|
||||
}
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
We should investigate an instruction sinking pass. Consider this silly
|
||||
example in pic mode:
|
||||
|
||||
#include <assert.h>
|
||||
void foo(int x) {
|
||||
assert(x);
|
||||
//...
|
||||
}
|
||||
|
||||
we compile this to:
|
||||
_foo:
|
||||
subl $28, %esp
|
||||
call "L1$pb"
|
||||
"L1$pb":
|
||||
popl %eax
|
||||
cmpl $0, 32(%esp)
|
||||
je LBB1_2 # cond_true
|
||||
LBB1_1: # return
|
||||
# ...
|
||||
addl $28, %esp
|
||||
ret
|
||||
LBB1_2: # cond_true
|
||||
...
|
||||
|
||||
The PIC base computation (call+popl) is only used on one path through the
|
||||
code, but is currently always computed in the entry block. It would be
|
||||
better to sink the picbase computation down into the block for the
|
||||
assertion, as it is the only one that uses it. This happens for a lot of
|
||||
code with early outs.
|
||||
|
||||
In this case, whole-function-isel would also handle this.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user