[cfe-commits] [PATCH] Multiple pragmas at the start of a compound statement.

Lang Hames lhames at gmail.com
Thu Oct 25 13:39:02 PDT 2012


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121025/69573da7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: compound_stmt_leading_pragmas.patch
Type: application/octet-stream
Size: 1069 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121025/69573da7/attachment.obj>


More information about the cfe-commits mailing list