Re:GCC 7 Release Series – Changes, New Features, and Fixes
by DannyBee on Sunday April 09, 2017 @01:10PM
(#14073245)
This is identical to what LLVM's load-store motion does for
loads, except for all expressions and not just loads.
It's actually not.
It's what GVNHoist does, but not MLSM.
MLSM only handles diamonds.In any case, because the GCC implementation is written on top of a sane PRE infrastructure, it is like 50 lines of code to do this :)
Re:GCC 7 Release Series – Changes, New Features, and Fixes
by mindleyhilner on Sunday April 09, 2017 @01:14PM
(#14073273)
It's actually not. It's what GVNHoist does, but not MLSM. MLSM only handles diamonds.
Fine, it's what MLSM aspires to: http://llvm-cs.pcc.me.uk/lib/Transforms/Scalar/MergedLoadSto... (:
Re:GCC 7 Release Series – Changes, New Features, and Fixes
by DannyBee on Sunday April 09, 2017 @04:53PM
(#14074303)
Writing "TODO: generalize to other regions" in a crazy N^3/N^4 approach to merging load/stores is like writing "TODO: solve prime number conjecture" in somebody's hand-rolled two's complement addition code.
Maybe it happens, but it ain't gonna happen with anything like this code :)
This is identical to what LLVM's load-store motion does for loads, except for all expressions and not just loads.