aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2008-04-04 20:18:52 +0000
committerJanis Johnson <janis@gcc.gnu.org>2008-04-04 20:18:52 +0000
commitfdf4f148f19761ea5ab37021749349403aff50bf (patch)
tree2fdf9df601368718b42394661fcdffa06141d751 /gcc/config
parent3088d40408d9c26ace497e6a01badc53cde9ffb7 (diff)
downloadgcc-fdf4f148f19761ea5ab37021749349403aff50bf.zip
gcc-fdf4f148f19761ea5ab37021749349403aff50bf.tar.gz
gcc-fdf4f148f19761ea5ab37021749349403aff50bf.tar.bz2
re PR target/35620 (ICE passing dereferenced pointer to _Decimal32)
gcc/ PR target/35620 * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref and view convert expression. testsuite/ PR target/35620 * gcc.dg/dfp/pr35620.c: New test. * gcc.dg/dfp/func-pointer.c: New test. * gcc.dg/dfp/func-deref.c: New test. From-SVN: r133909
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/rs6000.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 0105239..9734c4e 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -11226,6 +11226,9 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
return NULL_TREE;
}
+ gcc_assert (TREE_CODE (*tp) != ALIGN_INDIRECT_REF);
+ gcc_assert (TREE_CODE (*tp) != MISALIGNED_INDIRECT_REF);
+
switch (TREE_CODE (*tp))
{
case VAR_DECL:
@@ -11233,6 +11236,8 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
case FIELD_DECL:
case RESULT_DECL:
case REAL_CST:
+ case INDIRECT_REF:
+ case VIEW_CONVERT_EXPR:
if (TYPE_MODE (TREE_TYPE (*tp)) == SDmode)
return *tp;
break;