jansvoboda11 added a comment.

In D97462#2677130 <https://reviews.llvm.org/D97462#2677130>, @arichardson wrote:

> I just merged this commit into our CHERI fork and noticed some failing tests 
> due to round tripping:
> We add some additional CodeGenOptions and LangOptions, but are not including 
> those in the generated command line.
>
> For example, I added an additional `std::string CHERIStatsFile;` to 
> `CodeGenOptions`. This is set inside `bool 
> CompilerInvocation::ParseCodeGenArgs` using `Opts.CHERIStatsFile = 
> Args.getLastArgValue(OPT_cheri_stats_file).str();`.
> I haven't added logic to round trip this flag (yet). If CC1 argument round 
> tripping is enabled, the flag is stripped and the output goes to stderr 
> instead of the defined file, causing some tests to fail.
>
> Unfortunately this is not caught by any assertions, so I worry that there are 
> other arguments that might be silently removed after this commit. Are there 
> any open reviews/plans to check CodeGenOptions/etc, for equality after 
> round-tripping?

We currently don't have the infrastructure to compare `CompilerInvocation` 
instances directly. Instead we rely on good test coverage of command line 
options: if the round-tripped `CompilerInvocation` doesn't contain the option, 
tests will fail. You can then check the generated command lines by passing 
`-Rround-trip-cc1-args` to the failing CC1 invocation.

There was an attempt to generate `operator==` for `CompilerInvocation` and 
assert when the round-tripped instance isn't equal to the original, as you 
suggest. This is the patch that started by moving members to definition 
databases, but it got reverted: D86290 <https://reviews.llvm.org/D86290>.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97462

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D97462: [clan... Jan Svoboda via Phabricator via cfe-commits

Reply via email to