summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
diff options
context:
space:
mode:
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2008-04-04 20:18:52 +0000
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2008-04-04 20:18:52 +0000
commitd35d5b753bb8d9627d366fd3f606098e3323f30c (patch)
tree2fdf9df601368718b42394661fcdffa06141d751 /gcc/config/rs6000
parent5018e7cdb40cbae91919d3165fe387040bf1c90a (diff)
downloadgcc-d35d5b753bb8d9627d366fd3f606098e3323f30c.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133909 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000')
-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 01052398766..9734c4ee2fd 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;