Actual meat: https://arxiv.org/abs/2510.20765
27 karma · joined December 2, 2014
--- before 2018-01-31 17:12:13.626560688 -0800
+++ after 2018-01-31 17:12:17.494580179 -0800
@@ -1 +1 @@
-uint32_t buf = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);
+uint32_t *buf = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);EDIT: Unless there's some dependence between m and n, like if taller buildings always need more shafts or something.
Though this might be information that rustc knows about but not LLVM.
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... (:This is identical to what LLVM's load-store motion does for loads, except for all expressions and not just loads.
It attempts to move evaluation of expressions executed on all paths to the function *exit* as early as possible, which helps primarily for code size, but can be useful for speed of generated code as well. [Emphasis added.]
Typo? PRE hoists upwards, so it would make sense to move closer to entry, not exit.