OSDN Git Service

PR tree-optimization/46805
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Dec 2010 19:28:44 +0000 (19:28 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Dec 2010 19:28:44 +0000 (19:28 +0000)
PR tree-optimization/46833
* go-lang.c (go_langhook_type_for_mode): Handle vector modes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167563 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/ChangeLog
gcc/go/go-lang.c

index d70dc40..380c709 100644 (file)
@@ -1,3 +1,9 @@
+2010-12-07  Ian Lance Taylor  <iant@google.com>
+
+       PR tree-optimization/46805
+       PR tree-optimization/46833
+       * go-lang.c (go_langhook_type_for_mode): Handle vector modes.
+
 2010-12-06  Ian Lance Taylor  <iant@google.com>
 
        PR other/46789
index 0f3c183..323f8c5 100644 (file)
@@ -285,6 +285,20 @@ go_langhook_type_for_size (unsigned int bits, int unsignedp)
 static tree
 go_langhook_type_for_mode (enum machine_mode mode, int unsignedp)
 {
+  /* Go has no vector types.  Build them here.  FIXME: It does not
+     make sense for the middle-end to ask the frontend for a type
+     which the frontend does not support.  However, at least for now
+     it is required.  See PR 46805.  */
+  if (VECTOR_MODE_P (mode))
+    {
+      tree inner;
+
+      inner = go_langhook_type_for_mode (GET_MODE_INNER (mode), unsignedp);
+      if (inner != NULL_TREE)
+       return build_vector_type_for_mode (inner, mode);
+      return NULL_TREE;
+    }
+
   return go_type_for_mode (mode, unsignedp);
 }