forked from OSchip/llvm-project
Fix forwarding of -fpack-struct from driver to CC1, and add a test.
-fpack-struct's handling has changed in CC1 (one of only two flags that needed changing) because the driver treats "-fpack-struct" as a boolean flag, and CC1 (did) treat it as an option with a separated value. This change causes -fpack-struct=X to be forwarded correctly to -fpack-struct=X instead of erroneously to "-fpack-struct X" llvm-svn: 155981
This commit is contained in:
parent
b6625979a2
commit
cebf75e8ca
|
@ -2500,12 +2500,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
// Honor -fpack-struct= and -fpack-struct, if given. Note that
|
||||
// -fno-pack-struct doesn't apply to -fpack-struct=.
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) {
|
||||
CmdArgs.push_back("-fpack-struct");
|
||||
CmdArgs.push_back(A->getValue(Args));
|
||||
std::string PackStructStr = "-fpack-struct=";
|
||||
PackStructStr += A->getValue(Args);
|
||||
CmdArgs.push_back(Args.MakeArgString(PackStructStr));
|
||||
} else if (Args.hasFlag(options::OPT_fpack_struct,
|
||||
options::OPT_fno_pack_struct, false)) {
|
||||
CmdArgs.push_back("-fpack-struct");
|
||||
CmdArgs.push_back("1");
|
||||
CmdArgs.push_back("-fpack-struct=1");
|
||||
}
|
||||
|
||||
if (Args.hasArg(options::OPT_mkernel) ||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
// RUN: %clang -fpack-struct -### %s 2> %t
|
||||
// RUN: FileCheck < %t %s
|
||||
// RUN: %clang -fpack-struct=8 -### %s 2> %t
|
||||
// RUN: FileCheck < %t %s --check-prefix=EQ
|
||||
|
||||
// CHECK: "-cc1"
|
||||
// CHECK: "-fpack-struct=1"
|
||||
|
||||
// CHECK-EQ: "-cc1"
|
||||
// CHECK-EQ: "-fpack-struct=8"
|
Loading…
Reference in New Issue