Hi all,

 

Address spaces are not handled in custom semantic checks of atomic Builtins.

 

If there are two pointers passed to the Builtin, it doesn't allow the second

(non-atomic) one to be qualified with an address space. 

 

This patch removed this restriction by recording the address space of the

passed pointers while checking its type correctness.

 

Currently, the following code:

 

_Atomic int __attribute__((address_space(1))) *A;

int __attribute__((address_space(2))) *B;

...

... = __c11_atomic_compare_exchange_strong(A, B, 1, memory_order_seq_cst,
memory_order_seq_cst);

 

fails to compile with an error: 

 

"passing '__attribute__((address_space(2))) int *' to parameter of type 'int
*' changes address space of pointer".

 

Please, review the attached fix for it!

 

Cheers,

Anastasia

Attachment: atom-builtin-addrspace.patch
Description: Binary data

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

Reply via email to