Skip to content

Commit e21abfd

Browse files
committed
Merge remote-tracking branch 'otcshare_llvm/sycl-web' into llvmspirv_pulldown
2 parents 5bb5c34 + e9cae4f commit e21abfd

File tree

1,475 files changed

+58496
-53007
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,475 files changed

+58496
-53007
lines changed

clang/docs/Block-ABI-Apple.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

clang/docs/Makefile.sphinx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ html:
5050
@# Kind of a hack, but HTML-formatted docs are on the way out anyway.
5151
@echo "Copying legacy HTML-formatted docs into $(BUILDDIR)/html"
5252
@cp -a *.html $(BUILDDIR)/html
53-
@# FIXME: What we really need is a way to specify redirects, so that
54-
@# we can just redirect to a reST'ified version of this document.
55-
@# PR14714 is tracking the issue of redirects.
56-
@cp -a Block-ABI-Apple.txt $(BUILDDIR)/html
5753
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
5854

5955
dirhtml:

clang/include/clang/Basic/CodeGenOptions.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ CODEGENOPT(DisableLifetimeMarkers, 1, 0) ///< Don't emit any lifetime markers
6464
CODEGENOPT(DisableO0ImplyOptNone , 1, 0) ///< Don't annonate function with optnone at O0
6565
CODEGENOPT(ExperimentalStrictFloatingPoint, 1, 0) ///< Enables the new, experimental
6666
///< strict floating point.
67-
CODEGENOPT(DisableNoundefAttrs, 1, 0) ///< Disable emitting `noundef` attributes on IR call arguments and return values
67+
CODEGENOPT(EnableNoundefAttrs, 1, 0) ///< Enable emitting `noundef` attributes on IR call arguments and return values
6868
CODEGENOPT(LegacyPassManager, 1, 0) ///< Use the legacy pass manager.
6969
CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new
7070
///< pass manager.

clang/include/clang/Basic/DiagnosticParseKinds.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,9 @@ def err_duplicate_class_virt_specifier : Error<
958958
def err_duplicate_virt_specifier : Error<
959959
"class member already marked '%0'">;
960960

961+
def err_virt_specifier_outside_class : Error<
962+
"'%0' specifier is not allowed outside a class definition">;
963+
961964
def err_expected_parameter_pack : Error<
962965
"expected the name of a parameter pack">;
963966
def err_paren_sizeof_parameter_pack : Error<

clang/include/clang/Driver/Options.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5438,9 +5438,9 @@ def disable_free : Flag<["-"], "disable-free">,
54385438
def clear_ast_before_backend : Flag<["-"], "clear-ast-before-backend">,
54395439
HelpText<"Clear the Clang AST before running backend code generation">,
54405440
MarshallingInfoFlag<CodeGenOpts<"ClearASTBeforeBackend">>;
5441-
def disable_noundef_analysis : Flag<["-"], "disable-noundef-analysis">, Group<f_Group>,
5442-
HelpText<"Disable analyzing function argument and return types for mandatory definedness">,
5443-
MarshallingInfoFlag<CodeGenOpts<"DisableNoundefAttrs">>;
5441+
def enable_noundef_analysis : Flag<["-"], "enable-noundef-analysis">, Group<f_Group>,
5442+
HelpText<"Enable analyzing function argument and return types for mandatory definedness">,
5443+
MarshallingInfoFlag<CodeGenOpts<"EnableNoundefAttrs">>;
54445444
def discard_value_names : Flag<["-"], "discard-value-names">,
54455445
HelpText<"Discard value names in LLVM IR">,
54465446
MarshallingInfoFlag<CodeGenOpts<"DiscardValueNames">>;

clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,9 +1237,7 @@ enum CallDescriptionFlags : int {
12371237
/// arguments and the name of the function.
12381238
class CallDescription {
12391239
friend CallEvent;
1240-
1241-
mutable IdentifierInfo *II = nullptr;
1242-
mutable bool IsLookupDone = false;
1240+
mutable Optional<const IdentifierInfo *> II;
12431241
// The list of the qualified names used to identify the specified CallEvent,
12441242
// e.g. "{a, b}" represent the qualified names, like "a::b".
12451243
std::vector<const char *> QualifiedName;
@@ -1273,7 +1271,9 @@ class CallDescription {
12731271
Optional<size_t> RequiredParams = None)
12741272
: QualifiedName(QualifiedName), RequiredArgs(RequiredArgs),
12751273
RequiredParams(readRequiredParams(RequiredArgs, RequiredParams)),
1276-
Flags(Flags) {}
1274+
Flags(Flags) {
1275+
assert(!QualifiedName.empty());
1276+
}
12771277

12781278
/// Construct a CallDescription with default flags.
12791279
CallDescription(ArrayRef<const char *> QualifiedName,
@@ -1283,6 +1283,17 @@ class CallDescription {
12831283

12841284
/// Get the name of the function that this object matches.
12851285
StringRef getFunctionName() const { return QualifiedName.back(); }
1286+
1287+
/// Get the qualified name parts in reversed order.
1288+
/// E.g. { "std", "vector", "data" } -> "vector", "std"
1289+
auto begin_qualified_name_parts() const {
1290+
return std::next(QualifiedName.rbegin());
1291+
}
1292+
auto end_qualified_name_parts() const { return QualifiedName.rend(); }
1293+
1294+
/// It's false, if and only if we expect a single identifier, such as
1295+
/// `getenv`. It's true for `std::swap`, or `my::detail::container::data`.
1296+
bool hasQualifiedNameParts() const { return QualifiedName.size() > 1; }
12861297
};
12871298

12881299
/// An immutable map from CallDescriptions to arbitrary data. Provides a unified

clang/lib/CodeGen/CGCall.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2262,7 +2262,7 @@ void CodeGenModule::ConstructAttributeList(
22622262
getLangOpts().Sanitize.has(SanitizerKind::Return);
22632263

22642264
// Determine if the return type could be partially undef
2265-
if (!CodeGenOpts.DisableNoundefAttrs && HasStrictReturn) {
2265+
if (CodeGenOpts.EnableNoundefAttrs && HasStrictReturn) {
22662266
if (!RetTy->isVoidType() && RetAI.getKind() != ABIArgInfo::Indirect &&
22672267
DetermineNoUndef(RetTy, getTypes(), DL, RetAI))
22682268
RetAttrs.addAttribute(llvm::Attribute::NoUndef);
@@ -2397,7 +2397,7 @@ void CodeGenModule::ConstructAttributeList(
23972397

23982398
// Decide whether the argument we're handling could be partially undef
23992399
bool ArgNoUndef = DetermineNoUndef(ParamType, getTypes(), DL, AI);
2400-
if (!CodeGenOpts.DisableNoundefAttrs && ArgNoUndef)
2400+
if (CodeGenOpts.EnableNoundefAttrs && ArgNoUndef)
24012401
Attrs.addAttribute(llvm::Attribute::NoUndef);
24022402

24032403
// 'restrict' -> 'noalias' is done in EmitFunctionProlog when we

clang/lib/Frontend/CompilerInstance.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -568,25 +568,28 @@ namespace {
568568
// the files we were handed.
569569
struct ReadModuleNames : ASTReaderListener {
570570
Preprocessor &PP;
571-
llvm::SmallVector<IdentifierInfo*, 8> LoadedModules;
571+
llvm::SmallVector<std::string, 8> LoadedModules;
572572

573573
ReadModuleNames(Preprocessor &PP) : PP(PP) {}
574574

575575
void ReadModuleName(StringRef ModuleName) override {
576-
LoadedModules.push_back(PP.getIdentifierInfo(ModuleName));
576+
// Keep the module name as a string for now. It's not safe to create a new
577+
// IdentifierInfo from an ASTReader callback.
578+
LoadedModules.push_back(ModuleName.str());
577579
}
578580

579581
void registerAll() {
580582
ModuleMap &MM = PP.getHeaderSearchInfo().getModuleMap();
581-
for (auto *II : LoadedModules)
582-
MM.cacheModuleLoad(*II, MM.findModule(II->getName()));
583+
for (const std::string &LoadedModule : LoadedModules)
584+
MM.cacheModuleLoad(*PP.getIdentifierInfo(LoadedModule),
585+
MM.findModule(LoadedModule));
583586
LoadedModules.clear();
584587
}
585588

586589
void markAllUnavailable() {
587-
for (auto *II : LoadedModules) {
590+
for (const std::string &LoadedModule : LoadedModules) {
588591
if (Module *M = PP.getHeaderSearchInfo().getModuleMap().findModule(
589-
II->getName())) {
592+
LoadedModule)) {
590593
M->HasIncompatibleModuleFile = true;
591594

592595
// Mark module as available if the only reason it was unavailable

clang/lib/Parse/ParseDecl.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2021,6 +2021,18 @@ Parser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS,
20212021
Actions.CodeCompleteAfterFunctionEquals(D);
20222022
return nullptr;
20232023
}
2024+
// We're at the point where the parsing of function declarator is finished.
2025+
//
2026+
// A common error is that users accidently add a virtual specifier
2027+
// (e.g. override) in an out-line method definition.
2028+
// We attempt to recover by stripping all these specifiers coming after
2029+
// the declarator.
2030+
while (auto Specifier = isCXX11VirtSpecifier()) {
2031+
Diag(Tok, diag::err_virt_specifier_outside_class)
2032+
<< VirtSpecifiers::getSpecifierName(Specifier)
2033+
<< FixItHint::CreateRemoval(Tok.getLocation());
2034+
ConsumeToken();
2035+
}
20242036
// Look at the next token to make sure that this isn't a function
20252037
// declaration. We have to check this because __attribute__ might be the
20262038
// start of a function definition in GCC-extended K&R C.

clang/lib/Sema/SemaOverload.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9586,7 +9586,8 @@ static bool haveSameParameterTypes(ASTContext &Context, const FunctionDecl *F1,
95869586
for (unsigned I = 0; I != NumParams; ++I) {
95879587
QualType T1 = NextParam(F1, I1, I == 0);
95889588
QualType T2 = NextParam(F2, I2, I == 0);
9589-
if (!T1.isNull() && !T1.isNull() && !Context.hasSameUnqualifiedType(T1, T2))
9589+
assert(!T1.isNull() && !T2.isNull() && "Unexpected null param types");
9590+
if (!Context.hasSameUnqualifiedType(T1, T2))
95909591
return false;
95919592
}
95929593
return true;

clang/lib/StaticAnalyzer/Core/CallEvent.cpp

Lines changed: 56 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,7 @@ bool CallEvent::isCalled(const CallDescription &CD) const {
307307
if (getKind() == CE_ObjCMessage)
308308
return false;
309309

310-
const IdentifierInfo *II = getCalleeIdentifier();
311-
if (!II)
312-
return false;
313-
const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(getDecl());
310+
const auto *FD = dyn_cast_or_null<FunctionDecl>(getDecl());
314311
if (!FD)
315312
return false;
316313

@@ -320,44 +317,71 @@ bool CallEvent::isCalled(const CallDescription &CD) const {
320317
(!CD.RequiredParams || CD.RequiredParams <= parameters().size());
321318
}
322319

323-
if (!CD.IsLookupDone) {
324-
CD.IsLookupDone = true;
320+
if (!CD.II.hasValue()) {
325321
CD.II = &getState()->getStateManager().getContext().Idents.get(
326322
CD.getFunctionName());
327323
}
328324

329-
if (II != CD.II)
330-
return false;
331-
332-
// If CallDescription provides prefix names, use them to improve matching
333-
// accuracy.
334-
if (CD.QualifiedName.size() > 1 && FD) {
335-
const DeclContext *Ctx = FD->getDeclContext();
336-
// See if we'll be able to match them all.
337-
size_t NumUnmatched = CD.QualifiedName.size() - 1;
338-
for (; Ctx && isa<NamedDecl>(Ctx); Ctx = Ctx->getParent()) {
339-
if (NumUnmatched == 0)
340-
break;
325+
const auto MatchNameOnly = [](const CallDescription &CD,
326+
const NamedDecl *ND) -> bool {
327+
DeclarationName Name = ND->getDeclName();
328+
if (const auto *II = Name.getAsIdentifierInfo())
329+
return II == CD.II.getValue(); // Fast case.
330+
331+
// Fallback to the slow stringification and comparison for:
332+
// C++ overloaded operators, constructors, destructors, etc.
333+
// FIXME This comparison is way SLOWER than comparing pointers.
334+
// At some point in the future, we should compare FunctionDecl pointers.
335+
return Name.getAsString() == CD.getFunctionName();
336+
};
341337

342-
if (const auto *ND = dyn_cast<NamespaceDecl>(Ctx)) {
343-
if (ND->getName() == CD.QualifiedName[NumUnmatched - 1])
344-
--NumUnmatched;
345-
continue;
346-
}
338+
const auto ExactMatchArgAndParamCounts =
339+
[](const CallEvent &Call, const CallDescription &CD) -> bool {
340+
const bool ArgsMatch =
341+
!CD.RequiredArgs || CD.RequiredArgs == Call.getNumArgs();
342+
const bool ParamsMatch =
343+
!CD.RequiredParams || CD.RequiredParams == Call.parameters().size();
344+
return ArgsMatch && ParamsMatch;
345+
};
347346

348-
if (const auto *RD = dyn_cast<RecordDecl>(Ctx)) {
349-
if (RD->getName() == CD.QualifiedName[NumUnmatched - 1])
350-
--NumUnmatched;
347+
const auto MatchQualifiedNameParts = [](const CallDescription &CD,
348+
const Decl *D) -> bool {
349+
const auto FindNextNamespaceOrRecord =
350+
[](const DeclContext *Ctx) -> const DeclContext * {
351+
while (Ctx && !isa<NamespaceDecl, RecordDecl>(Ctx))
352+
Ctx = Ctx->getParent();
353+
return Ctx;
354+
};
355+
356+
auto QualifierPartsIt = CD.begin_qualified_name_parts();
357+
const auto QualifierPartsEndIt = CD.end_qualified_name_parts();
358+
359+
// Match namespace and record names. Skip unrelated names if they don't
360+
// match.
361+
const DeclContext *Ctx = FindNextNamespaceOrRecord(D->getDeclContext());
362+
for (; Ctx && QualifierPartsIt != QualifierPartsEndIt;
363+
Ctx = FindNextNamespaceOrRecord(Ctx->getParent())) {
364+
// If not matched just continue and try matching for the next one.
365+
if (cast<NamedDecl>(Ctx)->getName() != *QualifierPartsIt)
351366
continue;
352-
}
367+
++QualifierPartsIt;
353368
}
354369

355-
if (NumUnmatched > 0)
356-
return false;
357-
}
370+
// We matched if we consumed all expected qualifier segments.
371+
return QualifierPartsIt == QualifierPartsEndIt;
372+
};
373+
374+
// Let's start matching...
375+
if (!ExactMatchArgAndParamCounts(*this, CD))
376+
return false;
377+
378+
if (!MatchNameOnly(CD, FD))
379+
return false;
380+
381+
if (!CD.hasQualifiedNameParts())
382+
return true;
358383

359-
return (!CD.RequiredArgs || CD.RequiredArgs == getNumArgs()) &&
360-
(!CD.RequiredParams || CD.RequiredParams == parameters().size());
384+
return MatchQualifiedNameParts(CD, FD);
361385
}
362386

363387
SVal CallEvent::getArgSVal(unsigned Index) const {

clang/test/CXX/except/except.spec/p14-ir.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ struct X4 {
2626
struct X5 : X0, X4 { };
2727

2828
void test(X2 x2, X3 x3, X5 x5) {
29-
// CHECK: define linkonce_odr void @_ZN2X2C1ERKS_(%struct.X2* {{[^,]*}} %this, %struct.X2* noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %0) unnamed_addr
29+
// CHECK: define linkonce_odr void @_ZN2X2C1ERKS_(%struct.X2* {{[^,]*}} %this, %struct.X2* nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %0) unnamed_addr
3030
// CHECK: call void @_ZN2X2C2ERKS_({{.*}}) [[NUW:#[0-9]+]]
3131
// CHECK-NEXT: ret void
3232
// CHECK-NEXT: }
3333
X2 x2a(x2);
34-
// CHECK: define linkonce_odr void @_ZN2X3C1ERKS_(%struct.X3* {{[^,]*}} %this, %struct.X3* noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %0) unnamed_addr
34+
// CHECK: define linkonce_odr void @_ZN2X3C1ERKS_(%struct.X3* {{[^,]*}} %this, %struct.X3* nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %0) unnamed_addr
3535
// CHECK: call void @_ZN2X3C2ERKS_({{.*}}) [[NUW]]
3636
// CHECK-NEXT: ret void
3737
// CHECK-NEXT: }

clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ bool f1(int *x) {
1313
return outer();
1414
}
1515

16-
// CHECK: define internal noundef zeroext i1 @___ZN7PR127462f1EPi_block_invoke
17-
// CHECK: call noundef zeroext i1 @"_ZZZN7PR127462f1EPiEUb_ENK3$_0clEv"
16+
// CHECK: define internal zeroext i1 @___ZN7PR127462f1EPi_block_invoke
17+
// CHECK: call zeroext i1 @"_ZZZN7PR127462f1EPiEUb_ENK3$_0clEv"
1818

1919
bool f2(int *x) {
2020
auto outer = [&]() -> bool {

clang/test/CodeGen/2005-01-02-ConstantInits.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,21 @@ int i = (int) &( ((struct X *)0) -> a[1]);
2929
int Arr[100];
3030

3131
// CHECK-LABEL: define {{[^@]+}}@foo
32-
// CHECK-SAME: (i32 noundef [[I:%.*]]) #[[ATTR0]] {
32+
// CHECK-SAME: (i32 [[I:%.*]]) #[[ATTR0]] {
3333
// CHECK-NEXT: entry:
3434
// CHECK-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
3535
// CHECK-NEXT: store i32 [[I]], i32* [[I_ADDR]], align 4
36-
// CHECK-NEXT: [[CALL:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* noundef getelementptr inbounds ([100 x i32], [100 x i32]* @Arr, i64 0, i64 49))
36+
// CHECK-NEXT: [[CALL:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* getelementptr inbounds ([100 x i32], [100 x i32]* @Arr, i64 0, i64 49))
3737
// CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I_ADDR]], align 4
3838
// CHECK-NEXT: [[IDXPROM:%.*]] = sext i32 [[TMP0]] to i64
3939
// CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [100 x i32], [100 x i32]* @Arr, i64 0, i64 [[IDXPROM]]
40-
// CHECK-NEXT: [[CALL1:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* noundef [[ARRAYIDX]])
40+
// CHECK-NEXT: [[CALL1:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* [[ARRAYIDX]])
4141
// CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[CALL]], [[CALL1]]
4242
// CHECK-NEXT: ret i32 [[ADD]]
4343
//
4444
int foo(int i) { return bar(&Arr[49])+bar(&Arr[i]); }
4545
// CHECK-LABEL: define {{[^@]+}}@foo2
46-
// CHECK-SAME: (i32 noundef [[I:%.*]]) #[[ATTR0]] {
46+
// CHECK-SAME: (i32 [[I:%.*]]) #[[ATTR0]] {
4747
// CHECK-NEXT: entry:
4848
// CHECK-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4
4949
// CHECK-NEXT: [[P:%.*]] = alloca i32*, align 8
@@ -55,7 +55,7 @@ int foo(int i) { return bar(&Arr[49])+bar(&Arr[i]); }
5555
// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[I_ADDR]], align 4
5656
// CHECK-NEXT: [[IDX_EXT:%.*]] = sext i32 [[TMP1]] to i64
5757
// CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, i32* getelementptr inbounds ([100 x i32], [100 x i32]* @Arr, i64 0, i64 0), i64 [[IDX_EXT]]
58-
// CHECK-NEXT: [[CALL:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* noundef [[ADD_PTR]])
58+
// CHECK-NEXT: [[CALL:%.*]] = call i32 (i32*, ...) bitcast (i32 (...)* @bar to i32 (i32*, ...)*)(i32* [[ADD_PTR]])
5959
// CHECK-NEXT: ret i32 [[CALL]]
6060
//
6161
int foo2(int i) {

clang/test/CodeGen/2006-05-19-SingleEltReturn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ struct Y bar() {
2323
}
2424

2525

26-
// X86_32: define{{.*}} void @foo(%struct.Y* noundef %P)
26+
// X86_32: define{{.*}} void @foo(%struct.Y* %P)
2727
// X86_32: call void @bar(%struct.Y* sret(%struct.Y) align 4 %{{[^),]*}})
2828

2929
// X86_32: define{{.*}} void @bar(%struct.Y* noalias sret(%struct.Y) align 4 %{{[^,)]*}})

clang/test/CodeGen/2007-06-18-SextAttrAggregate.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -disable-noundef-analysis %s -o - -emit-llvm | FileCheck %s
1+
// RUN: %clang_cc1 %s -o - -emit-llvm | FileCheck %s
22
// XFAIL: aarch64, arm64, x86_64-pc-windows-msvc, x86_64-w64-windows-gnu, x86_64-pc-windows-gnu
33

44
// PR1513

clang/test/CodeGen/2009-02-13-zerosize-union-field.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 %s -disable-noundef-analysis -triple i686-apple-darwin -emit-llvm -o - | FileCheck %s
1+
// RUN: %clang_cc1 %s -triple i686-apple-darwin -emit-llvm -o - | FileCheck %s
22
// Every printf has 'i32 0' for the GEP of the string; no point counting those.
33
typedef unsigned int Foo __attribute__((aligned(32)));
44
typedef union{Foo:0;}a;

clang/test/CodeGen/2009-05-04-EnumInreg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -disable-noundef-analysis -emit-llvm -triple i686-apple-darwin -mregparm 3 %s -o - | FileCheck %s
1+
// RUN: %clang_cc1 -emit-llvm -triple i686-apple-darwin -mregparm 3 %s -o - | FileCheck %s
22
// PR3967
33

44
enum kobject_action {

clang/test/CodeGen/64bit-swiftcall.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// RUN: %clang_cc1 -disable-noundef-analysis -triple x86_64-apple-darwin10 -target-cpu core2 -emit-llvm -o - %s | FileCheck %s
2-
// RUN: %clang_cc1 -disable-noundef-analysis -triple x86_64-apple-darwin10 -target-cpu core2 -emit-llvm -o - %s | FileCheck %s --check-prefix=X86-64
3-
// RUN: %clang_cc1 -disable-noundef-analysis -triple arm64-apple-ios9 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s
4-
// RUN: %clang_cc1 -disable-noundef-analysis -triple arm64-apple-ios9 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s --check-prefix=ARM64
1+
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -target-cpu core2 -emit-llvm -o - %s | FileCheck %s
2+
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -target-cpu core2 -emit-llvm -o - %s | FileCheck %s --check-prefix=X86-64
3+
// RUN: %clang_cc1 -triple arm64-apple-ios9 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s
4+
// RUN: %clang_cc1 -triple arm64-apple-ios9 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s --check-prefix=ARM64
55

66
// REQUIRES: aarch64-registered-target,x86-registered-target
77

clang/test/CodeGen/RISCV/riscv-inline-asm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void test_f() {
4040
}
4141

4242
void test_A(int *p) {
43-
// CHECK-LABEL: define{{.*}} void @test_A(i32* noundef %p)
43+
// CHECK-LABEL: define{{.*}} void @test_A(i32* %p)
4444
// CHECK: call void asm sideeffect "", "*A"(i32* %p)
4545
asm volatile("" :: "A"(*p));
4646
}

0 commit comments

Comments
 (0)