CmmParse: Emit source notes for assignments
authorBen Gamari <ben@smart-cactus.org>
Mon, 3 Jul 2017 21:15:23 +0000 (17:15 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 3 Jul 2017 22:58:11 +0000 (18:58 -0400)
Currently the line information for bare source C-- is rather spartan. These add
notes for assignments, which tend to be useful to identify. Unfortunately, we
had to settle for approximate source locations as none of the parsers in
CmmParse return located things. However, I don't think it's worth changing this.

compiler/cmm/CmmParse.y

index 9d404aa..e2fe593 100644 (file)
@@ -593,9 +593,9 @@ stmt    :: { CmmParse () }
 
 
         | lreg '=' expr ';'
-                { do reg <- $1; e <- $3; emitAssign reg e }
+                { do reg <- $1; e <- $3; withSourceNote $2 $4 (emitAssign reg e) }
         | type '[' expr ']' '=' expr ';'
-                { doStore $1 $3 $6 }
+                { withSourceNote $2 $7 (doStore $1 $3 $6) }
 
         -- Gah! We really want to say "foreign_results" but that causes
         -- a shift/reduce conflict with assignment.  We either