https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108621

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Close as FIXED - and thanks to Michael for the report!

On GCC 13 (mainline), only:
* For intent(out), the pointless code is no longer produced
  and, thus, also the warning is gone.

→ No backport to GCC 12 planned as this was only a bogus warning
  that ignored the "nullify()" - contrary to the generated code.


* PR middle-end/108906 – tracks the bogus warning with -O0 (gone with
  optimization). Note: this message contains "may", i.e. the message
  is correct (even if the "may" never occurs).
  The issue still occurs with any intent but 'intent(out)'


* The generated code is/was fine – except possibly for the following,
  but we cannot do anything about this with the current descriptors:

– For undefined pointers, which is valid* if no 'intent' is known
  at the caller side (and the pointer is not read in the called proc):
  Unless the pointer happens to point to NULL, the code will access unit
  memory and might even overflowing integer arithmetic.
→ Should be usually still fine as long nothing is trapping or overflows
  are checked for with -fsanitize=undefined. (And cannot be avoided.)

[(*) it is also valid with 'intent(out)' but since the just committed patch,
GCC 13 no longer generates affected code.]

Reply via email to