diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2025-09-02 15:58:26 -0700 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2025-09-02 15:58:26 -0700 |
commit | 071b4126c613881f4cb25b4e5c39032964827f88 (patch) | |
tree | 7ed805786566918630d1d617b1ed8f7310f5fd8e /gcc/explow.cc | |
parent | 845d23f3ea08ba873197c275a8857eee7edad996 (diff) | |
parent | caa1c2f42691d68af4d894a5c3e700ecd2dba080 (diff) | |
download | gcc-devel/gfortran-test.zip gcc-devel/gfortran-test.tar.gz gcc-devel/gfortran-test.tar.bz2 |
Merge branch 'master' into gfortran-testdevel/gfortran-test
Diffstat (limited to 'gcc/explow.cc')
-rw-r--r-- | gcc/explow.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/explow.cc b/gcc/explow.cc index 7799a98..8f8ca7f 100644 --- a/gcc/explow.cc +++ b/gcc/explow.cc @@ -854,6 +854,18 @@ promote_function_mode (const_tree type, machine_mode mode, int *punsignedp, switch (TREE_CODE (type)) { + case BITINT_TYPE: + if (TYPE_MODE (type) == BLKmode) + return mode; + + struct bitint_info info; + bool ok; + ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info); + gcc_assert (ok); + + if (!info.extended) + return mode; + /* FALLTHRU */ case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: case REAL_TYPE: case OFFSET_TYPE: case FIXED_POINT_TYPE: case POINTER_TYPE: case REFERENCE_TYPE: @@ -893,6 +905,18 @@ promote_mode (const_tree type ATTRIBUTE_UNUSED, machine_mode mode, switch (code) { + case BITINT_TYPE: + if (TYPE_MODE (type) == BLKmode) + return mode; + + struct bitint_info info; + bool ok; + ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info); + gcc_assert (ok); + + if (!info.extended) + return mode; + /* FALLTHRU */ case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: case REAL_TYPE: case OFFSET_TYPE: case FIXED_POINT_TYPE: /* Values of these types always have scalar mode. */ |