forked from OSchip/llvm-project
People put pragmas in crazy places; add more handling. PR14046.
I think our general framework for parser pragmas needs a bit more work, but I'm not planning on working on it at the moment. llvm-svn: 165558
This commit is contained in:
parent
a5d3ba008b
commit
bbbbac6012
|
@ -254,11 +254,31 @@ Retry:
|
|||
HandlePragmaPack();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_msstruct:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaMSStruct();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_align:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaAlign();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_weak:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaWeak();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_weakalias:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaWeakAlias();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_redefine_extname:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaRedefineExtname();
|
||||
return StmtEmpty();
|
||||
|
||||
case tok::annot_pragma_fp_contract:
|
||||
ProhibitAttributes(Attrs);
|
||||
HandlePragmaFPContract();
|
||||
|
|
|
@ -157,6 +157,15 @@ void PR10878() { SHA384Pad(0); }
|
|||
// CHECK: call void @SHA384Pad(i8* null)
|
||||
|
||||
|
||||
// PR14046: Parse #pragma weak in function-local context
|
||||
extern int PR14046e(void);
|
||||
void PR14046f() {
|
||||
#pragma weak PR14046e
|
||||
PR14046e();
|
||||
}
|
||||
// CHECK: declare extern_weak i32 @PR14046e()
|
||||
|
||||
|
||||
///////////// TODO: stuff that still doesn't work
|
||||
|
||||
// due to the fact that disparate TopLevelDecls cannot affect each other
|
||||
|
|
Loading…
Reference in New Issue