diff options
author | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-04-04 20:18:52 +0000 |
---|---|---|
committer | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-04-04 20:18:52 +0000 |
commit | d35d5b753bb8d9627d366fd3f606098e3323f30c (patch) | |
tree | 2fdf9df601368718b42394661fcdffa06141d751 /gcc/config/rs6000 | |
parent | 5018e7cdb40cbae91919d3165fe387040bf1c90a (diff) | |
download | gcc-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.c | 5 |
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; |