mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-12 18:33:22 +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