dexonsmith added a comment.

In D82756#2350233 <https://reviews.llvm.org/D82756#2350233>, @jansvoboda11 
wrote:

> Correct me if I'm wrong, but when generating the command line, all "implied" 
> flags would be hidden, even if they were explicit in the original comand line:
>
> - original command line:  `clang -cc1 -cl-unsafe-math-optimizations 
> -cl-mad-enable -menable-unsafe-fp-math -mreassociate -fno-signed-zeros 
> -freciprocal-math -fapprox-func [...]`
> - generated command line: `clang -cc1 -cl-unsafe-math-optimizations [...]`
>
> This might be a bit surprising, but I don't think this would cause issues for 
> explicit modules. What are your thoughts?

I think this is fine. It's similar to a case where the caller might explicitly 
specify the default value, and it'll get canonicalized out.

> Formalizing the "implies" relationships would make it possible to remove the 
> ordering-sensitivity and possibly generate implied flags even when explicitly 
> passed to `cc1`. It would complicate the TableGen backend, which I'd prefer 
> to keep as simple as possible.

I was't thinking of dropping the ordering-sensitivity. Instead, you could just 
error if the referenced option hadn't declared already. One idea would be to 
change the tablegen to something like:

  MarshallingInfoFlag<
      "CodeGenOpts.LessPreciseFPMAD",
      DefaultAnyOf<[cl_unsafe_math_optimizations, cl_fast_relaxed_math]>>;

in the definition of `cl_mad_enable`, then:

- error if they aren't defined first; and
- construct a default value out of the key-paths.

I think this would less error-prone for maintenance, since it designs away some 
really subtle bugs.


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

https://reviews.llvm.org/D82756

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

Reply via email to