diff options
author | liuhongt <hongtao.liu@intel.com> | 2023-06-25 11:12:29 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2023-06-26 15:49:05 +0800 |
commit | 1bfe7e5352d1f4ac525317454aca45aa80a517ba (patch) | |
tree | 9d9ca7aef48f6429e9770abea8bac992137e60c8 /gcc/testsuite | |
parent | 77a50c772771f681085922b493922516c3c03e9a (diff) | |
download | gcc-1bfe7e5352d1f4ac525317454aca45aa80a517ba.zip gcc-1bfe7e5352d1f4ac525317454aca45aa80a517ba.tar.gz gcc-1bfe7e5352d1f4ac525317454aca45aa80a517ba.tar.bz2 |
Use cvt_op to save intermediate type operand instead of "subtle" vec_dest.
When there're multiple operands in vec_oprnds0, vec_dest will be
overwrited to vectype_out, but in multi_step_cvt case, cvt_type is
expected. It caused an ICE when verify_gimple_in_cfg.
gcc/ChangeLog:
PR tree-optimization/110371
PR tree-optimization/110018
* tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
save intermediate type operand instead of "subtle" vec_dest
for case NONE.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/pr110371.c: New test.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/pr110371.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/aarch64/pr110371.c b/gcc/testsuite/gcc.target/aarch64/pr110371.c new file mode 100644 index 0000000..444e514e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr110371.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +typedef struct dest +{ + double m[3][3]; +} dest; + +typedef struct src +{ + int m[3][3]; +} src; + +void +foo (dest *a, src* s) +{ + for (int i = 0; i != 3; i++) + for (int j = 0; j != 3; j++) + a->m[i][j] = s->m[i][j]; +} |