summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2012-05-02 07:56:14 +0000
committerJames Molloy <james.molloy@arm.com>2012-05-02 07:56:14 +0000
commitcebf75e8cabc3772b0b9ddefe949faf6a4e5d602 (patch)
tree636401094c7387d3c79149ab8dac8a4ea95d5782
parentb6625979a26c62d54d36fbfb82685e2c48b1c871 (diff)
downloadbcm5719-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.cpp8
-rw-r--r--clang/test/Driver/fpack-struct.c10
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"
OpenPOWER on IntegriCloud