mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 09:41:03 -04:00
Vendor import of clang RELEASE_34/dot1-final tag r208032 (effectively, 3.4.1 release):
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/dot1-final@208032
This commit is contained in:
parent
33fa48314f
commit
f73d5f23a8
28 changed files with 267 additions and 106 deletions
|
|
@ -88,7 +88,7 @@ improvements since the 3.3 release include:
|
|||
|
||||
- Boolean increment, a deprecated feature, has own warning flag
|
||||
-Wdeprecated-increment-bool, and is still part of -Wdeprecated.
|
||||
- Clang errors on builtin enum increments and decrements.
|
||||
- Clang errors on builtin enum increments and decrements in C++.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ improvements since the 3.3 release include:
|
|||
}
|
||||
|
||||
returns
|
||||
`error: must use 'enum' tag to refer to type 'A'`
|
||||
`error: cannot increment expression of enum type 'A'`
|
||||
|
||||
|
||||
- -Wloop-analysis now warns on for-loops which have the same increment or
|
||||
|
|
@ -177,7 +177,7 @@ C++ Language Changes in Clang
|
|||
|
||||
- Fixed an ABI regression, introduced in Clang 3.2, which affected
|
||||
member offsets for classes inheriting from certain classes with tail padding.
|
||||
See PR16537.
|
||||
See `PR16537 <http://llvm.org/PR16537>`_.
|
||||
|
||||
- Clang 3.4 supports the 2013-08-28 draft of the ISO WG21 SG10 feature test
|
||||
macro recommendations. These aim to provide a portable method to determine
|
||||
|
|
|
|||
|
|
@ -415,6 +415,10 @@ public:
|
|||
bool &HadExtra);
|
||||
};
|
||||
|
||||
/// \return True if the last defined optimization level is -Ofast.
|
||||
/// And False otherwise.
|
||||
bool isOptimizationLevelFast(const llvm::opt::ArgList &Args);
|
||||
|
||||
} // end namespace driver
|
||||
} // end namespace clang
|
||||
|
||||
|
|
|
|||
|
|
@ -303,7 +303,7 @@ public:
|
|||
/// AddFastMathRuntimeIfAvailable - If a runtime library exists that sets
|
||||
/// global flags for unsafe floating point math, add it and return true.
|
||||
///
|
||||
/// This checks for presence of the -ffast-math or -funsafe-math flags.
|
||||
/// This checks for presence of the -Ofast, -ffast-math or -funsafe-math flags.
|
||||
virtual bool
|
||||
AddFastMathRuntimeIfAvailable(const llvm::opt::ArgList &Args,
|
||||
llvm::opt::ArgStringList &CmdArgs) const;
|
||||
|
|
|
|||
|
|
@ -32,12 +32,23 @@ using namespace clang::comments;
|
|||
|
||||
namespace {
|
||||
// Colors used for various parts of the AST dump
|
||||
// Do not use bold yellow for any text. It is hard to read on white screens.
|
||||
|
||||
struct TerminalColor {
|
||||
raw_ostream::Colors Color;
|
||||
bool Bold;
|
||||
};
|
||||
|
||||
// Red - CastColor
|
||||
// Green - TypeColor
|
||||
// Bold Green - DeclKindNameColor, UndeserializedColor
|
||||
// Yellow - AddressColor, LocationColor
|
||||
// Blue - CommentColor, NullColor, IndentColor
|
||||
// Bold Blue - AttrColor
|
||||
// Bold Magenta - StmtColor
|
||||
// Cyan - ValueKindColor, ObjectKindColor
|
||||
// Bold Cyan - ValueColor, DeclNameColor
|
||||
|
||||
// Decl kind names (VarDecl, FunctionDecl, etc)
|
||||
static const TerminalColor DeclKindNameColor = { raw_ostream::GREEN, true };
|
||||
// Attr names (CleanupAttr, GuardedByAttr, etc)
|
||||
|
|
@ -45,7 +56,7 @@ namespace {
|
|||
// Statement names (DeclStmt, ImplicitCastExpr, etc)
|
||||
static const TerminalColor StmtColor = { raw_ostream::MAGENTA, true };
|
||||
// Comment names (FullComment, ParagraphComment, TextComment, etc)
|
||||
static const TerminalColor CommentColor = { raw_ostream::YELLOW, true };
|
||||
static const TerminalColor CommentColor = { raw_ostream::BLUE, false };
|
||||
|
||||
// Type names (int, float, etc, plus user defined types)
|
||||
static const TerminalColor TypeColor = { raw_ostream::GREEN, false };
|
||||
|
|
|
|||
|
|
@ -5089,16 +5089,15 @@ bool RecordExprEvaluator::VisitCXXConstructExpr(const CXXConstructExpr *E) {
|
|||
if (!Result.isUninit())
|
||||
return true;
|
||||
|
||||
if (ZeroInit)
|
||||
return ZeroInitialization(E);
|
||||
|
||||
const CXXRecordDecl *RD = FD->getParent();
|
||||
if (RD->isUnion())
|
||||
Result = APValue((FieldDecl*)0);
|
||||
else
|
||||
Result = APValue(APValue::UninitStruct(), RD->getNumBases(),
|
||||
std::distance(RD->field_begin(), RD->field_end()));
|
||||
return true;
|
||||
// We can get here in two different ways:
|
||||
// 1) We're performing value-initialization, and should zero-initialize
|
||||
// the object, or
|
||||
// 2) We're performing default-initialization of an object with a trivial
|
||||
// constexpr default constructor, in which case we should start the
|
||||
// lifetimes of all the base subobjects (there can be no data member
|
||||
// subobjects in this case) per [basic.life]p1.
|
||||
// Either way, ZeroInitialization is appropriate.
|
||||
return ZeroInitialization(E);
|
||||
}
|
||||
|
||||
const FunctionDecl *Definition = 0;
|
||||
|
|
@ -5578,19 +5577,9 @@ bool ArrayExprEvaluator::VisitCXXConstructExpr(const CXXConstructExpr *E,
|
|||
if (HadZeroInit)
|
||||
return true;
|
||||
|
||||
if (ZeroInit) {
|
||||
ImplicitValueInitExpr VIE(Type);
|
||||
return EvaluateInPlace(*Value, Info, Subobject, &VIE);
|
||||
}
|
||||
|
||||
const CXXRecordDecl *RD = FD->getParent();
|
||||
if (RD->isUnion())
|
||||
*Value = APValue((FieldDecl*)0);
|
||||
else
|
||||
*Value =
|
||||
APValue(APValue::UninitStruct(), RD->getNumBases(),
|
||||
std::distance(RD->field_begin(), RD->field_end()));
|
||||
return true;
|
||||
// See RecordExprEvaluator::VisitCXXConstructExpr for explanation.
|
||||
ImplicitValueInitExpr VIE(Type);
|
||||
return EvaluateInPlace(*Value, Info, Subobject, &VIE);
|
||||
}
|
||||
|
||||
const FunctionDecl *Definition = 0;
|
||||
|
|
|
|||
|
|
@ -709,9 +709,11 @@ void StmtPrinter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {
|
|||
void StmtPrinter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) {
|
||||
if (Node->isSuperReceiver())
|
||||
OS << "super.";
|
||||
else if (Node->getBase()) {
|
||||
else if (Node->isObjectReceiver() && Node->getBase()) {
|
||||
PrintExpr(Node->getBase());
|
||||
OS << ".";
|
||||
} else if (Node->isClassReceiver() && Node->getClassReceiver()) {
|
||||
OS << Node->getClassReceiver()->getName() << ".";
|
||||
}
|
||||
|
||||
if (Node->isImplicitProperty())
|
||||
|
|
|
|||
|
|
@ -605,13 +605,25 @@ void ConsumedStmtVisitor::VisitBinaryOperator(const BinaryOperator *BinOp) {
|
|||
}
|
||||
}
|
||||
|
||||
static bool isStdNamespace(const DeclContext *DC) {
|
||||
if (!DC->isNamespace()) return false;
|
||||
while (DC->getParent()->isNamespace())
|
||||
DC = DC->getParent();
|
||||
const NamespaceDecl *ND = dyn_cast<NamespaceDecl>(DC);
|
||||
|
||||
return ND && ND->getName() == "std" &&
|
||||
ND->getDeclContext()->isTranslationUnit();
|
||||
}
|
||||
|
||||
void ConsumedStmtVisitor::VisitCallExpr(const CallExpr *Call) {
|
||||
if (const FunctionDecl *FunDecl =
|
||||
dyn_cast_or_null<FunctionDecl>(Call->getDirectCallee())) {
|
||||
|
||||
// Special case for the std::move function.
|
||||
// TODO: Make this more specific. (Deferred)
|
||||
if (FunDecl->getNameAsString() == "move") {
|
||||
if (Call->getNumArgs() == 1 &&
|
||||
FunDecl->getNameAsString() == "move" &&
|
||||
isStdNamespace(FunDecl->getDeclContext())) {
|
||||
forwardInfo(Call->getArg(0), Call);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -358,6 +358,16 @@ public:
|
|||
LinuxTargetInfo(const llvm::Triple &Triple) : OSTargetInfo<Target>(Triple) {
|
||||
this->UserLabelPrefix = "";
|
||||
this->WIntType = TargetInfo::UnsignedInt;
|
||||
|
||||
switch (Triple.getArch()) {
|
||||
default:
|
||||
break;
|
||||
case llvm::Triple::ppc:
|
||||
case llvm::Triple::ppc64:
|
||||
case llvm::Triple::ppc64le:
|
||||
this->MCountName = "_mcount";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char *getStaticInitSectionSpecifier() const {
|
||||
|
|
@ -1271,7 +1281,7 @@ public:
|
|||
LongLongAlign = 32;
|
||||
SuitableAlign = 128;
|
||||
DescriptionString = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-"
|
||||
"i64:32:64-f32:32:32-f64:64:64-v128:128:128-n32";
|
||||
"i64:32:64-f32:32:32-f64:32:64-v128:128:128-n32";
|
||||
}
|
||||
virtual BuiltinVaListKind getBuiltinVaListKind() const {
|
||||
return TargetInfo::CharPtrBuiltinVaList;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ std::string getClangRepositoryPath() {
|
|||
|
||||
// If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
|
||||
// pick up a tag in an SVN export, for example.
|
||||
StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/final/lib/Basic/Version.cpp $");
|
||||
StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/dot1-final/lib/Basic/Version.cpp $");
|
||||
if (URL.empty()) {
|
||||
URL = SVNRepository.slice(SVNRepository.find(':'),
|
||||
SVNRepository.find("/lib/Basic"));
|
||||
|
|
|
|||
|
|
@ -92,7 +92,13 @@ bool CodeGenModule::TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D) {
|
|||
if (!ClassLayout.getBaseClassOffset(UniqueBase).isZero())
|
||||
return true;
|
||||
|
||||
// Give up if the calling conventions don't match. We could update the call,
|
||||
// but it is probably not worth it.
|
||||
const CXXDestructorDecl *BaseD = UniqueBase->getDestructor();
|
||||
if (BaseD->getType()->getAs<FunctionType>()->getCallConv() !=
|
||||
D->getType()->getAs<FunctionType>()->getCallConv())
|
||||
return true;
|
||||
|
||||
return TryEmitDefinitionAsAlias(GlobalDecl(D, Dtor_Base),
|
||||
GlobalDecl(BaseD, Dtor_Base),
|
||||
false);
|
||||
|
|
|
|||
|
|
@ -2055,3 +2055,7 @@ std::pair<unsigned, unsigned> Driver::getIncludeExcludeOptionFlagMasks() const {
|
|||
|
||||
return std::make_pair(IncludedFlagsBitmask, ExcludedFlagsBitmask);
|
||||
}
|
||||
|
||||
bool clang::driver::isOptimizationLevelFast(const llvm::opt::ArgList &Args) {
|
||||
return Args.hasFlag(options::OPT_Ofast, options::OPT_O_Group, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -430,16 +430,19 @@ void ToolChain::AddCCKextLibArgs(const ArgList &Args,
|
|||
|
||||
bool ToolChain::AddFastMathRuntimeIfAvailable(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
// Check if -ffast-math or -funsafe-math is enabled.
|
||||
Arg *A = Args.getLastArg(options::OPT_ffast_math,
|
||||
options::OPT_fno_fast_math,
|
||||
options::OPT_funsafe_math_optimizations,
|
||||
options::OPT_fno_unsafe_math_optimizations);
|
||||
|
||||
if (!A || A->getOption().getID() == options::OPT_fno_fast_math ||
|
||||
A->getOption().getID() == options::OPT_fno_unsafe_math_optimizations)
|
||||
return false;
|
||||
// Do not check for -fno-fast-math or -fno-unsafe-math when -Ofast passed
|
||||
// (to keep the linker options consistent with gcc and clang itself).
|
||||
if (!isOptimizationLevelFast(Args)) {
|
||||
// Check if -ffast-math or -funsafe-math.
|
||||
Arg *A =
|
||||
Args.getLastArg(options::OPT_ffast_math, options::OPT_fno_fast_math,
|
||||
options::OPT_funsafe_math_optimizations,
|
||||
options::OPT_fno_unsafe_math_optimizations);
|
||||
|
||||
if (!A || A->getOption().getID() == options::OPT_fno_fast_math ||
|
||||
A->getOption().getID() == options::OPT_fno_unsafe_math_optimizations)
|
||||
return false;
|
||||
}
|
||||
// If crtfastmath.o exists add it to the arguments.
|
||||
std::string Path = GetFilePath("crtfastmath.o");
|
||||
if (Path == "crtfastmath.o") // Not found.
|
||||
|
|
|
|||
|
|
@ -1622,6 +1622,21 @@ bool Generic_GCC::isPICDefaultForced() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
void Generic_GCC::addClangTargetOptions(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
const Generic_GCC::GCCVersion &V = GCCInstallation.getVersion();
|
||||
bool UseInitArrayDefault =
|
||||
getTriple().getArch() == llvm::Triple::aarch64 ||
|
||||
(getTriple().getOS() == llvm::Triple::Linux && (
|
||||
!V.isOlderThan(4, 7, 0) ||
|
||||
getTriple().getEnvironment() == llvm::Triple::Android));
|
||||
|
||||
if (DriverArgs.hasFlag(options::OPT_fuse_init_array,
|
||||
options::OPT_fno_use_init_array,
|
||||
UseInitArrayDefault))
|
||||
CC1Args.push_back("-fuse-init-array");
|
||||
}
|
||||
|
||||
/// Hexagon Toolchain
|
||||
|
||||
std::string Hexagon_TC::GetGnuDir(const std::string &InstalledDir) {
|
||||
|
|
@ -2536,19 +2551,6 @@ Tool *Linux::buildAssembler() const {
|
|||
return new tools::gnutools::Assemble(*this);
|
||||
}
|
||||
|
||||
void Linux::addClangTargetOptions(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
const Generic_GCC::GCCVersion &V = GCCInstallation.getVersion();
|
||||
bool UseInitArrayDefault =
|
||||
!V.isOlderThan(4, 7, 0) ||
|
||||
getTriple().getArch() == llvm::Triple::aarch64 ||
|
||||
getTriple().getEnvironment() == llvm::Triple::Android;
|
||||
if (DriverArgs.hasFlag(options::OPT_fuse_init_array,
|
||||
options::OPT_fno_use_init_array,
|
||||
UseInitArrayDefault))
|
||||
CC1Args.push_back("-fuse-init-array");
|
||||
}
|
||||
|
||||
std::string Linux::computeSysRoot() const {
|
||||
if (!getDriver().SysRoot.empty())
|
||||
return getDriver().SysRoot;
|
||||
|
|
|
|||
|
|
@ -164,6 +164,8 @@ public:
|
|||
virtual bool isPICDefault() const;
|
||||
virtual bool isPIEDefault() const;
|
||||
virtual bool isPICDefaultForced() const;
|
||||
virtual void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const;
|
||||
|
||||
protected:
|
||||
virtual Tool *getTool(Action::ActionClass AC) const;
|
||||
|
|
@ -579,8 +581,6 @@ public:
|
|||
virtual void
|
||||
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const;
|
||||
virtual void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const;
|
||||
virtual void
|
||||
AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const;
|
||||
|
|
|
|||
|
|
@ -1995,13 +1995,6 @@ static void SplitDebugInfo(const ToolChain &TC, Compilation &C,
|
|||
C.addCommand(new Command(JA, T, Exec, StripArgs));
|
||||
}
|
||||
|
||||
static bool isOptimizationLevelFast(const ArgList &Args) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_O_Group))
|
||||
if (A->getOption().matches(options::OPT_Ofast))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// \brief Vectorize at all optimization levels greater than 1 except for -Oz.
|
||||
static bool shouldEnableVectorizerAtOLevel(const ArgList &Args) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
|
||||
|
|
@ -4611,8 +4604,14 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
// If -no_integrated_as is used add -Q to the darwin assember driver to make
|
||||
// sure it runs its system assembler not clang's integrated assembler.
|
||||
if (Args.hasArg(options::OPT_no_integrated_as))
|
||||
CmdArgs.push_back("-Q");
|
||||
// Applicable to darwin11+ and Xcode 4+. darwin<10 lacked integrated-as.
|
||||
// FIXME: at run-time detect assembler capabilities or rely on version
|
||||
// information forwarded by -target-assembler-version (future)
|
||||
if (Args.hasArg(options::OPT_no_integrated_as)) {
|
||||
const llvm::Triple& t(getToolChain().getTriple());
|
||||
if (!(t.isMacOSX() && t.isMacOSXVersionLT(10, 7)))
|
||||
CmdArgs.push_back("-Q");
|
||||
}
|
||||
|
||||
// Forward -g, assuming we are dealing with an actual assembly file.
|
||||
if (SourceAction->getType() == types::TY_Asm ||
|
||||
|
|
|
|||
|
|
@ -5836,17 +5836,16 @@ static inline bool VariableCanNeverBeAConstantExpression(VarDecl *Var,
|
|||
assert(DefVD);
|
||||
if (DefVD->isWeak()) return false;
|
||||
EvaluatedStmt *Eval = DefVD->ensureEvaluatedStmt();
|
||||
|
||||
|
||||
Expr *Init = cast<Expr>(Eval->Value);
|
||||
|
||||
if (Var->getType()->isDependentType() || Init->isValueDependent()) {
|
||||
if (!Init->isValueDependent())
|
||||
return !DefVD->checkInitIsICE();
|
||||
// FIXME: We might still be able to do some analysis of Init here
|
||||
// to conclude that even in a dependent setting, Init can never
|
||||
// be a constexpr - but for now admit agnosticity.
|
||||
// FIXME: Teach the constant evaluator to deal with the non-dependent parts
|
||||
// of value-dependent expressions, and use it here to determine whether the
|
||||
// initializer is a potential constant expression.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return !IsVariableAConstantExpression(Var, Context);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
// RUN: %clang_cc1 -pg -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -pg -triple powerpc-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s
|
||||
// RUN: %clang_cc1 -pg -triple powerpc64-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s
|
||||
// RUN: %clang_cc1 -pg -triple powerpc64le-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s
|
||||
void foo(void) {
|
||||
// CHECK: call void @mcount()
|
||||
// CHECK-PPC: call void @_mcount()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,3 +4,6 @@
|
|||
// RUN: grep 'target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128"' %t
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o %t %s
|
||||
// RUN: grep 'target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"' %t
|
||||
// RUN: %clang_cc1 -triple powerpc-darwin -o - -emit-llvm %s | \
|
||||
// RUN: FileCheck %s -check-prefix=PPC32-DARWIN
|
||||
// PPC32-DARWIN: target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v128:128:128-n32"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 %s -triple x86_64-linux -emit-llvm -o - -mconstructor-aliases -O1 -disable-llvm-optzns | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -triple x86_64-linux -emit-llvm -o - -mconstructor-aliases | FileCheck --check-prefix=NOOPT %s
|
||||
// RUN: %clang_cc1 %s -triple i686-linux -emit-llvm -o - -mconstructor-aliases -O1 -disable-llvm-optzns | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -triple i686-linux -emit-llvm -o - -mconstructor-aliases | FileCheck --check-prefix=NOOPT %s
|
||||
|
||||
// RUN: %clang_cc1 -cc1 -triple x86_64--netbsd -emit-llvm \
|
||||
// RUN: -mconstructor-aliases -O2 %s -o - | FileCheck --check-prefix=CHECK-RAUW %s
|
||||
|
|
@ -133,6 +133,22 @@ namespace test8 {
|
|||
zed foo;
|
||||
}
|
||||
|
||||
namespace test9 {
|
||||
struct foo {
|
||||
__attribute__((stdcall)) ~foo() {
|
||||
}
|
||||
};
|
||||
|
||||
struct bar : public foo {};
|
||||
|
||||
void zed() {
|
||||
// Test that we produce a call to bar's destructor. We used to call foo's, but
|
||||
// it has a different calling conversion.
|
||||
// CHECK-DAG: call void @_ZN5test93barD2Ev
|
||||
bar ptr;
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-RAUW: @_ZTV1C = linkonce_odr unnamed_addr constant [4 x i8*] [{{[^@]*}}@_ZTI1C {{[^@]*}}@_ZN1CD2Ev {{[^@]*}}@_ZN1CD0Ev {{[^@]*}}]
|
||||
// r194296 replaced C::~C with B::~B without emitting the later.
|
||||
|
||||
|
|
|
|||
|
|
@ -46,3 +46,12 @@
|
|||
// RUN: -target i386-unknown-linux-android \
|
||||
// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
|
||||
// RUN: -target aarch64-none-linux-gnu \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
|
||||
// RUN: -target aarch64-none-none-eabi \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
|
||||
|
|
|
|||
|
|
@ -1,16 +1,22 @@
|
|||
// RUN: %clang -target i386-apple-darwin10 -### -x assembler -c %s \
|
||||
// RUN: -no-integrated-as -static -dynamic 2>%t
|
||||
// RUN: FileCheck -check-prefix=CHECK-STATIC_AND_DYNAMIC-32-DARWIN10 --input-file %t %s
|
||||
//
|
||||
// CHECK-STATIC_AND_DYNAMIC-32-DARWIN10: as{{(.exe)?}}" "-arch" "i386" "-force_cpusubtype_ALL" "-static" "-o"
|
||||
|
||||
// RUN: %clang -target i386-apple-darwin11 -### -x assembler -c %s \
|
||||
// RUN: -no-integrated-as -static -dynamic 2>%t
|
||||
// RUN: FileCheck -check-prefix=CHECK-STATIC_AND_DYNAMIC-32 --input-file %t %s
|
||||
//
|
||||
// CHECK-STATIC_AND_DYNAMIC-32: as{{(.exe)?}}" "-Q" "-arch" "i386" "-force_cpusubtype_ALL" "-static" "-o"
|
||||
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -### -x assembler -c %s \
|
||||
// RUN: %clang -target x86_64-apple-darwin11 -### -x assembler -c %s \
|
||||
// RUN: -no-integrated-as -static 2>%t
|
||||
// RUN: FileCheck -check-prefix=CHECK-STATIC-64 --input-file %t %s
|
||||
//
|
||||
// CHECK-STATIC-64: as{{(.exe)?}}" "-Q" "-arch" "x86_64" "-force_cpusubtype_ALL" "-o"
|
||||
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -### \
|
||||
// RUN: %clang -target x86_64-apple-darwin11 -### \
|
||||
// RUN: -arch armv6 -no-integrated-as -x assembler -c %s 2>%t
|
||||
// RUN: FileCheck -check-prefix=CHECK-ARMV6 --input-file %t %s
|
||||
//
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/i686-linux-gnu"
|
||||
// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/backward"
|
||||
// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-UBUNTU-11-04: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-11-04: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
//
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward"
|
||||
// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7"
|
||||
// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-UBUNTU-13-04: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-13-04: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
|
||||
// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../include/c++/4.7/backward"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../include/arm-linux-gnueabihf/c++/4.7"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-UBUNTU-13-04-CROSS: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
//
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/i686-linux-gnu"
|
||||
// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/backward"
|
||||
// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-DEBIAN-X86: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-X86: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/i386-linux-gnu"
|
||||
// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/x86_64-linux-gnu"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/powerpc-linux-gnu"
|
||||
// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/backward"
|
||||
// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-DEBIAN-PPC: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-PPC: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc-linux-gnu"
|
||||
// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/powerpc64-linux-gnu"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc64-linux-gnu"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
@ -128,7 +128,7 @@
|
|||
// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/x86_64-pc-linux-gnu"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4/backward"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-GENTOO-4-6-2: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
|
||||
|
|
@ -141,6 +141,6 @@
|
|||
// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6/x86_64-pc-linux-gnu"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.4/include/g++-v4.6/backward"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-isystem" "{{.*}}{{/|\\\\}}lib{{(64|32)?}}{{/|\\\\}}clang{{/|\\\\}}{{[0-9]\.[0-9]\.[0-9]}}{{/|\\\\}}include"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/include"
|
||||
// CHECK-GENTOO-4-6-4: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
|
||||
|
|
|
|||
|
|
@ -681,7 +681,7 @@
|
|||
// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
|
||||
// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
|
||||
//
|
||||
// Check that crtfastmath.o is linked with -ffast-math.
|
||||
// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
|
||||
|
|
@ -691,9 +691,30 @@
|
|||
// RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
|
||||
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
|
||||
// We don't have crtfastmath.o in the i386 tree, use it to check that file
|
||||
// detection works.
|
||||
// RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
|
||||
|
|
|
|||
|
|
@ -31,14 +31,14 @@ int TestExpr __attribute__((guarded_by(mu1)));
|
|||
//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]>[[CYAN]] __builtin_va_list[[RESET]] [[Green]]'__va_list_tag [1]'[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]{{.*}}ast-dump-color.cpp:6:1[[RESET]], [[Yellow]]col:5[[RESET]]>[[CYAN]] Test[[RESET]] [[Green]]'int'[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE:.\[0;1;34m]]UnusedAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:25[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW:.\[0;1;33m]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]]> Text=" "{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[YELLOW]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:7[[RESET]]> Name="a"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]], [[Yellow]]col:12[[RESET]]> Text="Hello"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[YELLOW]]HTMLEndTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:13[[RESET]], [[Yellow]]col:16[[RESET]]> Name="a"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:5:4[[RESET]]> Text=" "{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:8[[RESET]]> Name="br" SelfClosing{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]]> Text=" "{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:7[[RESET]]> Name="a"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]], [[Yellow]]col:12[[RESET]]> Text="Hello"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]HTMLEndTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:13[[RESET]], [[Yellow]]col:16[[RESET]]> Name="a"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:5:4[[RESET]]> Text=" "{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:8[[RESET]]> Name="br" SelfClosing{{$}}
|
||||
//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]FunctionDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:9:1[[RESET]], [[Yellow]]line:16:1[[RESET]]>[[CYAN]] TestAttributedStmt[[RESET]] [[Green]]'void (void)'[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[MAGENTA:.\[0;1;35m]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:9:27[[RESET]], [[Yellow]]line:16:1[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]SwitchStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:10:3[[RESET]], [[Yellow]]line:15:3[[RESET]]>{{$}}
|
||||
|
|
@ -55,22 +55,22 @@ int TestExpr __attribute__((guarded_by(mu1)));
|
|||
//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:13:8[[RESET]]> [[Green]]'int'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]][[CYAN]] 2[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[Blue]]<<<NULL>>>[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]NullStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:14:5[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:8:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]> Text=" Comment"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:8:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]> Text=" Comment"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:1[[RESET]], [[Yellow]]line:25:1[[RESET]]> class[[CYAN]] Mutex[[RESET]] definition{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE]]LockableAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:22[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]col:33[[RESET]]> class[[CYAN]] Mutex[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:20:3[[RESET]], [[Yellow]]col:7[[RESET]]>[[CYAN]] var1[[RESET]] [[Green]]'int'[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:19:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]> Text=" A variable"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:19:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]> Text=" A variable"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:24:3[[RESET]], [[Yellow]]col:7[[RESET]]>[[CYAN]] var2[[RESET]] [[Green]]'int'[[RESET]]{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]line:23:44[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]col:22[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | | `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:22[[RESET]]> Text=" Another variable"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:23:6[[RESET]], [[Yellow]]col:44[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:44[[RESET]]> Text=" Like the other variable, but different"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]line:23:44[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | |-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]col:22[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:22[[RESET]]> Text=" Another variable"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:23:6[[RESET]], [[Yellow]]col:44[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[Blue]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:44[[RESET]]> Text=" Like the other variable, but different"{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:33[[RESET]]>[[CYAN]] Mutex[[RESET]] [[Green]]'void (void)'[[RESET]] inline{{.*$}}
|
||||
//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>{{$}}
|
||||
//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>[[CYAN]] Mutex[[RESET]] [[Green]]'void (const class Mutex &)'[[RESET]] inline{{ .*$}}
|
||||
|
|
|
|||
|
|
@ -134,3 +134,12 @@ void TestBlockDecl(int x) {
|
|||
// CHECK-NEXT: ...
|
||||
// CHECK-NEXT: capture ParmVar{{.*}} 'x' 'int'
|
||||
// CHECK-NEXT: CompoundStmt
|
||||
|
||||
@interface B
|
||||
+ (int) foo;
|
||||
@end
|
||||
|
||||
void f() {
|
||||
__typeof__(B.foo) Test;
|
||||
}
|
||||
// CHECK: VarDecl{{.*}}Test 'typeof (B.foo)':'int'
|
||||
|
|
|
|||
|
|
@ -1863,3 +1863,13 @@ namespace BuiltinStrlen {
|
|||
constexpr char d[] = { 'f', 'o', 'o' }; // no nul terminator.
|
||||
constexpr int bad = __builtin_strlen(d); // expected-error {{constant expression}} expected-note {{one-past-the-end}}
|
||||
}
|
||||
|
||||
namespace PR19010 {
|
||||
struct Empty {};
|
||||
struct Empty2 : Empty {};
|
||||
struct Test : Empty2 {
|
||||
constexpr Test() {}
|
||||
Empty2 array[2];
|
||||
};
|
||||
void test() { constexpr Test t; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -282,4 +282,19 @@ namespace lambdas_in_NSDMIs {
|
|||
};
|
||||
L l;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace PR18473 {
|
||||
template<typename T> void f() {
|
||||
T t(0);
|
||||
(void) [=]{ int n = t; }; // expected-error {{deleted}}
|
||||
}
|
||||
|
||||
template void f<int>();
|
||||
struct NoCopy {
|
||||
NoCopy(int);
|
||||
NoCopy(const NoCopy &) = delete; // expected-note {{deleted}}
|
||||
operator int() const;
|
||||
};
|
||||
template void f<NoCopy>(); // expected-note {{instantiation}}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -793,3 +793,30 @@ void testTemporariesAndOperators2() {
|
|||
|
||||
} // end namespace InitializerAssertionFailTest
|
||||
|
||||
|
||||
namespace std {
|
||||
void move();
|
||||
template<class T>
|
||||
void move(T&&);
|
||||
|
||||
namespace __1 {
|
||||
void move();
|
||||
template<class T>
|
||||
void move(T&&);
|
||||
}
|
||||
}
|
||||
|
||||
namespace PR18260 {
|
||||
class X {
|
||||
public:
|
||||
void move();
|
||||
} x;
|
||||
|
||||
void test() {
|
||||
x.move();
|
||||
std::move();
|
||||
std::move(x);
|
||||
std::__1::move();
|
||||
std::__1::move(x);
|
||||
}
|
||||
} // end namespace PR18260
|
||||
|
|
|
|||
Loading…
Reference in a new issue