aboutsummaryrefslogtreecommitdiffstats
path: root/src/ortho
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-06-30 18:43:24 +0200
committerTristan Gingold <tgingold@free.fr>2020-06-30 19:34:51 +0200
commit8ab2ac7308cde26aa3fd7e9c5caddc8f789911ef (patch)
tree4935752481840d5432fa7c6e8655c176eaecb990 /src/ortho
parent8d1ab3e6d745c3314dab964f886f2f4cdb120310 (diff)
downloadghdl-8ab2ac7308cde26aa3fd7e9c5caddc8f789911ef.tar.gz
ghdl-8ab2ac7308cde26aa3fd7e9c5caddc8f789911ef.tar.bz2
ghdl-8ab2ac7308cde26aa3fd7e9c5caddc8f789911ef.zip
ortho/gcc: build vector types in type_for_mode. Fix #1384
Diffstat (limited to 'src/ortho')
-rw-r--r--src/ortho/gcc/ortho-lang-49.c8
-rw-r--r--src/ortho/gcc/ortho-lang-5.c8
-rw-r--r--src/ortho/gcc/ortho-lang-6.c8
-rw-r--r--src/ortho/gcc/ortho-lang-7.c8
-rw-r--r--src/ortho/gcc/ortho-lang-8.c8
-rw-r--r--src/ortho/gcc/ortho-lang-9.c8
6 files changed, 48 insertions, 0 deletions
diff --git a/src/ortho/gcc/ortho-lang-49.c b/src/ortho/gcc/ortho-lang-49.c
index f73965615..3e29f0a14 100644
--- a/src/ortho/gcc/ortho-lang-49.c
+++ b/src/ortho/gcc/ortho-lang-49.c
@@ -722,6 +722,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}
diff --git a/src/ortho/gcc/ortho-lang-5.c b/src/ortho/gcc/ortho-lang-5.c
index 6dedb14b0..3e046f7a3 100644
--- a/src/ortho/gcc/ortho-lang-5.c
+++ b/src/ortho/gcc/ortho-lang-5.c
@@ -709,6 +709,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}
diff --git a/src/ortho/gcc/ortho-lang-6.c b/src/ortho/gcc/ortho-lang-6.c
index 639356085..bd989d9a8 100644
--- a/src/ortho/gcc/ortho-lang-6.c
+++ b/src/ortho/gcc/ortho-lang-6.c
@@ -709,6 +709,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}
diff --git a/src/ortho/gcc/ortho-lang-7.c b/src/ortho/gcc/ortho-lang-7.c
index f871bf93c..e9c0d47c8 100644
--- a/src/ortho/gcc/ortho-lang-7.c
+++ b/src/ortho/gcc/ortho-lang-7.c
@@ -718,6 +718,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}
diff --git a/src/ortho/gcc/ortho-lang-8.c b/src/ortho/gcc/ortho-lang-8.c
index de5080036..350504cdf 100644
--- a/src/ortho/gcc/ortho-lang-8.c
+++ b/src/ortho/gcc/ortho-lang-8.c
@@ -719,6 +719,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}
diff --git a/src/ortho/gcc/ortho-lang-9.c b/src/ortho/gcc/ortho-lang-9.c
index 5a5ac8859..b027f0d6d 100644
--- a/src/ortho/gcc/ortho-lang-9.c
+++ b/src/ortho/gcc/ortho-lang-9.c
@@ -719,6 +719,14 @@ type_for_mode (enum machine_mode mode, int unsignedp)
if (mode == TYPE_MODE (long_double_type_node))
return long_double_type_node;
+ if (VECTOR_MODE_P (mode))
+ {
+ machine_mode inner_mode = GET_MODE_INNER (mode);
+ tree inner_type = type_for_mode (inner_mode, unsignedp);
+ if (inner_type)
+ return build_vector_type_for_mode (inner_type, mode);
+ }
+
return NULL_TREE;
}