diff options
author | James Molloy <james.molloy@arm.com> | 2012-05-02 07:56:14 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2012-05-02 07:56:14 +0000 |
commit | cebf75e8cabc3772b0b9ddefe949faf6a4e5d602 (patch) | |
tree | 636401094c7387d3c79149ab8dac8a4ea95d5782 | |
parent | b6625979a26c62d54d36fbfb82685e2c48b1c871 (diff) | |
download | bcm5719-llvm-cebf75e8cabc3772b0b9ddefe949faf6a4e5d602.tar.gz bcm5719-llvm-cebf75e8cabc3772b0b9ddefe949faf6a4e5d602.zip |
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
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 8 | ||||
-rw-r--r-- | clang/test/Driver/fpack-struct.c | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 13d98201597..2cf0c6747cf 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -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) || diff --git a/clang/test/Driver/fpack-struct.c b/clang/test/Driver/fpack-struct.c new file mode 100644 index 00000000000..cc75da5bc0f --- /dev/null +++ b/clang/test/Driver/fpack-struct.c @@ -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" |