diff options
author | Magnus Lång <[email protected]> | 2016-03-17 21:37:26 +0100 |
---|---|---|
committer | Magnus Lång <[email protected]> | 2016-08-30 17:17:45 +0200 |
commit | dc4e9384c6f2f733ab0d12727ab53238bda3fbca (patch) | |
tree | 55c4d84effc98ae0bffbd9b7bc185d2d0a602ba6 /lib/hipe/amd64/hipe_amd64_sse2.erl | |
parent | 4b8c17b0901dfa356792c36f01d78de827cb6645 (diff) | |
download | otp-dc4e9384c6f2f733ab0d12727ab53238bda3fbca.tar.gz otp-dc4e9384c6f2f733ab0d12727ab53238bda3fbca.tar.bz2 otp-dc4e9384c6f2f733ab0d12727ab53238bda3fbca.zip |
hipe_x86: Minimise CFG<->linear conversions
Most x86 passes were either linearise(pass(to_cfg(Code))) or trivially
rewritable to process a CFG. This saves a great deal of time and memory
churn when compiling large programs.
Now, there will only ever be a single Linear->CFG conversion, just after
lowering from RTL, and only ever a single CFG->Linear conversion, just
before the finalise pass. Both of these now happen in hipe_x86_main.
Diffstat (limited to 'lib/hipe/amd64/hipe_amd64_sse2.erl')
-rw-r--r-- | lib/hipe/amd64/hipe_amd64_sse2.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/hipe/amd64/hipe_amd64_sse2.erl b/lib/hipe/amd64/hipe_amd64_sse2.erl index df78941be5..ea6b6cb9ba 100644 --- a/lib/hipe/amd64/hipe_amd64_sse2.erl +++ b/lib/hipe/amd64/hipe_amd64_sse2.erl @@ -30,9 +30,12 @@ %%---------------------------------------------------------------------- -map(Defun = #defun{code=Code0}) -> - Code1 = do_insns(Code0, []), - Defun#defun{code=Code1}. +map(CFG) -> + hipe_x86_cfg:map_bbs(fun do_bb/2, CFG). + +do_bb(_Lbl, BB) -> + Code = do_insns(hipe_bb:code(BB), []), + hipe_bb:code_update(BB, Code). do_insns([I|Insns], Accum) -> NewIs = do_insn(I), |