public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode
@ 2023-01-25 12:01 stsp at users dot sourceforge.net
  2023-01-25 12:31 ` [Bug c++/108538] " schwab@linux-m68k.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: stsp at users dot sourceforge.net @ 2023-01-25 12:01 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 108538
           Summary: unexpected -Wnarrowing errors in -fpermissive mode
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stsp at users dot sourceforge.net
  Target Milestone: ---

int main()
{
    unsigned char a[1] = { -1 };
    return a[0];
}

$ g++ -fpermissive nar.cpp 
nar.cpp: In function ‘int main()’:
nar.cpp:3:28: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned char’
[-Wnarrowing]
    3 |     unsigned char a[1] = { -1 };


While I know that some -Wnarrowing
warnings were promoted to an errors,
was it the right decision also in
-fpermissive mode, which accepts most
of the C code?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/108538] unexpected -Wnarrowing errors in -fpermissive mode
  2023-01-25 12:01 [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode stsp at users dot sourceforge.net
@ 2023-01-25 12:31 ` schwab@linux-m68k.org
  2023-01-25 12:35 ` stsp at users dot sourceforge.net
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: schwab@linux-m68k.org @ 2023-01-25 12:31 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Andreas Schwab <schwab@linux-m68k.org> ---
It depends on the selected C++ standard.  C++11 does not allow narrowing
conversions unconditionally.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/108538] unexpected -Wnarrowing errors in -fpermissive mode
  2023-01-25 12:01 [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode stsp at users dot sourceforge.net
  2023-01-25 12:31 ` [Bug c++/108538] " schwab@linux-m68k.org
@ 2023-01-25 12:35 ` stsp at users dot sourceforge.net
  2023-01-25 14:30 ` redi at gcc dot gnu.org
  2023-01-25 17:21 ` stsp at users dot sourceforge.net
  3 siblings, 0 replies; 5+ messages in thread
From: stsp at users dot sourceforge.net @ 2023-01-25 12:35 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Stas Sergeev <stsp at users dot sourceforge.net> ---
(In reply to Andreas Schwab from comment #1)
> It depends on the selected C++ standard.  C++11 does not allow narrowing
> conversions unconditionally.

Yes, I am not disputing that.
But I used -fpermissive mode to
compile the mix of c/c++.
-fpermissive downgrades many C++
errors to a warning, eating most
of the regular C. So my question
here is explicitly about -fpermissive
mode, I think it should downgrade
-Wnarrowing back into the warning.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/108538] unexpected -Wnarrowing errors in -fpermissive mode
  2023-01-25 12:01 [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode stsp at users dot sourceforge.net
  2023-01-25 12:31 ` [Bug c++/108538] " schwab@linux-m68k.org
  2023-01-25 12:35 ` stsp at users dot sourceforge.net
@ 2023-01-25 14:30 ` redi at gcc dot gnu.org
  2023-01-25 17:21 ` stsp at users dot sourceforge.net
  3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2023-01-25 14:30 UTC (permalink / raw)
  To: gcc-bugs

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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-01-25
             Status|UNCONFIRMED                 |NEW
           Severity|normal                      |enhancement
                 CC|                            |jason at gcc dot gnu.org
     Ever confirmed|0                           |1
           Keywords|                            |diagnostic

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Stas Sergeev from comment #2)
> But I used -fpermissive mode to
> compile the mix of c/c++.

It seems like you might be expecting more from -fpermissive than it actually
provides. It only affects a very limited set of diagnostics, and isn't a
general "compile invalid code" switch.

It might be reasonable to make it affect narrowing diagnostics though. The
downside would be complicating the code by adding even more interactions
between different switches and dialects.

Confirming as an enhancement request to relax some narrowing errors with
-fpermissive, but C++ front end maintainers should decide whether that's
actually desirable.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/108538] unexpected -Wnarrowing errors in -fpermissive mode
  2023-01-25 12:01 [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode stsp at users dot sourceforge.net
                   ` (2 preceding siblings ...)
  2023-01-25 14:30 ` redi at gcc dot gnu.org
@ 2023-01-25 17:21 ` stsp at users dot sourceforge.net
  3 siblings, 0 replies; 5+ messages in thread
From: stsp at users dot sourceforge.net @ 2023-01-25 17:21 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Stas Sergeev <stsp at users dot sourceforge.net> ---
(In reply to Jonathan Wakely from comment #3)
> It seems like you might be expecting more from -fpermissive than it actually
> provides. It only affects a very limited set of diagnostics, and isn't a
> general "compile invalid code" switch.

I always used it to compile the
(valid) C code in C++ mode. I thought
that's what it is for. It violates the
C++ standard up and down. And that
-Wnarrowing case is "better" than others
because it was a warning in c++03.
Other problems that -fpermissive allows,
were always an errors in any c++ mode.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-01-25 17:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-25 12:01 [Bug c++/108538] New: unexpected -Wnarrowing errors in -fpermissive mode stsp at users dot sourceforge.net
2023-01-25 12:31 ` [Bug c++/108538] " schwab@linux-m68k.org
2023-01-25 12:35 ` stsp at users dot sourceforge.net
2023-01-25 14:30 ` redi at gcc dot gnu.org
2023-01-25 17:21 ` stsp at users dot sourceforge.net

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).