Skip to content

Commit 83d24bd

Browse files
committed
Address review comment
1 parent 266f047 commit 83d24bd

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8269,23 +8269,22 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
82698269
if (const Arg *A = Args.getLastArg(options::OPT__SLASH_vlen,
82708270
options::OPT__SLASH_vlen_EQ_256,
82718271
options::OPT__SLASH_vlen_EQ_512)) {
8272-
llvm::SmallSet<std::string, 4> Arch512 = {"AVX512F", "AVX512"};
8273-
llvm::SmallSet<std::string, 4> Arch256 = {"AVX", "AVX2"};
8274-
8275-
StringRef Arch = Args.getLastArgValue(options::OPT__SLASH_arch);
8272+
llvm::Triple::ArchType AT = getToolChain().getArch();
8273+
StringRef Default = AT == llvm::Triple::x86 ? "IA32" : "SSE2";
8274+
StringRef Arch = Args.getLastArgValue(options::OPT__SLASH_arch, Default);
82768275

82778276
if (A->getOption().matches(options::OPT__SLASH_vlen_EQ_512)) {
8278-
if (Arch512.contains(Arch.str()))
8277+
if (Arch == "AVX512F" || Arch == "AVX512")
82798278
CmdArgs.push_back("-mprefer-vector-width=512");
82808279
else
82818280
D.Diag(diag::warn_drv_argument_not_allowed_with)
82828281
<< "/vlen=512" << std::string("/arch:").append(Arch);
82838282
}
82848283

82858284
if (A->getOption().matches(options::OPT__SLASH_vlen_EQ_256)) {
8286-
if (Arch512.contains(Arch.str()))
8285+
if (Arch == "AVX512F" || Arch == "AVX512")
82878286
CmdArgs.push_back("-mprefer-vector-width=256");
8288-
else if (!Arch256.contains(Arch.str()))
8287+
else if (Arch != "AVX" && Arch != "AVX2")
82898288
D.Diag(diag::warn_drv_argument_not_allowed_with)
82908289
<< "/vlen=256" << std::string("/arch:").append(Arch);
82918290
}

clang/test/Driver/cl-x86-flags.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@
139139
// RUN: %clang_cl -m64 -arch:AVX512 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=vlen256 %s
140140
// vlen256: "-mprefer-vector-width=256"
141141

142-
// RUN: %clang_cl -m64 -arch:AVX512 -vlen=512 -vlen --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=noprefer %s
143-
// noprefer-NOT: -mprefer-vector-width
142+
// RUN: %clang_cl -m64 -arch:AVX512 -vlen=512 -vlen --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=novlen %s
143+
// novlen-NOT: -mprefer-vector-width
144144

145145
// RUN: %clang_cl -m64 -arch:AVX2 -vlen=512 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=avx2vlen512 %s
146146
// avx2vlen512: invalid argument '/vlen=512' not allowed with '/arch:AVX2'
@@ -149,8 +149,12 @@
149149
// avx2vlen256-NOT: invalid argument
150150

151151
// RUN: %clang_cl -m32 -arch:SSE2 -vlen=256 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse2vlen256 %s
152+
// RUN: %clang_cl -m64 -vlen=256 --target=x86_64-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=sse2vlen256 %s
152153
// sse2vlen256: invalid argument '/vlen=256' not allowed with '/arch:SSE2'
153154

155+
// RUN: %clang_cl -m32 -vlen=256 --target=i386-pc-windows -### -- 2>&1 %s | FileCheck -check-prefix=ia32vlen256 %s
156+
// ia32vlen256: invalid argument '/vlen=256' not allowed with '/arch:IA32'
157+
154158
void f(void) {
155159
}
156160

0 commit comments

Comments
 (0)