diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2003-08-12 14:38:39 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2003-08-12 14:38:39 +0000 |
commit | 479d960b1bf3db73f78eb7c0aa2ed82bd1ff0c9e (patch) | |
tree | 9c76feffb3aea19bf0907e66c30428fa32c9e7bd | |
parent | e885821fff5b23afe3fd2358be556547d59f4d6c (diff) | |
download | gcc-479d960b1bf3db73f78eb7c0aa2ed82bd1ff0c9e.zip gcc-479d960b1bf3db73f78eb7c0aa2ed82bd1ff0c9e.tar.gz gcc-479d960b1bf3db73f78eb7c0aa2ed82bd1ff0c9e.tar.bz2 |
call.c (standard_conversion): Opaque pointers interconvert.
2003-08-11 Aldy Hernandez <aldyh@redhat.com>
* cp/call.c (standard_conversion): Opaque pointers interconvert.
* testsuite/g++.dg/other/opaque-3.C: New.
From-SVN: r70371
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/call.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/opaque-3.C | 11 |
3 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 00412d4..d493d65 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-08-11 Aldy Hernandez <aldyh@redhat.com> + + * call.c (standard_conversion): Opaque pointers interconvert. + + * testsuite/g++.dg/other/opaque-3.C: New. + 2003-08-11 Mark Mitchell <mark@codesourcery.com> * typeck.c (merge_types): Handle cv-qualified pointer-to-member diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 73c8c44..9ece67f 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 0000000..18ed0be --- /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); +} |