From: Robert Zakrzewski <[email protected]>

gcc/jit/ChangeLog:

        * jit-recording.h: Fix type comparison.

gcc/testsuite/ChangeLog:

        * jit.dg/test-types.c: Add vector type comparison in test.

Co-authored-by: Antoni Boucher <[email protected]>
---
 gcc/jit/jit-recording.h           |  3 ++-
 gcc/testsuite/jit.dg/test-types.c | 28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index 0ac9245c2df..b293b3bd6a1 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -996,7 +996,8 @@ public:
     if (other_vec_type == NULL)
       return false;
     return get_num_units () == other_vec_type->get_num_units ()
-      && get_element_type () == other_vec_type->get_element_type ();
+      && get_element_type ()->is_same_type_as (
+	other_vec_type->get_element_type ());
   }
 
   vector_type *is_vector () final override { return this; }
diff --git a/gcc/testsuite/jit.dg/test-types.c b/gcc/testsuite/jit.dg/test-types.c
index 8573711cf8e..e5c2b77112c 100644
--- a/gcc/testsuite/jit.dg/test-types.c
+++ b/gcc/testsuite/jit.dg/test-types.c
@@ -9,6 +9,8 @@
 
 #include "harness.h"
 
+typedef int v4si __attribute__ ((__vector_size__ (16)));
+
 struct zoo
 {
   void *m_void_ptr;
@@ -56,6 +58,8 @@ struct zoo
 
   size_t m_size_t;
 
+  v4si m_vector;
+
   FILE *m_FILE_ptr;
 };
 
@@ -78,6 +82,8 @@ create_code (gcc_jit_context *ctxt, void *user_data)
   */
   gcc_jit_type *void_type =
     gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_VOID);
+  gcc_jit_type *int_type =
+    gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
 
 #define CREATE_FIELD(TYPE, NAME) \
   gcc_jit_context_new_field ( \
@@ -163,6 +169,10 @@ create_code (gcc_jit_context *ctxt, void *user_data)
   gcc_jit_field *field_m_size_t =
     CREATE_FIELD (GCC_JIT_TYPE_SIZE_T, "m_size_t");
 
+  gcc_jit_type *vector_type = gcc_jit_type_get_vector (int_type, 4);
+  gcc_jit_field *field_m_vector =
+    gcc_jit_context_new_field ( ctxt, NULL, vector_type, "m_vector");
+
   gcc_jit_field *field_m_FILE_ptr =
     CREATE_FIELD (GCC_JIT_TYPE_FILE_PTR, "m_FILE_ptr");
 
@@ -214,6 +224,8 @@ create_code (gcc_jit_context *ctxt, void *user_data)
 
     field_m_size_t,
 
+    field_m_vector,
+
     field_m_FILE_ptr
   };
 
@@ -411,6 +423,22 @@ create_code (gcc_jit_context *ctxt, void *user_data)
       gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_SIZE_T),
       sizeof (struct zoo)))
 
+  gcc_jit_type *aligned_int = gcc_jit_type_get_aligned (int_type, 4);
+  gcc_jit_type *aligned_vector_type = gcc_jit_type_get_vector (aligned_int, 4);
+  gcc_jit_rvalue *value = gcc_jit_context_new_rvalue_from_int (
+      ctxt,
+      aligned_int, 40);
+  gcc_jit_rvalue* array[4] = {
+      value, value, value, value,
+  };
+  ASSIGN(field_m_vector,
+    gcc_jit_context_new_rvalue_from_vector (
+      ctxt,
+      NULL,
+      aligned_vector_type,
+      4,
+      array))
+
   ASSIGN(field_m_FILE_ptr,
     gcc_jit_context_new_rvalue_from_ptr (
       ctxt,

Reply via email to