[MacPorts] #69374: gcc13 optimizer bug in ncurses
MacPorts
noreply at macports.org
Mon Feb 19 15:35:09 UTC 2024
#69374: gcc13 optimizer bug in ncurses
--------------------------+--------------------
Reporter: ThomasDickey | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Keywords: | Port:
--------------------------+--------------------
I noticed a problem in ncurses not displaying multibyte characters (used
in line-drawing), and narrowed it down to a problem optimizing an
expression in `tty_update.c`, using this
chunk(https://github.com/ThomasDickey/ncurses-
snapshots/blob/a98f459acb17efd5c1754d12efdfeba8cdb70e68/ncurses/curses.priv.h#L1458):
````
} else {
\
int PUTC_j;
\
for (PUTC_j = 0; PUTC_j < PUTC_n;
++PUTC_j) { \
TR_PUTC(PUTC_buf[PUTC_j]);
\
NCURSES_OUTC_FUNC (NCURSES_SP_ARGx
PUTC_buf[PUTC_j]); \
}
\
}
\
````
used here(https://github.com/ThomasDickey/ncurses-
snapshots/blob/a98f459acb17efd5c1754d12efdfeba8cdb70e68/ncurses/tty/tty_update.c#L357):
````
PUTC(CHDEREF(ch));
````
There's no issue reported in valgrind, address sanitizer, etc., in other
environments, which would indicate a problem in ncurses, but with
optimization that goes through the loop the expected number of times but
fails to call the output `NCURSES_OUTC_FUNC` more than once.
If it helps, I can attach the generated assembly for gcc12 (working) and
gcc13 (nonworking).
--
Ticket URL: <https://trac.macports.org/ticket/69374>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list