]> git.ipfire.org Git - thirdparty/gcc.git/commit
bitint: Make sure BEXTC checks extension when optimized
authorYang Yujie <yangyujie@loongson.cn>
Wed, 6 Aug 2025 10:02:44 +0000 (12:02 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 6 Aug 2025 10:02:44 +0000 (12:02 +0200)
commit88f638e276c25e216b3d01c0d7aa25a0d17921d9
treef33bc5271ed4b88f5f6567ec17cd49d73c9c006e
parenta76a032354ee48c0dcc5ff4842a9b319c3123685
bitint: Make sure BEXTC checks extension when optimized

In BEXTC, whether a _BitInt object is properly extended is examined
by a value comparison against a copied object in a wider _BitInt
type that utilizes all of the partial limb.

Since the (implicit) conversion to the wider type may be optimized
away now and cause the result of the comparison to always be true,
we need to cast the copied object down to the original type to
force a extension, so that it can serve as our reference.

* gcc.dg/bitintext.h (BEXTC1): Define.  Convert the copied
object back to the original type before comparison.
(BEXTC): Use BEXTC1 for both the signed and the unsigned case.
gcc/testsuite/gcc.dg/bitintext.h