[PATCH] D53417: [Clang][Sema][PowerPC] Choose a better candidate in overload function call if there is a compatible vector conversion instead of ambiguous call error
Hubert Tong via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 13 07:49:30 PST 2018
hubert.reinterpretcast added inline comments.
================
Comment at: clang/test/CodeGen/altivec-generic-overload.c:74
+ convert1(gv1);
+ // CHECK: call void @_Z8convert1Dv16_a(<16 x i8> %{{[0-9]+}})
+ convert1(gv2);
----------------
wuzish wrote:
> hubert.reinterpretcast wrote:
> > Checking that the call is to the expected target in terms of overload resolution can be achieved by having a distinct return types for each member of the overload set.
> What's meaning of `having a distinct return types for each member of the overload set`?
>
> Could you please give a example to show your expect?
This can be done with `-fsyntax-only`:
```
typedef signed char __v16sc __attribute__((__vector_size__(16)));
typedef unsigned char __v16uc __attribute__((__vector_size__(16)));
__v16sc *__attribute__((__overloadable__)) convert1(vector signed char);
__v16uc *__attribute__((__overloadable__)) convert1(vector unsigned char);
void test()
{
__v16sc gv1;
__v16uc gv2;
_Generic(convert1(gv1), __v16sc *: (void)0);
_Generic(convert1(gv2), __v16uc *: (void)0);
}
```
================
Comment at: clang/test/SemaCXX/vector.cpp:26
float &fr1 = f1(ll16);
- f1(c16e); // expected-error{{call to 'f1' is ambiguous}}
- f1(ll16e); // expected-error{{call to 'f1' is ambiguous}}
+ f1(c16e);
+ f1(ll16e);
----------------
Check the return types here like with the two lines above.
https://reviews.llvm.org/D53417
More information about the cfe-commits
mailing list