From: Uros Bizjak Date: Sat, 12 Feb 2022 09:53:49 +0000 (+0100) Subject: i386: Skip decimal float vector modes in type_natural_mode [PR79754] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=edadc7e0510b703d9727cf5ff68d55d84bb95def;p=test_jj.git i386: Skip decimal float vector modes in type_natural_mode [PR79754] 2022-02-12 Uroš Bizjak gcc/ChangeLog: PR target/79754 * config/i386/i386.cc (type_natural_mode): Skip decimal float vector modes. gcc/testsuite/ChangeLog: PR target/79754 * gcc.target/i386/pr79754.c: New test. --- diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 6b97a2b..cf246e7 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -1876,10 +1876,14 @@ type_natural_mode (const_tree type, const CUMULATIVE_ARGS *cum, { machine_mode innermode = TYPE_MODE (TREE_TYPE (type)); - /* There are no XFmode vector modes. */ + /* There are no XFmode vector modes ... */ if (innermode == XFmode) return mode; + /* ... and no decimal float vector modes. */ + if (DECIMAL_FLOAT_MODE_P (innermode)) + return mode; + if (TREE_CODE (TREE_TYPE (type)) == REAL_TYPE) mode = MIN_MODE_VECTOR_FLOAT; else diff --git a/gcc/testsuite/gcc.target/i386/pr79754.c b/gcc/testsuite/gcc.target/i386/pr79754.c new file mode 100644 index 0000000..27845c9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr79754.c @@ -0,0 +1,7 @@ +/* PR target/79754 */ +/* { dg-do compile } */ +/* { dg-options "-Wno-psabi" } */ + +typedef _Decimal32 V __attribute__ ((vector_size(16))); + +V fn1 (V a) { return a; }