Georg-Johann Lay <[email protected]> writes:

> Am 15.05.26 um 14:17 schrieb Thomas Schwinge:
>> [Note that emails to <[email protected]> bounce; please use Paul's
>> other email address: <[email protected]>.]
>> Hi!
>> I'd like to resume this patch submission here, which is adding support
>> for named address spaces to GNU C++, as is implemented for GNU C.  As far
>> as I can tell, there wasn't any specific technical reason that this patch
>> review stalled, back then, in 2022-11?  (Jason?)
>> I've now rebased this onto recent GCC trunk, see attached
>> '0001-c-parser-Support-for-target-address-spaces-in-C.patch'.  There were
>> just a few merge conflicts that I had to fix up (nothing serious), and
>> I've bootstrap-tested on x86_64-pc-linux-gnu (only, so far).
>
> Hi, I found one more problem on avr:
>
> #define AS1 const __flash
> #define AS8 const __memx
>
> typedef int (* AS1 fun_t)();
>
> int foo (AS8 fun_t *f)
> {
>     return (*f) ();
> }
>
> Compiling for C, I am getting a parm_decl like this:
>
>     <parm_decl 0x7fb7668d3000 f>
>        <pointer_type 0x7fb7668a77e0>
>           <pointer_type 0x7fb7668a7690 fun_t address-space-8> read-only
>              <function_type 0x7fb766782690>
>                 <integer_type 0x7fb76676f5e8 int> return
>                 <void_type 0x7fb7667771f8 void>
>
> and an error message:
>
> x.c:6:21: error: conflicting named address spaces (__memx vs __flash)
>     6 | int foo (AS8 fun_t *f)
>
> With C++ there is AS9 even though the source says AS8:
>
>     <parm_decl 0x7ff87a763088 f>
>        <pointer_type 0x7ff87a74cbd0>
>           <pointer_type 0x7ff87a74ce70 fun_t address-space-9> read-only
>              <function_type 0x7ff87a619930>
>                 <integer_type 0x7ff87a6055e8 int> return
>                 <void_type 0x7ff87a60e1f8 void>
>
> and then ICEs as there is no name for AS9:
>
> x.c:6:5: internal compiler error: in c_addr_space_name, at
> c-family/c-common.cc:659
>     6 | int foo (AS8 fun_t *f)
>       |     ^~~
>
> Johann

Thanks, noted.  I can reproduce the lack of diagnostic on GCN in my
version of the patch (still not quite done..); will fix before sending.

The AS9 is obviously a result of doing 'quals | ENCODE_QUAL_ADDR_SPACE
(...)' somewhere.

I wish we didn't store qualifiers as just a packed integer value, so
that errors like this could be caught by the type system.
-- 
Arsen Arsenović

Attachment: signature.asc
Description: PGP signature

Reply via email to