Hi All, Tim Northover pointed out that there's a flaw in my recent FP_CONTRACT patch (r166383). That patch restricted FP_CONTRACT (or rather tok::annot_pragma_fp_contract) to appearing as the first token in a compound statement. The problem with my patch is that it prohibits things like:
void foo() {
#pragma MS_STRUCT ON
#pragma STDC FP_CONTRACT ON
// ...
}
Which isn't prohibited by the C99 spec, and I think seems reasonable.
A simple solution to the problem is to loop at the start of a compound
statement parsing tokens that can reasonably appear there (FP_CONTRACT,
MS_STRUCT, maybe others?), then break out of that look when an unhandled
token encountered. Attached is a patch that implements this approach,
processing FP_CONTRACT and MS_STRUCT pragmas at the start of compound
statements before falling through.
Not being a language lawyer, is what else should be handled in this loop?
Does this seem like a reasonable approach?
- Lang.
compound_stmt_leading_pragmas.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
