https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118284
Bug ID: 118284 Summary: [RISCV] No compressed c.j for offsets of -2044, -2046, -2048 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: tommy_murphy at hotmail dot com Target Milestone: --- Created attachment 60038 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60038&action=edit Simple test case code Originally reported here: https://github.com/riscv-collab/riscv-gnu-toolchain/issues/1647 See the attached simple test code cj.S. For offsets of up to -2040 and also -2042 a 16-bit compressed c.j <offset> is generated but for offsets of -2044, -2046 and -2048 a 32-bit (non-compressed) jal x0, <offset> instruction is generated. Is this an offset edge case error in the code generation or is there some other explanation for this behaviour? If any further information or clarification is needed please let me know. Thanks! :-) Tested with GCC 15.0.0 built using the riscv-gnu-toolchain repo: git clone https://github.com/riscv-collab/riscv-gnu-toolchain issue-1647 cd issue-1647 git clone https://github.com/gcc-mirror/gcc gcc-upstream-master --depth=1 ./configure --prefix=`pwd`/installed-tools --disable-gdb --with-gcc-src=`pwd`/gcc-upstream-master make ./installed-tools/bin/riscv64-unknown-elf-gcc -v Using built-in specs. COLLECT_GCC=./riscv64-unknown-elf-gcc COLLECT_LTO_WRAPPER=/home/user/issue-1647/installed-tools/libexec/gcc/riscv64-unknown-elf/15.0.0/lto-wrapper Target: riscv64-unknown-elf Configured with: /home/user/issue-1647/gcc-upstream-master/configure --target=riscv64-unknown-elf --prefix=/home/user/issue-1647/installed-tools --disable-shared --disable-threads --enable-languages=c,c++ --with-pkgversion=gf8b559626 --with-system-zlib --enable-tls --with-newlib --with-sysroot=/home/user/issue-1647/installed-tools/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/home/user/issue-1647/gcc-upstream-master --disable-multilib --with-abi=lp64d --with-arch=rv64gc --with-tune=rocket --with-isa-spec=20191213 'CFLAGS_FOR_TARGET=-Os -mcmodel=medlow' 'CXXFLAGS_FOR_TARGET=-Os -mcmodel=medlow' Thread model: single Supported LTO compression algorithms: zlib gcc version 15.0.0 20250101 (experimental) (gf8b559626)