On Wed, 15 Jan 2025 at 20:36, Georg-Johann Lay <a...@gjlay.de> wrote:
>
>
>
> Am 15.01.25 um 20:41 schrieb Jonathan Wakely:
> > On Wed, 15 Jan 2025 at 17:17, Georg-Johann Lay via Gcc <gcc@gcc.gnu.org> 
> > wrote:
> >>
> >> What's the recommended way to built-in define types like __uint24 ?
> >>
> >> Since v4.8, the avr backend has:
> >>
> >> avr-modes.def:
> >>     FRACTIONAL_INT_MODE (PSI, 24, 3);
> >>
> >> avr.cc:
> >>     tree int24_type  = make_signed_type (GET_MODE_BITSIZE (PSImode));
> >>     tree uint24_type = make_unsigned_type (GET_MODE_BITSIZE (PSImode));
> >>     lang_hooks.types.register_builtin_type (int24_type, "__int24");
> >>     lang_hooks.types.register_builtin_type (uint24_type, "__uint24");
> >>
> >> Which
> >>
> >> 1) Doesn't support [un]signed __int24.
> >>
> >> 2) May run into ICEs like:
> >>     FAIL: gcc.target/avr/torture/int24-mul.c   -O3 -g
> >>     (internal compiler error: in add_dwarf_attr, at dwarf2out.cc:4483)
> >>     FAIL: gcc.target/avr/torture/pr109907-2.c   -O3 -g
> >>     (internal compiler error: in decompose, at rtl.h:2312)
> >>
> >> 3) __GLIBCXX_TYPE_INT_N_0 isn't defined (or has to be done by hand).
> >>     Though libc++ relies on 1).
> >>
> >>
> >> Using
> >>
> >> avr-modes.def:
> >>     FRACTIONAL_INT_MODE (PSI, 24, 3);
> >>     INT_N (PSI, 24);
> >>
> >> solved at least 1) and 3), however it adds new FAILs due to:
> >>
> >> 4) error: ISO C does not support '__int24' types [-Wpedantic]
> >
> > This pedwarn is correct, so I'm not sure why it's a problem. If you
> > don't want warnings about non-standard extensions, don't use
> > -pedantic-errors.
>
> The point is that I don't pedwarn explicitly, that's how the
> testsuite works.

That seems to be a property of avr tests:

gcc/testsuite/gcc.target/avr/avr.exp:    set DEFAULT_CFLAGS " -ansi
-pedantic-errors"
gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp:    set DEFAULT_CFLAGS
" -ansi -pedantic-errors"
gcc/testsuite/gcc.target/avr/torture/avr-torture.exp:    set
DEFAULT_CFLAGS " -ansi -pedantic-errors"

The tests that use __int24 should override those defaults (maybe using
-pedantic and adding dg-warning where appropriate, or just not using
-pedantic).


  What I am seeing is that with INT_N, many
> tests in, say, avr.exp are failing which didn't fail with the
> old definition of __int24.  Similar will happen in user land,
> which I'd like to avoid.

It will only happen if users use __int24 and compile with -pedantic-errors

>
> Johann
>
>
> >> Is there a backwards compatible way to provide [un]signed __inz24
> >> that also works with older revisions of C without raising 4) ?
> >
> > This has nothing to do with "older revisions of C", does it?

Reply via email to