s-watanabe314 wrote: This patch is a draft. I created it because I thought it would be easier to discuss the behavior of overriding and GCC incompatibility warnings related to complex range with concrete examples of implementation and tests. In this implementation example, each warning will behave as follows:
1. Override Warning: When a complex range override occurs, display the option that triggered it and the complex range value implied by that option. Example: ``` $ clang foo.cpp -fcx-fortran-rules -fcx-limited-range -Wno-gcc-compat clang: warning: '-fcx-limited-range' sets complex range to "basic" overriding the setting of "improved" that was implied by '-fcx-fortran-rules' [-Woverriding-complex-range] ``` 1. GCC Incompatibility Warning: When the override behavior is incompatible with GCC, warn about it and show how to resolve it. Example: ``` $ clang foo.cpp -fcx-fortran-rules -fcx-limited-range -Wno-overriding-complex-range clang: warning: complex number caluculation is incompatible with GCC; specify '-fcx-fortran-rules' after '-fcx-limited-range' for compatibility [-Wgcc-compat] ```` 1. Combined Warning: If both override and incompatibility warnings are needed simultaneously, combine the warning messages into one. This combined warning is output when both `-Woverriding-complex-range` and `-Wgcc-compat` are enabled. If the user specifies `-Wno-overriding-complex-range` or `-Wno-gcc-compat`, the warning message from 1 or 2 is selectively output. Example: ``` $ clang foo.cpp -fcx-fortran-rules -fcx-limited-range clang: warning: '-fcx-limited-range' sets complex range to "basic" overriding the setting of "improved" that was implied by '-fcx-fortran-rules' and this is incompatible with GCC; specify '-fcx-fortran-rules' after '-fcx-limited-range' for compatibility [-Wgcc-compat] ``` The test `range-warning.c` only covers some cases so far, but I plan to create comprehensive tests when I submit a formal pull request. If this behavior and implementation look good, I will create a formal pull request including all the tests. https://github.com/llvm/llvm-project/pull/149028 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits