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

            Bug ID: 123023
           Summary: RISC-V zbb: Missed optimization: constant fold
                    __riscv_orc_b_32
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xxs_chy at outlook dot com
  Target Milestone: ---

Reproducer: https://godbolt.org/z/xcc8fzz43
Testcase:

#include <riscv_bitmanip.h>
#include <stdint.h>

uint32_t foo(uint32_t x) {
    return __riscv_orc_b_32(0) + x;
}

clang emits:
foo:
        ret

GCC emits:
foo:
        li      a5,0
        orc.b   a5,a5
        addw    a0,a5,a0
        ret

Reply via email to