forked from OSchip/llvm-project
Revert r308327
I forgot to test clang-tools-extra which is now failing. llvm-svn: 308328
This commit is contained in:
parent
ad273341a4
commit
aa61922157
|
@ -467,9 +467,8 @@ def IgnoredPragmaIntrinsic : DiagGroup<"ignored-pragma-intrinsic">;
|
||||||
def UnknownPragmas : DiagGroup<"unknown-pragmas">;
|
def UnknownPragmas : DiagGroup<"unknown-pragmas">;
|
||||||
def IgnoredPragmas : DiagGroup<"ignored-pragmas", [IgnoredPragmaIntrinsic]>;
|
def IgnoredPragmas : DiagGroup<"ignored-pragmas", [IgnoredPragmaIntrinsic]>;
|
||||||
def PragmaClangAttribute : DiagGroup<"pragma-clang-attribute">;
|
def PragmaClangAttribute : DiagGroup<"pragma-clang-attribute">;
|
||||||
def PragmaPack : DiagGroup<"pragma-pack">;
|
|
||||||
def Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas,
|
def Pragmas : DiagGroup<"pragmas", [UnknownPragmas, IgnoredPragmas,
|
||||||
PragmaClangAttribute, PragmaPack]>;
|
PragmaClangAttribute]>;
|
||||||
def UnknownWarningOption : DiagGroup<"unknown-warning-option">;
|
def UnknownWarningOption : DiagGroup<"unknown-warning-option">;
|
||||||
def NSobjectAttribute : DiagGroup<"NSObject-attribute">;
|
def NSobjectAttribute : DiagGroup<"NSObject-attribute">;
|
||||||
def IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">;
|
def IndependentClassAttribute : DiagGroup<"IndependentClass-attribute">;
|
||||||
|
|
|
@ -712,16 +712,6 @@ def err_pragma_options_align_mac68k_target_unsupported : Error<
|
||||||
def warn_pragma_pack_invalid_alignment : Warning<
|
def warn_pragma_pack_invalid_alignment : Warning<
|
||||||
"expected #pragma pack parameter to be '1', '2', '4', '8', or '16'">,
|
"expected #pragma pack parameter to be '1', '2', '4', '8', or '16'">,
|
||||||
InGroup<IgnoredPragmas>;
|
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.
|
// Follow the Microsoft implementation.
|
||||||
def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">;
|
def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">;
|
||||||
def warn_pragma_pack_pop_identifer_and_alignment : Warning<
|
def warn_pragma_pack_pop_identifer_and_alignment : Warning<
|
||||||
|
|
|
@ -208,7 +208,6 @@ namespace sema {
|
||||||
class FunctionScopeInfo;
|
class FunctionScopeInfo;
|
||||||
class LambdaScopeInfo;
|
class LambdaScopeInfo;
|
||||||
class PossiblyUnreachableDiag;
|
class PossiblyUnreachableDiag;
|
||||||
class SemaPPCallbacks;
|
|
||||||
class TemplateDeductionInfo;
|
class TemplateDeductionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,12 +381,11 @@ public:
|
||||||
llvm::StringRef StackSlotLabel;
|
llvm::StringRef StackSlotLabel;
|
||||||
ValueType Value;
|
ValueType Value;
|
||||||
SourceLocation PragmaLocation;
|
SourceLocation PragmaLocation;
|
||||||
SourceLocation PragmaPushLocation;
|
Slot(llvm::StringRef StackSlotLabel,
|
||||||
Slot(llvm::StringRef StackSlotLabel, ValueType Value,
|
ValueType Value,
|
||||||
SourceLocation PragmaLocation, SourceLocation PragmaPushLocation)
|
SourceLocation PragmaLocation)
|
||||||
: StackSlotLabel(StackSlotLabel), Value(Value),
|
: StackSlotLabel(StackSlotLabel), Value(Value),
|
||||||
PragmaLocation(PragmaLocation),
|
PragmaLocation(PragmaLocation) {}
|
||||||
PragmaPushLocation(PragmaPushLocation) {}
|
|
||||||
};
|
};
|
||||||
void Act(SourceLocation PragmaLocation,
|
void Act(SourceLocation PragmaLocation,
|
||||||
PragmaMsStackAction Action,
|
PragmaMsStackAction Action,
|
||||||
|
@ -418,8 +416,6 @@ public:
|
||||||
explicit PragmaStack(const ValueType &Default)
|
explicit PragmaStack(const ValueType &Default)
|
||||||
: DefaultValue(Default), CurrentValue(Default) {}
|
: DefaultValue(Default), CurrentValue(Default) {}
|
||||||
|
|
||||||
bool hasValue() const { return CurrentValue != DefaultValue; }
|
|
||||||
|
|
||||||
SmallVector<Slot, 2> Stack;
|
SmallVector<Slot, 2> Stack;
|
||||||
ValueType DefaultValue; // Value used for PSK_Reset action.
|
ValueType DefaultValue; // Value used for PSK_Reset action.
|
||||||
ValueType CurrentValue;
|
ValueType CurrentValue;
|
||||||
|
@ -441,8 +437,6 @@ public:
|
||||||
// Sentinel to represent when the stack is set to mac68k alignment.
|
// Sentinel to represent when the stack is set to mac68k alignment.
|
||||||
static const unsigned kMac68kAlignmentSentinel = ~0U;
|
static const unsigned kMac68kAlignmentSentinel = ~0U;
|
||||||
PragmaStack<unsigned> PackStack;
|
PragmaStack<unsigned> PackStack;
|
||||||
// The current #pragma pack values and locations at each #include.
|
|
||||||
SmallVector<std::pair<unsigned, SourceLocation>, 8> PackIncludeStack;
|
|
||||||
// Segment #pragmas.
|
// Segment #pragmas.
|
||||||
PragmaStack<StringLiteral *> DataSegStack;
|
PragmaStack<StringLiteral *> DataSegStack;
|
||||||
PragmaStack<StringLiteral *> BSSSegStack;
|
PragmaStack<StringLiteral *> BSSSegStack;
|
||||||
|
@ -8191,15 +8185,6 @@ public:
|
||||||
void ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action,
|
void ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action,
|
||||||
StringRef SlotLabel, Expr *Alignment);
|
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].
|
/// ActOnPragmaMSStruct - Called on well formed \#pragma ms_struct [on|off].
|
||||||
void ActOnPragmaMSStruct(PragmaMSStructKind Kind);
|
void ActOnPragmaMSStruct(PragmaMSStructKind Kind);
|
||||||
|
|
||||||
|
@ -10393,12 +10378,6 @@ private:
|
||||||
|
|
||||||
IdentifierInfo *Ident_NSError = nullptr;
|
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:
|
protected:
|
||||||
friend class Parser;
|
friend class Parser;
|
||||||
friend class InitializationSequence;
|
friend class InitializationSequence;
|
||||||
|
|
|
@ -825,7 +825,6 @@ private:
|
||||||
struct PragmaPackStackEntry {
|
struct PragmaPackStackEntry {
|
||||||
unsigned Value;
|
unsigned Value;
|
||||||
SourceLocation Location;
|
SourceLocation Location;
|
||||||
SourceLocation PushLocation;
|
|
||||||
StringRef SlotLabel;
|
StringRef SlotLabel;
|
||||||
};
|
};
|
||||||
llvm::SmallVector<PragmaPackStackEntry, 2> PragmaPackStack;
|
llvm::SmallVector<PragmaPackStackEntry, 2> PragmaPackStack;
|
||||||
|
|
|
@ -422,20 +422,15 @@ void Parser::HandlePragmaPack() {
|
||||||
assert(Tok.is(tok::annot_pragma_pack));
|
assert(Tok.is(tok::annot_pragma_pack));
|
||||||
PragmaPackInfo *Info =
|
PragmaPackInfo *Info =
|
||||||
static_cast<PragmaPackInfo *>(Tok.getAnnotationValue());
|
static_cast<PragmaPackInfo *>(Tok.getAnnotationValue());
|
||||||
SourceLocation PragmaLoc = Tok.getLocation();
|
SourceLocation PragmaLoc = ConsumeAnnotationToken();
|
||||||
ExprResult Alignment;
|
ExprResult Alignment;
|
||||||
if (Info->Alignment.is(tok::numeric_constant)) {
|
if (Info->Alignment.is(tok::numeric_constant)) {
|
||||||
Alignment = Actions.ActOnNumericConstant(Info->Alignment);
|
Alignment = Actions.ActOnNumericConstant(Info->Alignment);
|
||||||
if (Alignment.isInvalid()) {
|
if (Alignment.isInvalid())
|
||||||
ConsumeAnnotationToken();
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Actions.ActOnPragmaPack(PragmaLoc, Info->Action, Info->SlotLabel,
|
Actions.ActOnPragmaPack(PragmaLoc, Info->Action, Info->SlotLabel,
|
||||||
Alignment.get());
|
Alignment.get());
|
||||||
// Consume the token after processing the pragma to enable pragma-specific
|
|
||||||
// #include warnings.
|
|
||||||
ConsumeAnnotationToken();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::HandlePragmaMSStruct() {
|
void Parser::HandlePragmaMSStruct() {
|
||||||
|
|
|
@ -70,49 +70,6 @@ void Sema::ActOnTranslationUnitScope(Scope *S) {
|
||||||
PushDeclContext(S, Context.getTranslationUnitDecl());
|
PushDeclContext(S, Context.getTranslationUnitDecl());
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace clang {
|
|
||||||
namespace sema {
|
|
||||||
|
|
||||||
class SemaPPCallbacks : public PPCallbacks {
|
|
||||||
Sema *S = nullptr;
|
|
||||||
llvm::SmallVector<SourceLocation, 8> IncludeStack;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void set(Sema &S) { this->S = &S; }
|
|
||||||
|
|
||||||
void reset() { S = nullptr; }
|
|
||||||
|
|
||||||
virtual void FileChanged(SourceLocation Loc, FileChangeReason Reason,
|
|
||||||
SrcMgr::CharacteristicKind FileType,
|
|
||||||
FileID PrevFID) override {
|
|
||||||
if (!S)
|
|
||||||
return;
|
|
||||||
switch (Reason) {
|
|
||||||
case EnterFile: {
|
|
||||||
SourceManager &SM = S->getSourceManager();
|
|
||||||
SourceLocation IncludeLoc = SM.getIncludeLoc(SM.getFileID(Loc));
|
|
||||||
if (IncludeLoc.isValid()) {
|
|
||||||
IncludeStack.push_back(IncludeLoc);
|
|
||||||
S->DiagnoseNonDefaultPragmaPack(
|
|
||||||
Sema::PragmaPackDiagnoseKind::NonDefaultStateAtInclude, IncludeLoc);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ExitFile:
|
|
||||||
if (!IncludeStack.empty())
|
|
||||||
S->DiagnoseNonDefaultPragmaPack(
|
|
||||||
Sema::PragmaPackDiagnoseKind::ChangedStateAtExit,
|
|
||||||
IncludeStack.pop_back_val());
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // end namespace sema
|
|
||||||
} // end namespace clang
|
|
||||||
|
|
||||||
Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
|
Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
|
||||||
TranslationUnitKind TUKind, CodeCompleteConsumer *CodeCompleter)
|
TranslationUnitKind TUKind, CodeCompleteConsumer *CodeCompleter)
|
||||||
: ExternalSource(nullptr), isMultiplexExternalSource(false),
|
: ExternalSource(nullptr), isMultiplexExternalSource(false),
|
||||||
|
@ -165,12 +122,6 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
|
||||||
|
|
||||||
// Initilization of data sharing attributes stack for OpenMP
|
// Initilization of data sharing attributes stack for OpenMP
|
||||||
InitDataSharingAttributesStack();
|
InitDataSharingAttributesStack();
|
||||||
|
|
||||||
std::unique_ptr<sema::SemaPPCallbacks> Callbacks =
|
|
||||||
llvm::make_unique<sema::SemaPPCallbacks>();
|
|
||||||
SemaPPCallbackHandler = Callbacks.get();
|
|
||||||
PP.addPPCallbacks(std::move(Callbacks));
|
|
||||||
SemaPPCallbackHandler->set(*this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sema::addImplicitTypedef(StringRef Name, QualType T) {
|
void Sema::addImplicitTypedef(StringRef Name, QualType T) {
|
||||||
|
@ -355,10 +306,6 @@ Sema::~Sema() {
|
||||||
// Destroys data sharing attributes stack for OpenMP
|
// Destroys data sharing attributes stack for OpenMP
|
||||||
DestroyDataSharingAttributesStack();
|
DestroyDataSharingAttributesStack();
|
||||||
|
|
||||||
// Detach from the PP callback handler which outlives Sema since it's owned
|
|
||||||
// by the preprocessor.
|
|
||||||
SemaPPCallbackHandler->reset();
|
|
||||||
|
|
||||||
assert(DelayedTypos.empty() && "Uncorrected typos!");
|
assert(DelayedTypos.empty() && "Uncorrected typos!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,7 +766,6 @@ void Sema::ActOnEndOfTranslationUnit() {
|
||||||
CheckDelayedMemberExceptionSpecs();
|
CheckDelayedMemberExceptionSpecs();
|
||||||
}
|
}
|
||||||
|
|
||||||
DiagnoseUnterminatedPragmaPack();
|
|
||||||
DiagnoseUnterminatedPragmaAttribute();
|
DiagnoseUnterminatedPragmaAttribute();
|
||||||
|
|
||||||
// All delayed member exception specs should be checked or we end up accepting
|
// All delayed member exception specs should be checked or we end up accepting
|
||||||
|
|
|
@ -202,40 +202,6 @@ void Sema::ActOnPragmaPack(SourceLocation PragmaLoc, PragmaMsStackAction Action,
|
||||||
PackStack.Act(PragmaLoc, Action, SlotLabel, AlignmentVal);
|
PackStack.Act(PragmaLoc, Action, SlotLabel, AlignmentVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sema::DiagnoseNonDefaultPragmaPack(PragmaPackDiagnoseKind Kind,
|
|
||||||
SourceLocation IncludeLoc) {
|
|
||||||
if (Kind == PragmaPackDiagnoseKind::NonDefaultStateAtInclude) {
|
|
||||||
SourceLocation PrevLocation = PackStack.CurrentPragmaLocation;
|
|
||||||
// Warn about non-default alignment at #includes (without redundant
|
|
||||||
// warnings for the same directive in nested includes).
|
|
||||||
if (PackStack.hasValue() &&
|
|
||||||
(PackIncludeStack.empty() ||
|
|
||||||
PackIncludeStack.back().second != PrevLocation)) {
|
|
||||||
Diag(IncludeLoc, diag::warn_pragma_pack_non_default_at_include);
|
|
||||||
Diag(PrevLocation, diag::note_pragma_pack_here);
|
|
||||||
}
|
|
||||||
PackIncludeStack.push_back(
|
|
||||||
{PackStack.CurrentValue,
|
|
||||||
PackStack.hasValue() ? PrevLocation : SourceLocation()});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(Kind == PragmaPackDiagnoseKind::ChangedStateAtExit && "invalid kind");
|
|
||||||
unsigned PreviousValue = PackIncludeStack.pop_back_val().first;
|
|
||||||
// Warn about modified alignment after #includes.
|
|
||||||
if (PreviousValue != PackStack.CurrentValue) {
|
|
||||||
Diag(IncludeLoc, diag::warn_pragma_pack_modified_after_include);
|
|
||||||
Diag(PackStack.CurrentPragmaLocation, diag::note_pragma_pack_here);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sema::DiagnoseUnterminatedPragmaPack() {
|
|
||||||
if (PackStack.Stack.empty())
|
|
||||||
return;
|
|
||||||
for (const auto &StackSlot : llvm::reverse(PackStack.Stack))
|
|
||||||
Diag(StackSlot.PragmaPushLocation, diag::warn_pragma_pack_no_pop_eof);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sema::ActOnPragmaMSStruct(PragmaMSStructKind Kind) {
|
void Sema::ActOnPragmaMSStruct(PragmaMSStructKind Kind) {
|
||||||
MSStructPragmaOn = (Kind == PMSST_ON);
|
MSStructPragmaOn = (Kind == PMSST_ON);
|
||||||
}
|
}
|
||||||
|
@ -283,8 +249,7 @@ void Sema::PragmaStack<ValueType>::Act(SourceLocation PragmaLocation,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Action & PSK_Push)
|
if (Action & PSK_Push)
|
||||||
Stack.emplace_back(StackSlotLabel, CurrentValue, CurrentPragmaLocation,
|
Stack.push_back(Slot(StackSlotLabel, CurrentValue, CurrentPragmaLocation));
|
||||||
PragmaLocation);
|
|
||||||
else if (Action & PSK_Pop) {
|
else if (Action & PSK_Pop) {
|
||||||
if (!StackSlotLabel.empty()) {
|
if (!StackSlotLabel.empty()) {
|
||||||
// If we've got a label, try to find it and jump there.
|
// If we've got a label, try to find it and jump there.
|
||||||
|
|
|
@ -3384,7 +3384,6 @@ ASTReader::ReadASTBlock(ModuleFile &F, unsigned ClientLoadCapabilities) {
|
||||||
PragmaPackStackEntry Entry;
|
PragmaPackStackEntry Entry;
|
||||||
Entry.Value = Record[Idx++];
|
Entry.Value = Record[Idx++];
|
||||||
Entry.Location = ReadSourceLocation(F, Record[Idx++]);
|
Entry.Location = ReadSourceLocation(F, Record[Idx++]);
|
||||||
Entry.PushLocation = ReadSourceLocation(F, Record[Idx++]);
|
|
||||||
PragmaPackStrings.push_back(ReadString(Record, Idx));
|
PragmaPackStrings.push_back(ReadString(Record, Idx));
|
||||||
Entry.SlotLabel = PragmaPackStrings.back();
|
Entry.SlotLabel = PragmaPackStrings.back();
|
||||||
PragmaPackStack.push_back(Entry);
|
PragmaPackStack.push_back(Entry);
|
||||||
|
@ -7580,14 +7579,13 @@ void ASTReader::UpdateSema() {
|
||||||
"Expected a default alignment value");
|
"Expected a default alignment value");
|
||||||
SemaObj->PackStack.Stack.emplace_back(
|
SemaObj->PackStack.Stack.emplace_back(
|
||||||
PragmaPackStack.front().SlotLabel, SemaObj->PackStack.CurrentValue,
|
PragmaPackStack.front().SlotLabel, SemaObj->PackStack.CurrentValue,
|
||||||
SemaObj->PackStack.CurrentPragmaLocation,
|
SemaObj->PackStack.CurrentPragmaLocation);
|
||||||
PragmaPackStack.front().PushLocation);
|
|
||||||
DropFirst = true;
|
DropFirst = true;
|
||||||
}
|
}
|
||||||
for (const auto &Entry :
|
for (const auto &Entry :
|
||||||
llvm::makeArrayRef(PragmaPackStack).drop_front(DropFirst ? 1 : 0))
|
llvm::makeArrayRef(PragmaPackStack).drop_front(DropFirst ? 1 : 0))
|
||||||
SemaObj->PackStack.Stack.emplace_back(Entry.SlotLabel, Entry.Value,
|
SemaObj->PackStack.Stack.emplace_back(Entry.SlotLabel, Entry.Value,
|
||||||
Entry.Location, Entry.PushLocation);
|
Entry.Location);
|
||||||
if (PragmaPackCurrentLocation.isInvalid()) {
|
if (PragmaPackCurrentLocation.isInvalid()) {
|
||||||
assert(*PragmaPackCurrentValue == SemaObj->PackStack.DefaultValue &&
|
assert(*PragmaPackCurrentValue == SemaObj->PackStack.DefaultValue &&
|
||||||
"Expected a default alignment value");
|
"Expected a default alignment value");
|
||||||
|
|
|
@ -4295,7 +4295,6 @@ void ASTWriter::WritePackPragmaOptions(Sema &SemaRef) {
|
||||||
for (const auto &StackEntry : SemaRef.PackStack.Stack) {
|
for (const auto &StackEntry : SemaRef.PackStack.Stack) {
|
||||||
Record.push_back(StackEntry.Value);
|
Record.push_back(StackEntry.Value);
|
||||||
AddSourceLocation(StackEntry.PragmaLocation, Record);
|
AddSourceLocation(StackEntry.PragmaLocation, Record);
|
||||||
AddSourceLocation(StackEntry.PragmaPushLocation, Record);
|
|
||||||
AddString(StackEntry.StackSlotLabel, Record);
|
AddString(StackEntry.StackSlotLabel, Record);
|
||||||
}
|
}
|
||||||
Stream.EmitRecord(PACK_PRAGMA_OPTIONS, Record);
|
Stream.EmitRecord(PACK_PRAGMA_OPTIONS, Record);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp -x c++ -std=c++11 -fms-extensions -Wno-pragma-pack %s
|
// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp -x c++ -std=c++11 -fms-extensions %s
|
||||||
|
|
||||||
// expected-error@+1 {{expected an OpenMP directive}}
|
// expected-error@+1 {{expected an OpenMP directive}}
|
||||||
#pragma omp declare
|
#pragma omp declare
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
// Test this without pch.
|
// Test this without pch.
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DSET
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DSET
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DRESET
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DRESET
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH_POP
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP_LABEL
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH_POP_LABEL
|
||||||
|
|
||||||
// Test with pch.
|
// Test with pch.
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -emit-pch -o %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DSET -emit-pch -o %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -verify -include-pch %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DSET -verify -include-pch %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -emit-pch -o %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DRESET -emit-pch -o %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -verify -include-pch %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DRESET -verify -include-pch %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -emit-pch -o %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH -emit-pch -o %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -verify -include-pch %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH -verify -include-pch %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -emit-pch -o %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP -emit-pch -o %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -verify -include-pch %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP -verify -include-pch %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -emit-pch -o %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP_LABEL -emit-pch -o %t
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -verify -include-pch %t
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP_LABEL -verify -include-pch %t
|
||||||
|
|
||||||
#ifndef HEADER
|
#ifndef HEADER
|
||||||
#define HEADER
|
#define HEADER
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -verify -emit-pch -o %t
|
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -verify -include-pch %t
|
|
||||||
|
|
||||||
#ifndef HEADER
|
|
||||||
#define HEADER
|
|
||||||
#pragma pack (push, 1)
|
|
||||||
#endif
|
|
||||||
// expected-warning@-2 {{unterminated '#pragma pack (push, ...)' at end of file}}
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin9 -Wno-pragma-pack -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
|
||||||
|
|
||||||
/* expected-warning {{expected 'align' following '#pragma options'}} */ #pragma options
|
/* expected-warning {{expected 'align' following '#pragma options'}} */ #pragma options
|
||||||
/* expected-warning {{expected '=' following '#pragma options align'}} */ #pragma options align
|
/* expected-warning {{expected '=' following '#pragma options align'}} */ #pragma options align
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin9 -Wno-pragma-pack -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
|
||||||
// expected-no-diagnostics
|
// expected-no-diagnostics
|
||||||
|
|
||||||
class C {
|
class C {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -fsyntax-only -Wno-pragma-pack -verify %s
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||||
|
|
||||||
// Note that this puts the expected lines before the directives to work around
|
// Note that this puts the expected lines before the directives to work around
|
||||||
// limitations in the -verify mode.
|
// limitations in the -verify mode.
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
|
|
||||||
#ifdef SET_FIRST_HEADER
|
|
||||||
#pragma pack (16)
|
|
||||||
#ifndef SET_SECOND_HEADER
|
|
||||||
// expected-note@-2 2 {{previous '#pragma pack' directive that modifies alignment is here}}
|
|
||||||
#else
|
|
||||||
// expected-note@-4 1 {{previous '#pragma pack' directive that modifies alignment is here}}
|
|
||||||
#endif
|
|
||||||
// expected-warning@+3 {{non-default #pragma pack value might change the alignment of struct or union members in the included file}}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "pragma-pack2.h"
|
|
||||||
|
|
||||||
#ifdef SET_SECOND_HEADER
|
|
||||||
// expected-warning@-3 {{the current #pragma pack aligment value is modified in the included file}}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PUSH_POP_FIRST_HEADER
|
|
||||||
// This is fine, we don't change the current value.
|
|
||||||
#pragma pack (push, 4)
|
|
||||||
|
|
||||||
#pragma pack (pop)
|
|
||||||
#endif
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
#ifdef SET_SECOND_HEADER
|
|
||||||
#pragma pack (8) // expected-note 2 {{previous '#pragma pack' directive that modifies alignment is here}}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct S { int x; };
|
|
|
@ -25,8 +25,3 @@
|
||||||
#pragma pack(pop, 16)
|
#pragma pack(pop, 16)
|
||||||
/* expected-warning {{value of #pragma pack(show) == 16}} */ #pragma pack(show)
|
/* expected-warning {{value of #pragma pack(show) == 16}} */ #pragma pack(show)
|
||||||
|
|
||||||
|
|
||||||
// Warn about unbalanced pushes.
|
|
||||||
#pragma pack (push,4) // expected-warning {{unterminated '#pragma pack (push, ...)' at end of file}}
|
|
||||||
#pragma pack (push) // expected-warning {{unterminated '#pragma pack (push, ...)' at end of file}}
|
|
||||||
#pragma pack ()
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DSAFE -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DSAFE -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DPUSH_SET_HERE -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DRESET_HERE -DSAFE -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DSET_FIRST_HEADER -DWARN_MODIFIED_HEADER -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DRESET_HERE -DSET_FIRST_HEADER -DWARN_MODIFIED_HEADER -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DPUSH_SET_HERE -DSET_FIRST_HEADER -DWARN_MODIFIED_HEADER -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DPUSH_SET_HERE -DSET_SECOND_HEADER -DWARN_MODIFIED_HEADER -verify %s
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_HERE -DPUSH_SET_HERE -DSET_FIRST_HEADER -DSET_SECOND_HEADER -DWARN_MODIFIED_HEADER -verify %s
|
|
||||||
|
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I %S/Inputs -DPUSH_POP_FIRST_HEADER -DSAFE -verify %s
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SAFE
|
|
||||||
// expected-no-diagnostics
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PUSH_HERE
|
|
||||||
#pragma pack (push)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PUSH_SET_HERE
|
|
||||||
#pragma pack (push, 4) // expected-note {{previous '#pragma pack' directive that modifies alignment is here}}
|
|
||||||
// expected-warning@+8 {{non-default #pragma pack value might change the alignment of struct or union members in the included file}}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RESET_HERE
|
|
||||||
#pragma pack (4)
|
|
||||||
#pragma pack () // no warning after reset as the value is default.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "pragma-pack1.h"
|
|
||||||
|
|
||||||
#ifdef WARN_MODIFIED_HEADER
|
|
||||||
// expected-warning@-3 {{the current #pragma pack aligment value is modified in the included file}}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PUSH_SET_HERE
|
|
||||||
#pragma pack (pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PUSH_HERE
|
|
||||||
#pragma pack (pop)
|
|
||||||
#endif
|
|
|
@ -1 +0,0 @@
|
||||||
// empty
|
|
|
@ -1,6 +0,0 @@
|
||||||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -I%S/Inputs -verify %s
|
|
||||||
|
|
||||||
#pragma pack (push, 1) // expected-note {{previous '#pragma pack' directive that modifies alignment is here}}
|
|
||||||
#import "empty.h" // expected-warning {{non-default #pragma pack value might change the alignment of struct or union members in the included file}}
|
|
||||||
|
|
||||||
#pragma pack (pop)
|
|
Loading…
Reference in New Issue