jansvoboda11 added inline comments.

================
Comment at: clang/include/clang/Driver/Options.td:593-594
 
+def round_trip_args : Flag<["-"], "round-trip-args">, Flags<[CC1Option, 
NoDriverOption]>,
+  HelpText<"Performs 'parse-generate-parse' round-trip of command line 
arguments.">;
+def round_trip_args_debug : Flag<["-"], "round-trip-args-debug">, 
Flags<[CC1Option, NoDriverOption]>,
----------------
dexonsmith wrote:
> Can we make this `=true` vs. `=false`, or add a `-no-round-trip-args`? That 
> will allow:
> ```
> % clang some args -Xclang -no-round-trip-args
> ```
> to disable it in asserts builds; much better than:
> ```
> % clang some args -###
> # Search for -round-trip-args
> % clang -cc1 copy-paste-args-before copy-past-args-after
> ```
Done.


================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:531
+  Option Opt = getDriverOptTable().getOption(OptSpecifier);
+  denormalizeSimpleFlag(Args, SA(Opt.getPrefix() + Opt.getName()), SA,
+                        Option::OptionClass::FlagClass, 0);
----------------
dexonsmith wrote:
> Hmm, I thought we'd found a way to avoid allocating the prefixed name, by 
> adding it to the options table. This unfortunate, but I guess you can fix it 
> another time.
> 
> 
We can avoid the allocation in the generating macro. I'll come back to this 
later and figure out a way to do the same here.


================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:540
+  Option Opt = getDriverOptTable().getOption(OptSpecifier);
+  denormalizeString(Args, SA(Opt.getPrefix() + Opt.getName()), SA,
+                    Opt.getKind(), 0, Value);
----------------
dexonsmith wrote:
> Does this allocated string get used, or does `"=some-value"` get added on?
Both. It depends on the kind/class (Joined/Separate/...) of the option.


================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:3211-3214
+  auto ResetHS = [](CompilerInvocation &Res) {
+    auto EmptyHeaderSearchOpts = std::make_shared<HeaderSearchOptions>();
+    Res.HeaderSearchOpts.swap(EmptyHeaderSearchOpts);
+  };
----------------
dexonsmith wrote:
> I'm not sure this works correctly. Callers may depend on the identity of the 
> `HeaderSearchOptions`. It's a shared pointer that could have other 
> references. This will only update / reset one reference.
Resolved by `SwapOpts`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D94472/new/

https://reviews.llvm.org/D94472

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

Reply via email to