Skip to content

Commit aa00493

Browse files
author
Jenkins
committed
merge main into amd-staging
Change-Id: I0d8cf2a45f283dc6eeb71a28dc7a29694589240b
2 parents 283ec83 + 3b10e31 commit aa00493

Some content is hidden

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

50 files changed

+662
-172
lines changed

clang/include/clang/Basic/FileEntry.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class FileEntryRef {
6868
StringRef getNameAsRequested() const { return ME->first(); }
6969

7070
const FileEntry &getFileEntry() const {
71-
return *getBaseMapEntry().second->V.get<FileEntry *>();
71+
return *cast<FileEntry *>(getBaseMapEntry().second->V);
7272
}
7373

7474
// This function is used if the buffer size needs to be increased
@@ -361,7 +361,7 @@ bool FileEntryRef::isNamedPipe() const { return getFileEntry().isNamedPipe(); }
361361
void FileEntryRef::closeFile() const { getFileEntry().closeFile(); }
362362

363363
void FileEntryRef::updateFileEntryBufferSize(unsigned BufferSize) {
364-
getBaseMapEntry().second->V.get<FileEntry *>()->setSize(BufferSize);
364+
cast<FileEntry *>(getBaseMapEntry().second->V)->setSize(BufferSize);
365365
}
366366

367367
} // end namespace clang

clang/include/clang/Basic/IdentifierTable.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,15 +1012,15 @@ class Selector {
10121012
}
10131013

10141014
MultiKeywordSelector *getMultiKeywordSelector() const {
1015-
return InfoPtr.getPointer().get<MultiKeywordSelector *>();
1015+
return cast<MultiKeywordSelector *>(InfoPtr.getPointer());
10161016
}
10171017

10181018
unsigned getIdentifierInfoFlag() const {
10191019
unsigned new_flags = InfoPtr.getInt();
10201020
// IMPORTANT NOTE: We have to reconstitute this data rather than use the
10211021
// value directly from the PointerIntPair. See the comments in `InfoPtr`
10221022
// for more details.
1023-
if (InfoPtr.getPointer().is<MultiKeywordSelector *>())
1023+
if (isa<MultiKeywordSelector *>(InfoPtr.getPointer()))
10241024
new_flags |= MultiArg;
10251025
return new_flags;
10261026
}

clang/include/clang/Sema/ParsedAttr.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -392,19 +392,17 @@ class ParsedAttr final
392392
}
393393

394394
bool isArgExpr(unsigned Arg) const {
395-
return Arg < NumArgs && getArg(Arg).is<Expr*>();
395+
return Arg < NumArgs && isa<Expr *>(getArg(Arg));
396396
}
397397

398-
Expr *getArgAsExpr(unsigned Arg) const {
399-
return getArg(Arg).get<Expr*>();
400-
}
398+
Expr *getArgAsExpr(unsigned Arg) const { return cast<Expr *>(getArg(Arg)); }
401399

402400
bool isArgIdent(unsigned Arg) const {
403-
return Arg < NumArgs && getArg(Arg).is<IdentifierLoc*>();
401+
return Arg < NumArgs && isa<IdentifierLoc *>(getArg(Arg));
404402
}
405403

406404
IdentifierLoc *getArgAsIdent(unsigned Arg) const {
407-
return getArg(Arg).get<IdentifierLoc*>();
405+
return cast<IdentifierLoc *>(getArg(Arg));
408406
}
409407

410408
const AvailabilityChange &getAvailabilityIntroduced() const {

clang/include/clang/Sema/SemaConcept.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,17 +210,17 @@ bool subsumes(const NormalForm &PDNF, const NormalForm &QCNF,
210210
bool Found = false;
211211
for (NormalFormConstraint Pia : Pi) {
212212
for (NormalFormConstraint Qjb : Qj) {
213-
if (Pia.is<FoldExpandedConstraint *>() &&
214-
Qjb.is<FoldExpandedConstraint *>()) {
215-
if (Pia.get<FoldExpandedConstraint *>()->subsumes(
216-
*Qjb.get<FoldExpandedConstraint *>(), E)) {
213+
if (isa<FoldExpandedConstraint *>(Pia) &&
214+
isa<FoldExpandedConstraint *>(Qjb)) {
215+
if (cast<FoldExpandedConstraint *>(Pia)->subsumes(
216+
*cast<FoldExpandedConstraint *>(Qjb), E)) {
217217
Found = true;
218218
break;
219219
}
220-
} else if (Pia.is<AtomicConstraint *>() &&
221-
Qjb.is<AtomicConstraint *>()) {
222-
if (E(*Pia.get<AtomicConstraint *>(),
223-
*Qjb.get<AtomicConstraint *>())) {
220+
} else if (isa<AtomicConstraint *>(Pia) &&
221+
isa<AtomicConstraint *>(Qjb)) {
222+
if (E(*cast<AtomicConstraint *>(Pia),
223+
*cast<AtomicConstraint *>(Qjb))) {
224224
Found = true;
225225
break;
226226
}

clang/include/clang/Sema/SemaInternal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ getDepthAndIndex(UnexpandedParameterPack UPP) {
7575
if (const auto *TTP = UPP.first.dyn_cast<const TemplateTypeParmType *>())
7676
return std::make_pair(TTP->getDepth(), TTP->getIndex());
7777

78-
return getDepthAndIndex(UPP.first.get<NamedDecl *>());
78+
return getDepthAndIndex(cast<NamedDecl *>(UPP.first));
7979
}
8080

8181
class TypoCorrectionConsumer : public VisibleDeclConsumer {

clang/include/clang/Sema/Template.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -486,10 +486,10 @@ enum class TemplateSubstitutionKind : char {
486486
const Decl *D = I->first;
487487
llvm::PointerUnion<Decl *, DeclArgumentPack *> &Stored =
488488
newScope->LocalDecls[D];
489-
if (I->second.is<Decl *>()) {
490-
Stored = I->second.get<Decl *>();
489+
if (auto *D2 = dyn_cast<Decl *>(I->second)) {
490+
Stored = D2;
491491
} else {
492-
DeclArgumentPack *OldPack = I->second.get<DeclArgumentPack *>();
492+
DeclArgumentPack *OldPack = cast<DeclArgumentPack *>(I->second);
493493
DeclArgumentPack *NewPack = new DeclArgumentPack(*OldPack);
494494
Stored = NewPack;
495495
newScope->ArgumentPacks.push_back(NewPack);

clang/lib/APINotes/APINotesManager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,9 +374,9 @@ APINotesManager::findAPINotes(SourceLocation Loc) {
374374
++NumDirectoryCacheHits;
375375

376376
// We've been redirected to another directory for answers. Follow it.
377-
if (Known->second && Known->second.is<DirectoryEntryRef>()) {
377+
if (Known->second && isa<DirectoryEntryRef>(Known->second)) {
378378
DirsVisited.insert(*Dir);
379-
Dir = Known->second.get<DirectoryEntryRef>();
379+
Dir = cast<DirectoryEntryRef>(Known->second);
380380
continue;
381381
}
382382

clang/lib/Analysis/ThreadSafetyCommon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ til::SExpr *SExprBuilder::translateDeclRefExpr(const DeclRefExpr *DRE,
326326
}
327327

328328
assert(I == 0);
329-
return Ctx->FunArgs.get<til::SExpr *>();
329+
return cast<til::SExpr *>(Ctx->FunArgs);
330330
}
331331
}
332332
// Map the param back to the param of the original function declaration

clang/lib/Basic/FileManager.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,9 @@ llvm::Expected<FileEntryRef> FileManager::getFileRef(StringRef Filename,
324324
*SeenFileEntries
325325
.insert({Status.getName(), FileEntryRef::MapValue(*UFE, DirInfo)})
326326
.first;
327-
assert(Redirection.second->V.is<FileEntry *>() &&
327+
assert(isa<FileEntry *>(Redirection.second->V) &&
328328
"filename redirected to a non-canonical filename?");
329-
assert(Redirection.second->V.get<FileEntry *>() == UFE &&
329+
assert(cast<FileEntry *>(Redirection.second->V) == UFE &&
330330
"filename from getStatValue() refers to wrong file");
331331

332332
// Cache the redirection in the previously-inserted entry, still available
@@ -400,7 +400,7 @@ FileEntryRef FileManager::getVirtualFileRef(StringRef Filename, off_t Size,
400400
FileEntryRef::MapValue Value = *NamedFileEnt.second;
401401
if (LLVM_LIKELY(isa<FileEntry *>(Value.V)))
402402
return FileEntryRef(NamedFileEnt);
403-
return FileEntryRef(*Value.V.get<const FileEntryRef::MapEntry *>());
403+
return FileEntryRef(*cast<const FileEntryRef::MapEntry *>(Value.V));
404404
}
405405

406406
// We've not seen this before, or the file is cached as non-existent.
@@ -620,7 +620,7 @@ void FileManager::GetUniqueIDMapping(
620620

621621
for (const auto &Entry : SeenFileEntries) {
622622
// Only return files that exist and are not redirected.
623-
if (!Entry.getValue() || !Entry.getValue()->V.is<FileEntry *>())
623+
if (!Entry.getValue() || !isa<FileEntry *>(Entry.getValue()->V))
624624
continue;
625625
FileEntryRef FE(Entry);
626626
// Add this file if it's the first one with the UID, or if its name is

clang/lib/Basic/Targets.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
726726
case llvm::Triple::Linux:
727727
return std::make_unique<LinuxTargetInfo<LoongArch32TargetInfo>>(Triple,
728728
Opts);
729+
case llvm::Triple::FreeBSD:
730+
return std::make_unique<FreeBSDTargetInfo<LoongArch32TargetInfo>>(Triple,
731+
Opts);
729732
default:
730733
return std::make_unique<LoongArch32TargetInfo>(Triple, Opts);
731734
}
@@ -734,6 +737,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
734737
case llvm::Triple::Linux:
735738
return std::make_unique<LinuxTargetInfo<LoongArch64TargetInfo>>(Triple,
736739
Opts);
740+
case llvm::Triple::FreeBSD:
741+
return std::make_unique<FreeBSDTargetInfo<LoongArch64TargetInfo>>(Triple,
742+
Opts);
737743
default:
738744
return std::make_unique<LoongArch64TargetInfo>(Triple, Opts);
739745
}

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@ class LLVM_LIBRARY_VISIBILITY FreeBSDTargetInfo : public OSTargetInfo<Target> {
231231
case llvm::Triple::riscv32:
232232
case llvm::Triple::riscv64:
233233
break;
234+
case llvm::Triple::loongarch32:
235+
case llvm::Triple::loongarch64:
236+
break;
234237
}
235238
}
236239
};

clang/lib/CodeGen/CGOpenMPRuntime.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4132,7 +4132,7 @@ static void emitDependData(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
41324132
CGF.Builder.CreateConstGEP(DependenciesArray, *P), KmpDependInfoTy);
41334133
} else {
41344134
assert(E && "Expected a non-null expression");
4135-
LValue &PosLVal = *Pos.get<LValue *>();
4135+
LValue &PosLVal = *cast<LValue *>(Pos);
41364136
llvm::Value *Idx = CGF.EmitLoadOfScalar(PosLVal, E->getExprLoc());
41374137
Base = CGF.MakeAddrLValue(
41384138
CGF.Builder.CreateGEP(CGF, DependenciesArray, Idx), KmpDependInfoTy);
@@ -4160,7 +4160,7 @@ static void emitDependData(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
41604160
if (unsigned *P = Pos.dyn_cast<unsigned *>()) {
41614161
++(*P);
41624162
} else {
4163-
LValue &PosLVal = *Pos.get<LValue *>();
4163+
LValue &PosLVal = *cast<LValue *>(Pos);
41644164
llvm::Value *Idx = CGF.EmitLoadOfScalar(PosLVal, E->getExprLoc());
41654165
Idx = CGF.Builder.CreateNUWAdd(Idx,
41664166
llvm::ConstantInt::get(Idx->getType(), 1));

clang/lib/Driver/SanitizerArgs.cpp

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -247,39 +247,49 @@ static SanitizerMask setGroupBits(SanitizerMask Kinds) {
247247
return Kinds;
248248
}
249249

250-
static SanitizerMask parseSanitizeTrapArgs(const Driver &D,
251-
const llvm::opt::ArgList &Args,
252-
bool DiagnoseErrors) {
253-
SanitizerMask TrapRemove; // During the loop below, the accumulated set of
254-
// sanitizers disabled by the current sanitizer
255-
// argument or any argument after it.
256-
SanitizerMask TrappingKinds;
257-
SanitizerMask TrappingSupportedWithGroups = setGroupBits(TrappingSupported);
250+
// Computes the sanitizer mask based on the default plus opt-in (if supported)
251+
// minus opt-out.
252+
static SanitizerMask
253+
parseSanitizeArgs(const Driver &D, const llvm::opt::ArgList &Args,
254+
bool DiagnoseErrors, SanitizerMask Supported,
255+
SanitizerMask Default, int OptInID, int OptOutID) {
256+
SanitizerMask Remove; // During the loop below, the accumulated set of
257+
// sanitizers disabled by the current sanitizer
258+
// argument or any argument after it.
259+
SanitizerMask Kinds;
260+
SanitizerMask SupportedWithGroups = setGroupBits(Supported);
258261

259262
for (const llvm::opt::Arg *Arg : llvm::reverse(Args)) {
260-
if (Arg->getOption().matches(options::OPT_fsanitize_trap_EQ)) {
263+
if (Arg->getOption().matches(OptInID)) {
261264
Arg->claim();
262265
SanitizerMask Add = parseArgValues(D, Arg, true);
263-
Add &= ~TrapRemove;
264-
SanitizerMask InvalidValues = Add & ~TrappingSupportedWithGroups;
266+
Add &= ~Remove;
267+
SanitizerMask InvalidValues = Add & ~SupportedWithGroups;
265268
if (InvalidValues && DiagnoseErrors) {
266269
SanitizerSet S;
267270
S.Mask = InvalidValues;
268271
D.Diag(diag::err_drv_unsupported_option_argument)
269272
<< Arg->getSpelling() << toString(S);
270273
}
271-
TrappingKinds |= expandSanitizerGroups(Add) & ~TrapRemove;
272-
} else if (Arg->getOption().matches(options::OPT_fno_sanitize_trap_EQ)) {
274+
Kinds |= expandSanitizerGroups(Add) & ~Remove;
275+
} else if (Arg->getOption().matches(OptOutID)) {
273276
Arg->claim();
274-
TrapRemove |=
275-
expandSanitizerGroups(parseArgValues(D, Arg, DiagnoseErrors));
277+
Remove |= expandSanitizerGroups(parseArgValues(D, Arg, DiagnoseErrors));
276278
}
277279
}
278280

279-
// Apply default trapping behavior.
280-
TrappingKinds |= TrappingDefault & ~TrapRemove;
281+
// Apply default behavior.
282+
Kinds |= Default & ~Remove;
283+
284+
return Kinds;
285+
}
281286

282-
return TrappingKinds;
287+
static SanitizerMask parseSanitizeTrapArgs(const Driver &D,
288+
const llvm::opt::ArgList &Args,
289+
bool DiagnoseErrors) {
290+
return parseSanitizeArgs(D, Args, DiagnoseErrors, TrappingSupported,
291+
TrappingDefault, options::OPT_fsanitize_trap_EQ,
292+
options::OPT_fno_sanitize_trap_EQ);
283293
}
284294

285295
bool SanitizerArgs::needsFuzzerInterceptors() const {

clang/lib/Driver/ToolChains/FreeBSD.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,14 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
213213
CmdArgs.push_back("-m");
214214
CmdArgs.push_back("elf64lriscv");
215215
break;
216+
case llvm::Triple::loongarch32:
217+
CmdArgs.push_back("-m");
218+
CmdArgs.push_back("elf32loongarch");
219+
break;
220+
case llvm::Triple::loongarch64:
221+
CmdArgs.push_back("-m");
222+
CmdArgs.push_back("elf64loongarch");
223+
break;
216224
default:
217225
break;
218226
}
@@ -223,6 +231,12 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
223231
CmdArgs.push_back("--no-relax");
224232
}
225233

234+
if (Triple.isLoongArch64()) {
235+
CmdArgs.push_back("-X");
236+
if (Args.hasArg(options::OPT_mno_relax))
237+
CmdArgs.push_back("--no-relax");
238+
}
239+
226240
if (Arg *A = Args.getLastArg(options::OPT_G)) {
227241
if (ToolChain.getTriple().isMIPS()) {
228242
StringRef v = A->getValue();

clang/lib/Index/IndexDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ class IndexingDeclVisitor : public ConstDeclVisitor<IndexingDeclVisitor, bool> {
666666
Template = D->getSpecializedTemplateOrPartial();
667667
const Decl *SpecializationOf =
668668
isa<ClassTemplateDecl *>(Template)
669-
? (Decl *)Template.get<ClassTemplateDecl *>()
669+
? (Decl *)cast<ClassTemplateDecl *>(Template)
670670
: cast<ClassTemplatePartialSpecializationDecl *>(Template);
671671
if (!D->isThisDeclarationADefinition())
672672
IndexCtx.indexNestedNameSpecifierLoc(D->getQualifierLoc(), D);

clang/test/Driver/freebsd.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,21 @@
7777
// RUN: | FileCheck --check-prefix=CHECK-RV64I-LD %s
7878
// CHECK-RV64I-LD: ld{{.*}}" {{.*}} "-m" "elf64lriscv"
7979
//
80+
// Check that LoongArch passes the correct linker emulation.
81+
//
82+
// RUN: %clang --target=loongarch32-freebsd -### %s %s 2>&1 \
83+
// RUN: | FileCheck --check-prefix=CHECK-LA32-LD %s
84+
// CHECK-LA32-LD: ld{{.*}}" {{.*}} "-m" "elf32loongarch"
85+
// RUN: %clang --target=loongarch64-freebsd -### %s %s 2>&1 \
86+
// RUN: | FileCheck --check-prefix=CHECK-LA64-LD %s
87+
// CHECK-LA64-LD: ld{{.*}}" {{.*}} "-m" "elf64loongarch"
88+
//
89+
// Check options passed to the linker on LoongArch
90+
//
91+
// RUN: %clang --target=loongarch64-freebsd -mno-relax -### %s %s 2>&1 \
92+
// RUN: | FileCheck --check-prefix=CHECK-LA64-LD-OPTS %s
93+
// CHECK-LA64-LD-OPTS: ld{{.*}}" {{.*}} "-X" "--no-relax"
94+
//
8095
// Check that the new linker flags are passed to FreeBSD
8196
// RUN: %clang --target=x86_64-pc-freebsd10.0 -m32 %s \
8297
// RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \

clang/utils/perf-training/bolt.lit.cfg

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ from lit import Test
44
import lit.formats
55
import lit.util
66
import os
7+
import re
78
import subprocess
89

910
clang_bolt_mode = config.clang_bolt_mode.lower()
@@ -20,9 +21,13 @@ elif clang_bolt_mode == "perf":
2021
else:
2122
assert 0, "Unsupported CLANG_BOLT_MODE variable"
2223

23-
config.clang = perf_wrapper + os.path.realpath(
24+
clang_nowrapper = os.path.realpath(
2425
lit.util.which(clang_binary, config.clang_tools_dir)
2526
).replace("\\", "/")
27+
config.clang = perf_wrapper + clang_nowrapper
28+
config.cmake_compiler_args = "-DCMAKE_C_COMPILER='{0}' -DCMAKE_CXX_COMPILER='{0};--driver-mode=g++'".format(
29+
re.sub(r"\s+", ";", clang_nowrapper)
30+
)
2631

2732
config.name = "Clang Perf Training"
2833
config.suffixes = [
@@ -49,6 +54,8 @@ config.substitutions.append(("%clang_cpp", f" {config.clang} --driver-mode=g++ "
4954
config.substitutions.append(("%clang_skip_driver", config.clang))
5055
config.substitutions.append(("%clang", config.clang))
5156
config.substitutions.append(("%test_root", config.test_exec_root))
57+
config.substitutions.append(("%cmake_compiler_args", config.cmake_compiler_args))
5258
config.substitutions.append(('%cmake_generator', config.cmake_generator))
5359
config.substitutions.append(('%cmake', config.cmake_exe))
5460
config.substitutions.append(('%llvm_src_dir', config.llvm_src_dir))
61+
config.substitutions.append(('%perf_wrapper', perf_wrapper))

clang/utils/perf-training/lit.cfg

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,19 @@ cc1_wrapper = '%s %s/perf-helper.py cc1' % (config.python_exe, config.perf_helpe
3131

3232
use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
3333
config.test_format = lit.formats.ShTest(use_lit_shell == "0")
34+
config.cmake_compiler_args = '-DCMAKE_C_COMPILER="{0}" -DCMAKE_CXX_COMPILER="{0};--driver-mode=g++"'.format(
35+
config.clang.replace(' ', ';')
36+
)
3437
config.substitutions.append( ('%clang_cpp_skip_driver', ' %s %s %s ' % (cc1_wrapper, config.clang, sysroot_flags)))
3538
config.substitutions.append( ('%clang_cpp', ' %s --driver-mode=g++ %s ' % (config.clang, sysroot_flags)))
3639
config.substitutions.append( ('%clang_skip_driver', ' %s %s %s ' % (cc1_wrapper, config.clang, sysroot_flags)))
3740
config.substitutions.append( ('%clang', '%s %s ' % (config.clang, sysroot_flags) ) )
3841
config.substitutions.append( ('%test_root', config.test_exec_root ) )
42+
config.substitutions.append( ('%cmake_compiler_args', config.cmake_compiler_args))
3943
config.substitutions.append( ('%cmake_generator', config.cmake_generator ) )
4044
config.substitutions.append( ('%cmake', config.cmake_exe ) )
4145
config.substitutions.append( ('%llvm_src_dir', config.llvm_src_dir ) )
46+
config.substitutions.append( ('%perf_wrapper', '' ) )
4247

4348
config.environment['LLVM_PROFILE_FILE'] = 'perf-training-%4m.profraw'
4449

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
RUN: %cmake -G %cmake_generator -B %t -S %llvm_src_dir -DCMAKE_C_COMPILER=%clang -DCMAKE_CXX_COMPILER=%clang -DCMAKE_CXX_FLAGS="--driver-mode=g++" -DCMAKE_BUILD_TYPE=Release
2-
RUN: %cmake --build %t -v --target LLVMSupport
1+
RUN: %cmake -G %cmake_generator -B %t -S %llvm_src_dir %cmake_compiler_args -DCMAKE_BUILD_TYPE=Release
2+
RUN: %perf_wrapper %cmake --build %t -v --target LLVMSupport

0 commit comments

Comments
 (0)