Recommit r308327 3rd time: Add a warning for missing
'#pragma pack (pop)' and suspicious uses of '#pragma pack' in included files The second recommit (r309106) was reverted because the "non-default #pragma pack value chages the alignment of struct or union members in the included file" warning proved to be too aggressive for external projects like Chromium (https://bugs.chromium.org/p/chromium/issues/detail?id=749197). This recommit makes the problematic warning a non-default one, and gives it the -Wpragma-pack-suspicious-include warning option. The first recommit (r308441) caused a "non-default #pragma pack value might change the alignment of struct or union members in the included file" warning in LLVM itself. This recommit tweaks the added warning to avoid warnings for #includes that don't have any records that are affected by the non-default alignment. This tweak avoids the previously emitted warning in LLVM. Original message: This commit adds a new -Wpragma-pack warning. It warns in the following cases: - When a translation unit is missing terminating #pragma pack (pop) directives. - When entering an included file if the current alignment value as determined by '#pragma pack' directives is different from the default alignment value. - When leaving an included file that changed the state of the current alignment value. rdar://10184173 Differential Revision: https://reviews.llvm.org/D35484 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@309386 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Basic/DiagnosticGroups.td 3 additions, 1 deletioninclude/clang/Basic/DiagnosticGroups.td
- include/clang/Basic/DiagnosticSemaKinds.td 11 additions, 0 deletionsinclude/clang/Basic/DiagnosticSemaKinds.td
- include/clang/Lex/PPCallbacks.h 6 additions, 0 deletionsinclude/clang/Lex/PPCallbacks.h
- include/clang/Sema/Sema.h 31 additions, 5 deletionsinclude/clang/Sema/Sema.h
- include/clang/Serialization/ASTReader.h 1 addition, 0 deletionsinclude/clang/Serialization/ASTReader.h
- lib/Parse/ParsePragma.cpp 7 additions, 2 deletionslib/Parse/ParsePragma.cpp
- lib/Sema/Sema.cpp 54 additions, 0 deletionslib/Sema/Sema.cpp
- lib/Sema/SemaAttr.cpp 54 additions, 1 deletionlib/Sema/SemaAttr.cpp
- lib/Serialization/ASTReader.cpp 4 additions, 2 deletionslib/Serialization/ASTReader.cpp
- lib/Serialization/ASTWriter.cpp 1 addition, 0 deletionslib/Serialization/ASTWriter.cpp
- test/OpenMP/declare_simd_messages.cpp 1 addition, 1 deletiontest/OpenMP/declare_simd_messages.cpp
- test/PCH/pragma-pack.c 15 additions, 15 deletionstest/PCH/pragma-pack.c
- test/PCH/suspicious-pragma-pack.c 8 additions, 0 deletionstest/PCH/suspicious-pragma-pack.c
- test/Parser/pragma-options.c 1 addition, 1 deletiontest/Parser/pragma-options.c
- test/Parser/pragma-options.cpp 1 addition, 1 deletiontest/Parser/pragma-options.cpp
- test/Parser/pragma-pack.c 1 addition, 1 deletiontest/Parser/pragma-pack.c
- test/Sema/Inputs/pragma-pack1.h 27 additions, 0 deletionstest/Sema/Inputs/pragma-pack1.h
- test/Sema/Inputs/pragma-pack2.h 8 additions, 0 deletionstest/Sema/Inputs/pragma-pack2.h
- test/Sema/pragma-pack.c 5 additions, 0 deletionstest/Sema/pragma-pack.c
- test/Sema/suspicious-pragma-pack.c 50 additions, 0 deletionstest/Sema/suspicious-pragma-pack.c
Loading
Please register or sign in to comment