summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-03-26 10:30:41 -0700
committerCliff Click <cliffc@acm.org>2025-03-26 10:30:41 -0700
commit358496a9b250a42035575af1cf9ecf33e3013f03 (patch)
treeec26de67828813164a0c89619a260ecdbe9dd090
parentdfc82c5023a0b5595b6ed198d2111bf889f5bce6 (diff)
downloadSimple-358496a9b250a42035575af1cf9ecf33e3013f03.tar.gz
Simple-358496a9b250a42035575af1cf9ecf33e3013f03.zip
Update ASimpleReply.md
-rw-r--r--ASimpleReply.md4
1 files changed, 4 insertions, 0 deletions
diff --git a/ASimpleReply.md b/ASimpleReply.md
index 0a87acf3..20a377f2 100644
--- a/ASimpleReply.md
+++ b/ASimpleReply.md
@@ -41,9 +41,13 @@ Yes, so don't bother. Use a worklist! Hard guaranteed linear time to completio
## Other things?
Dead code elimination: free with backedges; basically when the backedge/ref-count drops to zero, recursively delete nodes. There's maybe 10 lines dedicated to this in Simple.
+
"Hard to introduce new control flow": Hello compiler writers? Sorry, can't hardly believe this one; editing a CFG is morally the same as editing the SoN, what's the issue? In the specific `min` case, the goal is to pick a place in the CFG to expand... which means a place needs to be picked, which for SoN usually means after Global Code Motion when "places" (e.g. classic CFG) is available again.
+
"Hard to figure out what's inside a loop": Again, Hello compiler writers? C2 certainly does lots of aggressive loop optimizations - which start by running a standard SCC, finding loop headers, walking the graph area constrained by the loop, producing a loop body for further manipulations... yada yada. Basically, I build loops and a loop tree via the Olde Fashioned method of running SCC.
+
"Compiling is slow" - Compiling is fast. He-said-She-said. Neen-neener. Data? Perf discussions with facts? Apples to apples comparisons? No? So how about the "compilation speed vs code quality" didn't meet our goals?
+
"Cache-unfriendly" - Same (lack of) argument. Certainly when I did C2 I was highly focused on cache-friendly and based on the vast compile speedup I obtained over all competitions (at that time every AOT compiler, GCC, LLVM) I was larger successful. C2 compiles take far less footprint (both cache and memory) that my "competitors". Mostly C2 compiles, despite aggressive inlining, fit easily in L2, nearly always in L1. Getting this right is important, so I suspect other things happened to make it miss for you. But also... no numbers from me either, so neen-neener again.
## postlog