summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2017-07-19 13:02:51 +0000
committerHans Wennborg <hans@hanshq.net>2017-07-19 13:02:51 +0000
commitd916f2627f2d2936405d973bf354a5b3cbd4afb8 (patch)
tree07ac2951b71839f8d90f19ce8fc52597e22c08c5 /include
parentcee8fa8282d9c3715bd90910977a7a4767817aa7 (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.td3
-rw-r--r--include/clang/Basic/DiagnosticSemaKinds.td10
-rw-r--r--include/clang/Lex/PPCallbacks.h6
-rw-r--r--include/clang/Sema/Sema.h31
-rw-r--r--include/clang/Serialization/ASTReader.h1
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;