Hello all, I'm interested in improving GHC's C-- parser's support (and also making accomodations for the parser in our C-- pretty-printer) to the point where we can round-trip output from -ddump-opt-cmm with no semantic change. There are several roadblocks on the way here, but the one I'm currently tackling is the fact that the parser does not understand flow control statements like such:
if (b) goto foo; It requires that the statement be closed in braces, and this will generate a new, anonymous block containing the instruction: if (b) { goto foo; } becomes if (b) goto temp ... temp: goto foo; This is, somewhat surprisingly, preventing me from getting a nice minimal test-case for a bug in the linear register allocator. I need a way to not get an anonymous block being generated. I've tried extending the grammar to accept both, but for switch statements making the change at the obvious point introduces a reduce-reduce conflict. I suspect I can hack my way around it, but for now I've renamed the keyword to 'raw_switch', which doesn't accept blocks on the right side of the case. Cheers, Edward _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users