@@ -1,3 +1,9 @@
+2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+
+ * lto-streamer-in.c (lto_input_mode_table): Correctly advance
+ iterator.
+
2015-08-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* doc/options.texi (EnabledBy): Document that the argument must be
@@ -1573,7 +1573,7 @@ lto_input_mode_table (struct lto_file_decl_data *file_data)
for (machine_mode mr = pass ? VOIDmode
: GET_CLASS_NARROWEST_MODE (mclass);
pass ? mr < MAX_MACHINE_MODE : mr != VOIDmode;
- pass ? mr = (machine_mode) (m + 1)
+ pass ? mr = (machine_mode) (mr + 1)
: mr = GET_MODE_WIDER_MODE (mr))
if (GET_MODE_CLASS (mr) != mclass
|| GET_MODE_SIZE (mr) != size
commit b308f4a0d03e67bdaf3f43416cfbd360db957a29
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon Aug 10 15:22:30 2015 +0000
Fix offloading machine mode stream reading
... in context of the GET_MODE_INNER changes applied in r226328.
gcc/
* lto-streamer-in.c (lto_input_mode_table): Adjust to
GET_MODE_INNER changes.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/vector-type-1.c: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226759 138bc75d-0d04-0410-961f-82ee72b054a4
---
gcc/ChangeLog | 5 ++++
gcc/lto-streamer-in.c | 8 ++++---
gcc/lto-streamer-out.c | 4 ++--
libgomp/ChangeLog | 4 ++++
.../libgomp.oacc-c-c++-common/vector-type-1.c | 24 ++++++++++++++++++++
5 files changed, 40 insertions(+), 5 deletions(-)
@@ -1,4 +1,9 @@
2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ * lto-streamer-in.c (lto_input_mode_table): Adjust to
+ GET_MODE_INNER changes.
+
+2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
Ilya Verbin <ilya.verbin@intel.com>
* lto-streamer-in.c (lto_input_mode_table): Correctly advance
@@ -1544,7 +1544,7 @@ lto_input_mode_table (struct lto_file_decl_data *file_data)
= bp_unpack_enum (&bp, mode_class, MAX_MODE_CLASS);
unsigned int size = bp_unpack_value (&bp, 8);
unsigned int prec = bp_unpack_value (&bp, 16);
- machine_mode inner = (machine_mode) table[bp_unpack_value (&bp, 8)];
+ machine_mode inner = (machine_mode) bp_unpack_value (&bp, 8);
unsigned int nunits = bp_unpack_value (&bp, 8);
unsigned int ibit = 0, fbit = 0;
unsigned int real_fmt_len = 0;
@@ -1578,7 +1578,9 @@ lto_input_mode_table (struct lto_file_decl_data *file_data)
if (GET_MODE_CLASS (mr) != mclass
|| GET_MODE_SIZE (mr) != size
|| GET_MODE_PRECISION (mr) != prec
- || GET_MODE_INNER (mr) != inner
+ || (inner == m
+ ? GET_MODE_INNER (mr) != mr
+ : GET_MODE_INNER (mr) != table[(int) inner])
|| GET_MODE_IBIT (mr) != ibit
|| GET_MODE_FBIT (mr) != fbit
|| GET_MODE_NUNITS (mr) != nunits)
@@ -1606,7 +1608,7 @@ lto_input_mode_table (struct lto_file_decl_data *file_data)
case MODE_VECTOR_UACCUM:
/* For unsupported vector modes just use BLKmode,
if the scalar mode is supported. */
- if (inner != VOIDmode)
+ if (table[(int) inner] != VOIDmode)
{
table[m] = BLKmode;
break;
@@ -2676,7 +2676,7 @@ lto_write_mode_table (void)
ob = create_output_block (LTO_section_mode_table);
bitpack_d bp = bitpack_create (ob->main_stream);
- /* Ensure that for GET_MODE_INNER (m) != VOIDmode we have
+ /* Ensure that for GET_MODE_INNER (m) != m we have
also the inner mode marked. */
for (int i = 0; i < (int) MAX_MACHINE_MODE; i++)
if (streamer_mode_table[i])
@@ -2685,7 +2685,7 @@ lto_write_mode_table (void)
if (GET_MODE_INNER (m) != m)
streamer_mode_table[(int) GET_MODE_INNER (m)] = 1;
}
- /* First stream modes that have GET_MODE_INNER (m) == VOIDmode,
+ /* First stream modes that have GET_MODE_INNER (m) == m,
so that we can refer to them afterwards. */
for (int pass = 0; pass < 2; pass++)
for (int i = 0; i < (int) MAX_MACHINE_MODE; i++)
@@ -1,3 +1,7 @@
+2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ * testsuite/libgomp.oacc-c-c++-common/vector-type-1.c: New file.
+
2015-08-03 Nathan Sidwell <nathan@codesourcery.com>
* plugin/plugin-nvptx.c: Don't include dlfcn.h.
new file mode 100644
@@ -0,0 +1,24 @@
+#define vector __attribute__ ((vector_size (4 * sizeof(int))))
+
+int main(void)
+{
+ vector int vi = { 12, -34, -56, 78 };
+
+#pragma acc parallel copy(vi)
+ {
+ if (vi[0] != 12
+ || vi[1] != -34
+ || vi[2] != -56
+ || vi[3] != 78)
+ __builtin_abort();
+ vector int vi_ = { -21, -43, 65, 87 };
+ vi = vi_;
+ }
+ if (vi[0] != -21
+ || vi[1] != -43
+ || vi[2] != 65
+ || vi[3] != 87)
+ __builtin_abort();
+
+ return 0;
+}
Hi! On Sat, 8 Aug 2015 07:25:42 +0200, Richard Biener <richard.guenther@gmail.com> wrote: > Ok. Committed in r226758 and r226759: commit 7231f6b984806cceb30cacf0e79f8f5ae7a68803 Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon Aug 10 15:22:24 2015 +0000 Correctly advance iterator in offloading machine mode stream reading gcc/ * lto-streamer-in.c (lto_input_mode_table): Correctly advance iterator. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226758 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/lto-streamer-in.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) Grüße, Thomas