https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122863
anlauf at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2025-11-26
Keywords| |wrong-code
Status|UNCONFIRMED |NEW
--- Comment #3 from anlauf at gcc dot gnu.org ---
Here's something weird (comparing dump-tree -m32 vs. -m64):
@@ -181,14 +181,14 @@
void __copy_testmod_Item (struct item & restrict src, struct item & restrict
dst)
{
{
- logical(kind=4) D.4683;
- character(kind=4) D.4684;
- character(kind=4) D.4685;
- character(kind=4) D.4686;
+ logical(kind=4) D.4804;
+ unsigned long D.4805;
+ unsigned long D.4806;
+ unsigned long D.4807;
- D.4683 = (struct item *) dst == (struct item *) src;
+ D.4804 = (struct item *) dst == (struct item *) src;
*dst = *src;
- if (D.4683)
+ if (D.4804)
{
(void) 0;
}
@@ -198,10 +198,10 @@
{
dst->val._vptr = src->val._vptr;
dst->val._len = src->val._len;
- D.4684 = (character(kind=4)) src->val._vptr->_size;
- D.4685 = (character(kind=4)) src->val._len;
- D.4686 = D.4685 != 0 ? D.4684 * D.4685 : D.4684;
- dst->val._data = __builtin_malloc (D.4686);
+ D.4805 = (unsigned long) src->val._vptr->_size;
+ D.4806 = (unsigned long) src->val._len;
+ D.4807 = D.4806 != 0 ? D.4805 * D.4806 : D.4805;
+ dst->val._data = __builtin_malloc (D.4807);
if (src->val._len > 0)
{
src->val._vptr->_copy (src->val._data, dst->val._data,
src->val._len, dst->val._len);
How can this happen? (All versions down to 14 affected, 13 rejects the code).