summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorJames Y Knight <jyknight@google.com>2015-08-21 04:14:55 +0000
committerJames Y Knight <jyknight@google.com>2015-08-21 04:14:55 +0000
commitc4015d3291e3d58741287b72026c15ce48eaf93c (patch)
treeb55bc643d8c5a9ce9ea70edf21a6a934a79c57f0 /clang/lib
parent6995de9f1d54006534430d506ba99fd8ccbf5391 (diff)
downloadbcm5719-llvm-c4015d3291e3d58741287b72026c15ce48eaf93c.tar.gz
bcm5719-llvm-c4015d3291e3d58741287b72026c15ce48eaf93c.zip
Stop treating -static as overriding -fPIC: they are distinct.
For some reason, clang had been treating a command like: clang -static -fPIC foo.c as if it should be compiled without the PIC relocation model. This was incorrect: -static should be affecting only the linking model, and -fPIC only the compilation. This new behavior also matches GCC. This is a follow-up from a review comment on r245447. Differential Revision: http://reviews.llvm.org/D12208 llvm-svn: 245667
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Tools.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 237a244fb98..ba5dad5466f 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3021,12 +3021,10 @@ ParsePICArgs(const ToolChain &ToolChain, const llvm::Triple &Triple,
if (PIC && ToolChain.getTriple().isOSDarwin())
IsPICLevelTwo |= ToolChain.isPICDefault();
- // Note that these flags are trump-cards. Regardless of the order w.r.t. the
- // PIC or PIE options above, if these show up, PIC is disabled.
+ // This kernel flags are a trump-card: they will disable PIC/PIE
+ // generation, independent of the argument order.
if (KernelOrKext && (!Triple.isiOS() || Triple.isOSVersionLT(6)))
PIC = PIE = false;
- if (Args.hasArg(options::OPT_static))
- PIC = PIE = false;
if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) {
// This is a very special mode. It trumps the other modes, almost no one
OpenPOWER on IntegriCloud