From 479d960b1bf3db73f78eb7c0aa2ed82bd1ff0c9e Mon Sep 17 00:00:00 2001 From: Aldy Hernandez Date: Tue, 12 Aug 2003 14:38:39 +0000 Subject: [PATCH] call.c (standard_conversion): Opaque pointers interconvert. 2003-08-11 Aldy Hernandez * cp/call.c (standard_conversion): Opaque pointers interconvert. * testsuite/g++.dg/other/opaque-3.C: New. From-SVN: r70371 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/call.c | 6 ++++++ gcc/testsuite/g++.dg/other/opaque-3.C | 11 +++++++++++ 3 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/g++.dg/other/opaque-3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 00412d447ddb..d493d655a5cf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-08-11 Aldy Hernandez + + * call.c (standard_conversion): Opaque pointers interconvert. + + * testsuite/g++.dg/other/opaque-3.C: New. + 2003-08-11 Mark Mitchell * typeck.c (merge_types): Handle cv-qualified pointer-to-member diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 73c8c44ea79e..9ece67ff52e6 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -647,6 +647,12 @@ standard_conversion (tree to, tree from, tree expr) if ((tcode == POINTER_TYPE || TYPE_PTR_TO_MEMBER_P (to)) && expr && null_ptr_cst_p (expr)) conv = build_conv (STD_CONV, to, conv); + else if (tcode == POINTER_TYPE && fcode == POINTER_TYPE + && TREE_CODE (TREE_TYPE (to)) == VECTOR_TYPE + && TREE_CODE (TREE_TYPE (from)) == VECTOR_TYPE + && ((*targetm.vector_opaque_p) (TREE_TYPE (to)) + || (*targetm.vector_opaque_p) (TREE_TYPE (from)))) + conv = build_conv (STD_CONV, to, conv); else if ((tcode == INTEGER_TYPE && fcode == POINTER_TYPE) || (tcode == POINTER_TYPE && fcode == INTEGER_TYPE)) { diff --git a/gcc/testsuite/g++.dg/other/opaque-3.C b/gcc/testsuite/g++.dg/other/opaque-3.C new file mode 100644 index 000000000000..18ed0bee5363 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/opaque-3.C @@ -0,0 +1,11 @@ +/* { dg-do compile { target powerpc-*-eabi* } } */ +/* { dg-options "-mcpu=8540 -mabi=spe" } */ + +__ev64_opaque__ o; +#define v __attribute__((vector_size(8))) +v unsigned int *p; + +void m() +{ + o = __builtin_spe_evldd(p, 5); +} -- 2.47.2