[PATCH] D51426: [Sema] Prohibit function-scope compound literals with address spaces.

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 30 01:15:39 PDT 2018

rjmccall added inline comments.

Comment at: lib/Sema/SemaExpr.cpp:5745
+    // C99 Function scope compound literals must have automatic
+    // storage which generally excludes address space-qualified ones.
+    Diag(LParenLoc, diag::err_compound_literal_with_address_space)
ebevhan wrote:
> rjmccall wrote:
> > Usually when we mention a standard section like this, it's a prelude to a quote.  If you're just paraphrasing, I think we can trust people to find the right standard section.
> Hm, alright. I figured it was better to both provide the exact section and also include a summary here so you don't have to look it up.
> Should I change it or is it good anyway?
It's fine to include a reference to the standard.  The way you've done it here makes it look like a quote at first glance, which it isn't.  You should just say "See C99" if you think that's an important citation to make.

In this case, though, I don't think it's a particularly valuable citation.  Remember that this code is in the middle of a function dedicated to the rules of section, so unless you're actually quoting the text because there's some important subtlety, I think you can assume general familiarity (and/or that the reader has the standard open).  There *is* a better citation, though: the Embedded C spec explicitly says:

  If the compound literal occurs inside the body of a function, the type name shall not be qualified by an address-space qualifier.

I'd cite it with a title like "Embedded C modifications to C99".

By the way, LLVM code style leaves a space between `if` and the opening parenthesis of the condition.

  rC Clang


More information about the cfe-commits mailing list