The code path which was added for 16bit had a broken inline-asm which would only assign maybe half of the registers for the `long` type to 0.
Adding L to the input operand of the inline-asm fixes the issue by now assigning the full 32bit value of the input register that would match up with the output register. Fixes r0-115223-gb0408f13d4b317 which added the 16bit code path to fix the testcase for 16bit. Pushed as obvious. PR testsuite/116716 gcc/testsuite/ChangeLog: * gcc.c-torture/execute/pr52286.c: Fix inline-asm for 16bit case. --- gcc/testsuite/gcc.c-torture/execute/pr52286.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.c-torture/execute/pr52286.c b/gcc/testsuite/gcc.c-torture/execute/pr52286.c index bb56295ab52..4fd5d6ac813 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr52286.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr52286.c @@ -11,7 +11,7 @@ main () b = (~a | 1) & -2038094497; #else long a, b; - asm ("" : "=r" (a) : "0" (0)); + asm ("" : "=r" (a) : "0" (0L)); b = (~a | 1) & -2038094497L; #endif if (b >= 0) -- 2.43.0