[Bug tree-optimization/92180] New: Missed optimization on casting __builtin_ia32_rdtsc result to int32

mserdarsanli at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Oct 22 15:55:00 GMT 2019


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

            Bug ID: 92180
           Summary: Missed optimization on casting __builtin_ia32_rdtsc
                    result to int32
           Product: gcc
           Version: 9.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mserdarsanli at gmail dot com
  Target Milestone: ---

Link: https://godbolt.org/z/wcIN0a

#include <stdint.h>

uint32_t foo1() {
    return __builtin_ia32_rdtsc();
}

uint64_t foo2() {
    return __builtin_ia32_rdtsc();
}

Generates assembly:
foo1():
        rdtsc
        sal     rdx, 32
        or      rax, rdx
        ret
foo2():
        rdtsc
        sal     rdx, 32
        or      rax, rdx
        ret

While clang generates better code for foo1

foo1():                               # @foo1()
        rdtsc
        ret


More information about the Gcc-bugs mailing list