diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-04-08 03:03:23 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-08 03:03:23 +0000 |
commit | 9fd0b1f845a61e71dd8099f596532d34c519630a (patch) | |
tree | 1600a934dda899a76b58bebccb7b1aa91cf016a2 /lib/Driver/Tools.cpp | |
parent | a17d7ccc2ed77e321855990e180f2a34ec304bfc (diff) |
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).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68584 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index f44be0a7be..eb9bbf2b7b 100644 --- a/lib/Driver/Tools.cpp +++ b/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. |