diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f22587446adbf9b5f1f25f6cbca1f4c9d42c5792..c7b8ad017f994cef1e2c6b9509bf4cf9b5c0acd0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-08  Janis Johnson  <janis187@us.ibm.com>
+
+	PR target/35839
+	* config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
+	kinds of indirect references.
+
 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
 
 	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 3793976363bb8d4947e6aa729ceb79459c2ab56b..be069ccb7a54d2971f2aeea5b227ca18ec078531 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -11226,9 +11226,6 @@ 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:
@@ -11237,6 +11234,8 @@ rs6000_check_sdmode (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
     case RESULT_DECL:
     case REAL_CST:
     case INDIRECT_REF:
+    case ALIGN_INDIRECT_REF:
+    case MISALIGNED_INDIRECT_REF:
     case VIEW_CONVERT_EXPR:
       if (TYPE_MODE (TREE_TYPE (*tp)) == SDmode)
 	return *tp;