benshi001 marked an inline comment as done.
benshi001 added a comment.

In D96853#2661168 <https://reviews.llvm.org/D96853#2661168>, @Anastasia wrote:

> In D96853#2660443 <https://reviews.llvm.org/D96853#2660443>, @benshi001 wrote:
>
>> In D96853#2659266 <https://reviews.llvm.org/D96853#2659266>, @Anastasia 
>> wrote:
>>
>>> Btw is any pointer conversion between address space 1 and the default 
>>> address space allowed? I.e. is the following code valid:
>>>
>>>   __flash static const int var1[] = {111, 222, 333};
>>>   void foo(int*);
>>>   ....
>>>   foo(var1);
>>>
>>> or
>>>
>>>   __flash static const int var1[] = {111, 222, 333};
>>>   void foo(int*);
>>>   ....
>>>   foo((int*)var1);
>>>
>>> ?
>>
>> No. clang denied with `error: passing 'const 
>> __attribute__((address_space(1))) int *' to parameter of type 'const int *' 
>> changes address space of pointer` while avr-gcc accepted it.
>>
>> It seems I need more efforts to make clang-avr fully compatible with avr-gcc.
>
> Ok, it makes sense for clang to align with gcc in general but do you know 
> whether or where this conversions are described? By default if not specified 
> explicitly implicit conversions are always disallowed in  `ISO/IEC DTR 18037` 
> and explicit casts are always allowed but can yeild undefined behavior if 
> address spaces don't overlap.

I do not think clang needs to fully follow avr-gcc's way. Since avr-gcc 
generates wrong assembly that c code.

  __flash static const int var1[] = {111, 222, 333};
  void foo(int*);
  ....
  foo(var1);

`LDD` (which is used access data space) is generated in th function `foo`, 
while `LPM` is needed for accessing `var1` (in the program space).
avr-gcc silently accepts the c code with any warning and generates wrong 
assembly. And I think clang should rise an error .


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96853/new/

https://reviews.llvm.org/D96853

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to