-fms-extensions: Implement half of #pragma init_seg
Summary: This pragma is very rare. We could *hypothetically* lower some uses of it down to @llvm.global_ctors, but given that GlobalOpt isn't able to optimize prioritized global ctors today, there's really no point. If we wanted to do this in the future, I would check if the section used in the pragma started with ".CRT$XC" and had up to two characters after it. Those two characters could form the 16-bit initialization priority that we support in @llvm.global_ctors. We would have to teach LLVM to lower prioritized global ctors on COFF as well. This should let us compile some silly uses of this pragma in WebKit / Blink. Reviewers: rsmith, majnemer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4549 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213593 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Basic/Attr.td 12 additions, 0 deletionsinclude/clang/Basic/Attr.td
- include/clang/Basic/AttrDocs.td 16 additions, 0 deletionsinclude/clang/Basic/AttrDocs.td
- include/clang/Basic/DiagnosticParseKinds.td 3 additions, 0 deletionsinclude/clang/Basic/DiagnosticParseKinds.td
- include/clang/Parse/Parser.h 1 addition, 1 deletioninclude/clang/Parse/Parser.h
- include/clang/Sema/Sema.h 8 additions, 0 deletionsinclude/clang/Sema/Sema.h
- lib/CodeGen/CGDeclCXX.cpp 31 additions, 2 deletionslib/CodeGen/CGDeclCXX.cpp
- lib/CodeGen/CodeGenModule.h 3 additions, 0 deletionslib/CodeGen/CodeGenModule.h
- lib/Parse/ParsePragma.cpp 53 additions, 4 deletionslib/Parse/ParsePragma.cpp
- lib/Parse/Parser.cpp 1 addition, 1 deletionlib/Parse/Parser.cpp
- lib/Sema/Sema.cpp 1 addition, 1 deletionlib/Sema/Sema.cpp
- lib/Sema/SemaAttr.cpp 9 additions, 0 deletionslib/Sema/SemaAttr.cpp
- lib/Sema/SemaDecl.cpp 7 additions, 0 deletionslib/Sema/SemaDecl.cpp
- test/CodeGenCXX/pragma-init_seg.cpp 72 additions, 16 deletionstest/CodeGenCXX/pragma-init_seg.cpp
- test/SemaCXX/pragma-init_seg.cpp 15 additions, 0 deletionstest/SemaCXX/pragma-init_seg.cpp
Loading
Please register or sign in to comment