r231317 - Implement section pragma feedback on r205810
John McCall
rjmccall at apple.com
Wed Mar 4 18:45:54 PST 2015
> On Mar 4, 2015, at 3:39 PM, Reid Kleckner <reid at kleckner.net> wrote:
> Author: rnk
> Date: Wed Mar 4 17:39:17 2015
> New Revision: 231317
>
> URL: http://llvm.org/viewvc/llvm-project?rev=231317&view=rev
> Log:
> Implement section pragma feedback on r205810
>
> Mostly short-circuits some conditionals. Adds target validation of
> sections passed to these pragmas.
>
> Modified:
> cfe/trunk/include/clang/Sema/Sema.h
> cfe/trunk/lib/Sema/SemaAttr.cpp
> cfe/trunk/lib/Sema/SemaDecl.cpp
> cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=231317&r1=231316&r2=231317&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Wed Mar 4 17:39:17 2015
> @@ -2342,6 +2342,15 @@ SectionAttr *Sema::mergeSectionAttr(Decl
> AttrSpellingListIndex);
> }
>
> +bool Sema::checkSectionName(SourceLocation LiteralLoc, StringRef SecName) {
> + std::string Error = Context.getTargetInfo().isValidSectionSpecifier(SecName);
> + if (!Error.empty()) {
> + Diag(LiteralLoc, diag::err_attribute_section_invalid_for_target) << Error;
> + return false;
> + }
> + return true;
> +}
> +
> static void handleSectionAttr(Sema &S, Decl *D, const AttributeList &Attr) {
> // Make sure that there is a string literal as the sections's single
> // argument.
> @@ -2350,6 +2359,9 @@ static void handleSectionAttr(Sema &S, D
> if (!S.checkStringLiteralArgumentAttr(Attr, 0, Str, &LiteralLoc))
> return;
>
> + if (!S.checkSectionName(LiteralLoc, Str))
> + return;
> +
> // If the target wants to validate the section specifier, make it happen.
> std::string Error = S.Context.getTargetInfo().isValidSectionSpecifier(Str);
> if (!Error.empty()) {
I think you copied the body of checkSectionName from this function and
then forgot to remove it from the original.
John.
More information about the cfe-commits
mailing list