Hi! Didn't notice the memmove is into an int variable, so the test was still failing on big endian.
Committed to trunk as obvious. 2024-07-24 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/116034 PR testsuite/116061 * gcc.dg/pr116034.c (g): Change type from int to unsigned short. (foo): Guard memmove call on __SIZEOF_SHORT__ == 2. --- gcc/testsuite/gcc.dg/pr116034.c.jj 2024-07-23 10:50:10.878953531 +0200 +++ gcc/testsuite/gcc.dg/pr116034.c 2024-07-24 17:57:37.377829853 +0200 @@ -2,12 +2,13 @@ /* { dg-do run } */ /* { dg-options "-O1 -fno-strict-aliasing" } */ -int g; +unsigned short int g; static inline int foo (_Complex unsigned short c) { - __builtin_memmove (&g, 1 + (char *) &c, 2); + if (__SIZEOF_SHORT__ == 2) + __builtin_memmove (&g, 1 + (char *) &c, 2); return g; } Jakub