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();
|
HandlePragmaPack();
|
||||||
return StmtEmpty();
|
return StmtEmpty();
|
||||||
|
|
||||||
|
case tok::annot_pragma_msstruct:
|
||||||
|
ProhibitAttributes(Attrs);
|
||||||
|
HandlePragmaMSStruct();
|
||||||
|
return StmtEmpty();
|
||||||
|
|
||||||
case tok::annot_pragma_align:
|
case tok::annot_pragma_align:
|
||||||
ProhibitAttributes(Attrs);
|
ProhibitAttributes(Attrs);
|
||||||
HandlePragmaAlign();
|
HandlePragmaAlign();
|
||||||
return StmtEmpty();
|
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:
|
case tok::annot_pragma_fp_contract:
|
||||||
ProhibitAttributes(Attrs);
|
ProhibitAttributes(Attrs);
|
||||||
HandlePragmaFPContract();
|
HandlePragmaFPContract();
|
||||||
|
|
|
@ -157,6 +157,15 @@ void PR10878() { SHA384Pad(0); }
|
||||||
// CHECK: call void @SHA384Pad(i8* null)
|
// 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
|
///////////// TODO: stuff that still doesn't work
|
||||||
|
|
||||||
// due to the fact that disparate TopLevelDecls cannot affect each other
|
// due to the fact that disparate TopLevelDecls cannot affect each other
|
||||||
|
|
Loading…
Reference in New Issue