From b257ad5f8c6cf4ef672a9f035d78f762c673bc3d Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 28 Mar 2012 21:59:23 +0000 Subject: [PATCH] * tree.c (tree_size) : New case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185930 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/vect7.adb | 20 ++++++++++++++++++++ gcc/testsuite/gnat.dg/vect7.ads | 15 +++++++++++++++ gcc/tree.c | 4 ++++ 5 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/gnat.dg/vect7.adb create mode 100644 gcc/testsuite/gnat.dg/vect7.ads diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f84e25e..55fc1e4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-03-28 Eric Botcazou + + * tree.c (tree_size) : New case. + 2012-03-28 Uros Bizjak * config/i386/i386.c (ix86_modes_tieable_p): Handle 32bit AVX modes. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 945e507..b16a490 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-28 Eric Botcazou + + * gnat.dg/vect7.ad[sb]: New test. + 2012-03-28 Paul Thomas Tobias Burnus diff --git a/gcc/testsuite/gnat.dg/vect7.adb b/gcc/testsuite/gnat.dg/vect7.adb new file mode 100644 index 0000000..7911cc8 --- /dev/null +++ b/gcc/testsuite/gnat.dg/vect7.adb @@ -0,0 +1,20 @@ +-- { dg-do compile } + +package body Vect7 is + + procedure Assign is + v1 : constant v4sf := (-1.0, -2.0, -3.0, -4.0); + v2 : v4sf := v1; + v3 : v4sf; + begin + v3 := vzero; + v3 := vconst; + v3 := v1; + v3 := v2; + v3 := (1.0, -2.0, 3.0, -4.0); + v3 := (1.0, -2.0, 3.0, F); + + v2 := vzero; + end; + +end Vect7; diff --git a/gcc/testsuite/gnat.dg/vect7.ads b/gcc/testsuite/gnat.dg/vect7.ads new file mode 100644 index 0000000..faf0167 --- /dev/null +++ b/gcc/testsuite/gnat.dg/vect7.ads @@ -0,0 +1,15 @@ +package Vect7 is + + type v4sf is array (1 .. 4) of Float; + for v4sf'Alignment use 16; + pragma Machine_Attribute (v4sf, "vector_type"); + + vzero : constant v4sf := (0.0, 0.0, 0.0, 0.0); + vconst : constant v4sf := (1.0, 2.0, 3.0, 4.0); + vvar : v4sf := vconst; + + F : Float := 5.0; + + procedure Assign; + +end Vect7; diff --git a/gcc/tree.c b/gcc/tree.c index cfea9f7..7c7e43a 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -724,6 +724,10 @@ tree_size (const_tree node) return (sizeof (struct tree_vec) + (TREE_VEC_LENGTH (node) - 1) * sizeof (tree)); + case VECTOR_CST: + return (sizeof (struct tree_vector) + + (TYPE_VECTOR_SUBPARTS (TREE_TYPE (node)) - 1) * sizeof (tree)); + case STRING_CST: return TREE_STRING_LENGTH (node) + offsetof (struct tree_string, str) + 1; -- 2.7.4