https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93402

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org
   Target Milestone|---                         |8.4

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems to have started with r186861 aka
r0-116443-gb5068425b9d7ab59694014bc78d4a29e04e44918.
Slightly adjusted testcase:
struct S { unsigned int a; unsigned long long b; };

__attribute__((noinline)) struct S
foo (unsigned long long x)
{
  struct S ret;
  ret.a = 0;
  ret.b = x * 11111111111ULL + 111111111111ULL;
  return ret;
}

int
main ()
{
  struct S a = foo (1);
  if (a.b != 122222222222ULL)
    __builtin_abort ();
  return 0;
}
The difference between per-r186861 and r186861 (== trunk) is:
@@ -10,7 +10,6 @@ foo:
        movabsq $111111111111, %rdx
        imulq   %rax, %rdi
        xorl    %eax, %eax
-       addq    %rdi, %rdx
        ret
        .cfi_endproc
 .LFE0:

Reply via email to