]> git.ipfire.org Git - thirdparty/gcc.git/commit
bitint: Handle VIEW_CONVERT_EXPRs between large/huge BITINT_TYPEs and VECTOR/COMPLEX_...
authorJakub Jelinek <jakub@redhat.com>
Sat, 24 Feb 2024 11:44:34 +0000 (12:44 +0100)
committerJakub Jelinek <jakub@redhat.com>
Sat, 24 Feb 2024 11:44:34 +0000 (12:44 +0100)
commit5e7a176e88a2a37434cef9b1b6a37a4f8274854a
treeb1eb81a8093efae6227558430feadc0ff41ba870
parent2541c9d9105b5c0dff23cf41fc1a14d002e6f31a
bitint: Handle VIEW_CONVERT_EXPRs between large/huge BITINT_TYPEs and VECTOR/COMPLEX_TYPE etc. [PR114073]

The following patch implements support for VIEW_CONVERT_EXPRs from/to
large/huge _BitInt to/from vector or complex types or anything else but
integral/pointer types which doesn't need to live in memory.

2024-02-24  Jakub Jelinek  <jakub@redhat.com>

PR middle-end/114073
* gimple-lower-bitint.cc (bitint_large_huge::lower_stmt): Handle
VIEW_CONVERT_EXPRs between large/huge _BitInt and non-integer/pointer
types like vector or complex types.
(gimple_lower_bitint): Don't merge VIEW_CONVERT_EXPRs to non-integral
types.  Fix up VIEW_CONVERT_EXPR handling.  Allow merging
VIEW_CONVERT_EXPR from non-integral/pointer types with a store.

* gcc.dg/bitint-93.c: New test.
gcc/gimple-lower-bitint.cc
gcc/testsuite/gcc.dg/bitint-93.c [new file with mode: 0644]