[PATCH] D50278: [Sema] Fix for crash on conditional operation with address_space pointer
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 6 13:38:13 PDT 2018
rjmccall added inline comments.
================
Comment at: test/Sema/conditional-expr.c:78
+ // expected-error at -1{{converting '__attribute__((address_space(2))) int *' to type 'void *' changes address space of pointer}}
+ // expected-error at -2{{converting '__attribute__((address_space(3))) int *' to type 'void *' changes address space of pointer}}
----------------
leonardchan wrote:
> rjmccall wrote:
> > Also, these diagnostics seem wrong. Where is `void *` coming from?
> When dumping the AST this is what the resulting type is for the conditional expression already is if the operands are 2 pointers with different address spaces.
>
> According to this comment, the reason seems to be because this is what GCC does:
>
> ```
> 6512 // In this situation, we assume void* type. No especially good
> 6513 // reason, but this is what gcc does, and we do have to pick
> 6514 // to get a consistent AST.
> ```
That makes sense in general, but in this case it's not a great diagnostic; we should just emit an error when trying to pick a common type.
Repository:
rC Clang
https://reviews.llvm.org/D50278
More information about the cfe-commits
mailing list