diff options
author | Hans Wennborg <hans@hanshq.net> | 2017-07-19 13:02:51 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2017-07-19 13:02:51 +0000 |
commit | d916f2627f2d2936405d973bf354a5b3cbd4afb8 (patch) | |
tree | 07ac2951b71839f8d90f19ce8fc52597e22c08c5 /include | |
parent | cee8fa8282d9c3715bd90910977a7a4767817aa7 (diff) |
Merging r308455:
------------------------------------------------------------------------
r308455 | hans | 2017-07-19 05:31:01 -0700 (Wed, 19 Jul 2017) | 16 lines
Revert r308441 "Recommit r308327: Add a warning for missing '#pragma pack (pop)' and suspicious uses of '#pragma pack' in included files"
This seems to have broken the sanitizer-x86_64-linux buildbot. Reverting until
it's fixed, especially since this landed just before the 5.0 branch.
> 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/branches/release_50@308457 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 3 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 10 | ||||
-rw-r--r-- | include/clang/Lex/PPCallbacks.h | 6 | ||||
-rw-r--r-- | include/clang/Sema/Sema.h | 31 | ||||
-rw-r--r-- | include/clang/Serialization/ASTReader.h | 1 |
5 files changed, 6 insertions, 45 deletions
diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 1dbe746f60..53d8f36ecd 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -469,9 +469,8 @@ def IgnoredPragmaIntrinsic : DiagGroup<"ignored-pragma-intrinsic">; def UnknownPragmas : DiagGroup<"unknown-pragmas">; def IgnoredPragmas : DiagGroup<"ignored-pragmas", [IgnoredPragmaIntrinsic]>; def PragmaClangAttribute : DiagGroup<"pragma-clang-attribute">; -def PragmaPack : DiagGroup<"pragma-pack">; def Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas, - PragmaClangAttribute, PragmaPack]>; + PragmaClangAttribute]>; def UnknownWarningOption : DiagGroup<"unknown-warning-option">; def NSobjectAttribute : DiagGroup<"NSObject-attribute">; def IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index a9b76a345d..af14638e1d 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -712,16 +712,6 @@ def err_pragma_options_align_mac68k_target_unsupported : Error< def warn_pragma_pack_invalid_alignment : Warning< "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'">, InGroup<IgnoredPragmas>; -def warn_pragma_pack_non_default_at_include : Warning< - "non-default #pragma pack value might change the alignment of struct or " - "union members in the included file">, InGroup<PragmaPack>; -def warn_pragma_pack_modified_after_include : Warning< - "the current #pragma pack aligment value is modified in the included " - "file">, InGroup<PragmaPack>; -def warn_pragma_pack_no_pop_eof : Warning<"unterminated " - "'#pragma pack (push, ...)' at end of file">, InGroup<PragmaPack>; -def note_pragma_pack_here : Note< - "previous '#pragma pack' directive that modifies alignment is here">; // Follow the Microsoft implementation. def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">; def warn_pragma_pack_pop_identifer_and_alignment : Warning< diff --git a/include/clang/Lex/PPCallbacks.h b/include/clang/Lex/PPCallbacks.h index c1e1a54960..81c3bd7d14 100644 --- a/include/clang/Lex/PPCallbacks.h +++ b/include/clang/Lex/PPCallbacks.h @@ -381,12 +381,6 @@ public: Second->Ident(Loc, str); } - void PragmaDirective(SourceLocation Loc, - PragmaIntroducerKind Introducer) override { - First->PragmaDirective(Loc, Introducer); - Second->PragmaDirective(Loc, Introducer); - } - void PragmaComment(SourceLocation Loc, const IdentifierInfo *Kind, StringRef Str) override { First->PragmaComment(Loc, Kind, Str); diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 957460f4b3..5a70854570 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -208,7 +208,6 @@ namespace sema { class FunctionScopeInfo; class LambdaScopeInfo; class PossiblyUnreachableDiag; - class SemaPPCallbacks; class TemplateDeductionInfo; } @@ -382,12 +381,11 @@ public: llvm::StringRef StackSlotLabel; ValueType Value; SourceLocation PragmaLocation; - SourceLocation PragmaPushLocation; - Slot(llvm::StringRef StackSlotLabel, ValueType Value, - SourceLocation PragmaLocation, SourceLocation PragmaPushLocation) - : StackSlotLabel(StackSlotLabel), Value(Value), - PragmaLocation(PragmaLocation), - PragmaPushLocation(PragmaPushLocation) {} + Slot(llvm::StringRef StackSlotLabel, + ValueType Value, + SourceLocation PragmaLocation) + : StackSlotLabel(StackSlotLabel), Value(Value), + PragmaLocation(PragmaLocation) {} }; void Act(SourceLocation PragmaLocation, PragmaMsStackAction Action, @@ -418,8 +416,6 @@ public: explicit PragmaStack(const ValueType &Default) : DefaultValue(Default), CurrentValue(Default) {} - bool hasValue() const { return CurrentValue != DefaultValue; } - SmallVector<Slot, 2> Stack; ValueType DefaultValue; // Value used for PSK_Reset action. ValueType CurrentValue; @@ -441,8 +437,6 @@ public: // Sentinel to represent when the stack is set to mac68k alignment. static const unsigned kMac68kAlignmentSentinel = ~0U; PragmaStack<unsigned> PackStack; - // The current #pragma pack values and locations at each #include. - SmallVector<std::pair<unsigned, SourceLocation>, 8> PackIncludeStack; // Segment #pragmas. PragmaStack<StringLiteral *> DataSegStack; PragmaStack<StringLiteral *> BSSSegStack; @@ -8188,15 +8182,6 @@ public: void ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action, StringRef SlotLabel, Expr *Alignment); - enum class PragmaPackDiagnoseKind { - NonDefaultStateAtInclude, - ChangedStateAtExit - }; - - void DiagnoseNonDefaultPragmaPack(PragmaPackDiagnoseKind Kind, - SourceLocation IncludeLoc); - void DiagnoseUnterminatedPragmaPack(); - /// ActOnPragmaMSStruct - Called on well formed \#pragma ms_struct [on|off]. void ActOnPragmaMSStruct(PragmaMSStructKind Kind); @@ -10398,12 +10383,6 @@ private: IdentifierInfo *Ident_NSError = nullptr; - /// \brief The handler for the FileChanged preprocessor events. - /// - /// Used for diagnostics that implement custom semantic analysis for #include - /// directives, like -Wpragma-pack. - sema::SemaPPCallbacks *SemaPPCallbackHandler; - protected: friend class Parser; friend class InitializationSequence; diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index 19f0b81913..eafa051758 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -825,7 +825,6 @@ private: struct PragmaPackStackEntry { unsigned Value; SourceLocation Location; - SourceLocation PushLocation; StringRef SlotLabel; }; llvm::SmallVector<PragmaPackStackEntry, 2> PragmaPackStack; |