jyknight added inline comments.

================
Comment at: lib/Driver/Tools.cpp:2928
@@ +2927,3 @@
+/// Parses the various -fpic/-fPIC/-fpie/-fPIE arguments.  Then,
+/// smooshes them together with platform defaults, to decide with
+/// whether this compile should be using PIC mode or not. Returns the
----------------
joerg wrote:
> Drop the last with?
Done.

================
Comment at: lib/Driver/Tools.cpp:2930
@@ +2929,3 @@
+/// whether this compile should be using PIC mode or not. Returns the
+/// answer in a tuple of (RelocationModel, PICLevel, IsPIE).
+static std::tuple<llvm::Reloc::Model, int, bool>
----------------
joerg wrote:
> Not a native speaker, but "returns as tuple" sounds more natural?
> 
> Why is the PICLevel signed?
It's signed because I just used 'int' as a default; doesn't seem like it makes 
a difference, but made it unsigned.

================
Comment at: lib/Driver/Tools.cpp:2998
@@ +2997,3 @@
+  // both PIC and PIE are disabled. Any PIE option implicitly enables PIC
+  // at the same level.
+  Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
----------------
joerg wrote:
> No need to rant about GCC behavior that much. Just state that older GCC 
> versions provided different (inconsistent behavior).
I don't think it's even worth saying that much -- the original comment was from 
2012, and isn't really relevant information to anyone reading this. Removed.

================
Comment at: lib/Driver/Tools.cpp:3022
@@ +3021,3 @@
+  // Introduce a Darwin-specific hack. If the default is PIC but the flags
+  // specified while enabling PIC enabled level 1 PIC, just force it back to
+  // level 2 PIC instead. This matches the behavior of Darwin GCC (based on my
----------------
joerg wrote:
> Difficult to parse. Please rewrite the second sentence.
Done.

================
Comment at: lib/Driver/Tools.cpp:3032
@@ +3031,3 @@
+    PIC = PIE = false;
+  if (Args.hasArg(options::OPT_static))
+    PIC = PIE = false;
----------------
joerg wrote:
> This check doesn't make sense to me. When using just -S, -static is 
> completely ignored. So why should it be relevant here?
Not sure what you mean? This code isn't only used with -S -- it's used for all 
clang compile and assemble actions.

================
Comment at: lib/Driver/Tools.cpp:3087
@@ -2943,1 +3086,3 @@
                          const ArgList &Args, const char *LinkingOutput) const 
{
+  std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
+  const llvm::Triple Triple(TripleStr);
----------------
joerg wrote:
> This part looks like a clean up that can be applied separately first?
Committed separately as r245154.


http://reviews.llvm.org/D11845



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to