summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-04-08 03:03:23 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-04-08 03:03:23 +0000
commitab7b2f5623343fa4a2928b91cccbdb244fe77764 (patch)
treeb89e52df3fb38b8af5066d2768b80863c0f1c4fd /clang/lib/Driver/Tools.cpp
parenta60cbcdfe6725a58078a46fd4bd88321ab75a754 (diff)
downloadbcm5719-llvm-ab7b2f5623343fa4a2928b91cccbdb244fe77764.tar.gz
bcm5719-llvm-ab7b2f5623343fa4a2928b91cccbdb244fe77764.zip
Set __PIC__ (more) correctly.
- Add -pic-level clang-cc option to specify the value for the define, updated driver to pass this. - Added __pic__ - Added OBJC_ZEROCOST_EXCEPTIONS define while I was here (to match gcc). llvm-svn: 68584
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index f44be0a7be7..eb9bbf2b7b4 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -124,6 +124,17 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("--relocation-model");
CmdArgs.push_back(Model);
+ // Infer the __PIC__ value.
+ //
+ // FIXME: This isn't quite right on Darwin, which always sets
+ // __PIC__=2.
+ if (strcmp(Model, "pic") == 0 || strcmp(Model, "dynamic-no-pic") == 0) {
+ if (Args.hasArg(options::OPT_fPIC))
+ CmdArgs.push_back("-pic-level=2");
+ else
+ CmdArgs.push_back("-pic-level=1");
+ }
+
if (Args.hasArg(options::OPT_ftime_report))
CmdArgs.push_back("--time-passes");
// FIXME: Set --enable-unsafe-fp-math.
OpenPOWER on IntegriCloud