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