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,