https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122041
--- Comment #3 from Petr Sumbera <sumbera at volny dot cz> --- With following change: --- Makefile +++ Makefile @@ -5,7 +5,7 @@ $(GCC) -o test.o -c test.c crc-gcc.o: crc.c - $(GCC) -O4 -funroll-loops -finline-functions -fstrict-aliasing -o crc-gcc.o -c crc.c + $(GCC) -O3 -funroll-loops -mcpu=niagara4 -mtune=niagara4 -o crc-gcc.o -c crc.c crc-studio.o: crc.c $(STUDIO) -m64 -xO4 -xtarget=generic -xarch=sparcvis -xchip=generic -xregs=no%appl -xmemalign=16s -o crc-studio.o -c crc.c === I get (on SPARC-T5 system): PATH=/usr/gcc/15/bin/:/usr/bin gmake test gcc -o test.o -c test.c gcc -O3 -funroll-loops -mcpu=niagara4 -mtune=niagara4 -o crc-gcc.o -c crc.c gcc -o test-gcc test.o crc-gcc.o /opt/developerstudio12.6/bin/cc -m64 -xO4 -xtarget=generic -xarch=sparcvis -xchip=generic -xregs=no%appl -xmemalign=16s -o crc-studio.o -c crc.c gcc -o test-studio test.o crc-studio.o time ./test-gcc real 33.6 user 33.6 sys 0.0 time ./test-studio real 14.4 user 14.4 sys 0.0 === $ gobjdump -dr crc-gcc.o crc-gcc.o: file format elf64-sparc-sol2 Disassembly of section .text: 0000000000000000 <crc32_update_no_xor>: 0: 9d e3 bf 40 save %sp, -192, %sp 4: b4 0e bf f8 and %i2, -8, %i2 8: 12 e6 ab 00 unknown c: 27 00 00 00 sethi %hi(0), %l3 c: R_SPARC_H44 .rodata 10: ba 10 20 ff mov 0xff, %i5 14: 82 14 e0 00 mov %l3, %g1 14: R_SPARC_M44 .rodata 18: a5 2f 70 30 sllx %i5, 0x30, %l2 1c: 85 28 70 0c sllx %g1, 0xc, %g2 20: a3 2f 70 28 sllx %i5, 0x28, %l1 24: a1 2f 70 20 sllx %i5, 0x20, %l0 28: a8 10 20 00 clr %l4 2c: a6 10 a0 00 mov %g2, %l3 2c: R_SPARC_L44 .rodata 30: 37 3f c0 00 sethi %hi(0xff000000), %i3 34: 39 00 3f c0 sethi %hi(0xff0000), %i4 38: bb 2f 70 08 sllx %i5, 8, %i5 3c: 92 06 40 14 add %i1, %l4, %o1 40: 94 10 20 08 mov 8, %o2 44: 90 07 a7 f7 add %fp, 0x7f7, %o0 48: 40 00 00 00 call 48 <crc32_update_no_xor+0x48> 48: R_SPARC_WDISP30 memcpy 4c: a8 05 20 08 add %l4, 8, %l4 50: ca 5f a7 f7 ldx [ %fp + 0x7f7 ], %g5 54: 89 31 70 38 srlx %g5, 0x38, %g4 58: 87 29 70 28 sllx %g5, 0x28, %g3 5c: 83 29 70 38 sllx %g5, 0x38, %g1 60: 90 08 c0 12 and %g3, %l2, %o0 64: 93 29 70 18 sllx %g5, 0x18, %o1 68: 82 10 40 04 or %g1, %g4, %g1 6c: 94 0a 40 11 and %o1, %l1, %o2 70: 97 29 70 08 sllx %g5, 8, %o3 74: 82 10 40 08 or %g1, %o0, %g1 78: 98 0a c0 10 and %o3, %l0, %o4 7c: 9b 31 70 08 srlx %g5, 8, %o5 80: 82 10 40 0a or %g1, %o2, %g1 84: 84 0b 40 1b and %o5, %i3, %g2 88: 89 31 70 18 srlx %g5, 0x18, %g4 8c: 82 10 40 0c or %g1, %o4, %g1 90: 86 09 00 1c and %g4, %i4, %g3 94: 82 10 40 02 or %g1, %g2, %g1 98: 8b 31 70 28 srlx %g5, 0x28, %g5 9c: 90 09 40 1d and %g5, %i5, %o0 a0: 82 10 40 03 or %g1, %g3, %g1 a4: 82 10 40 08 or %g1, %o0, %g1 a8: b0 18 40 18 xor %g1, %i0, %i0 ac: 92 0e 20 ff and %i0, 0xff, %o1 b0: 95 36 30 30 srlx %i0, 0x30, %o2 b4: 96 02 67 00 add %o1, 0x700, %o3 b8: 98 0a a0 ff and %o2, 0xff, %o4 bc: 9b 36 30 28 srlx %i0, 0x28, %o5 c0: 83 36 30 38 srlx %i0, 0x38, %g1 c4: 87 2a f0 02 sllx %o3, 2, %g3 c8: 84 03 21 00 add %o4, 0x100, %g2 cc: 8a 0b 60 ff and %o5, 0xff, %g5 d0: 89 36 30 20 srlx %i0, 0x20, %g4 d4: 83 28 70 02 sllx %g1, 2, %g1 d8: 91 28 b0 02 sllx %g2, 2, %o0 dc: d4 04 c0 03 ld [ %l3 + %g3 ], %o2 e0: 99 36 30 18 srlx %i0, 0x18, %o4 e4: 92 01 62 00 add %g5, 0x200, %o1 e8: 96 09 20 ff and %g4, 0xff, %o3 ec: c2 04 c0 01 ld [ %l3 + %g1 ], %g1 f0: 8b 2a 70 02 sllx %o1, 2, %g5 f4: da 04 c0 08 ld [ %l3 + %o0 ], %o5 f8: 88 02 e3 00 add %o3, 0x300, %g4 fc: 86 0b 20 ff and %o4, 0xff, %g3 100: 85 36 30 10 srlx %i0, 0x10, %g2 104: 91 29 30 02 sllx %g4, 2, %o0 108: 92 00 e4 00 add %g3, 0x400, %o1 10c: 96 08 a0 ff and %g2, 0xff, %o3 110: b1 36 30 08 srlx %i0, 8, %i0 114: de 04 c0 05 ld [ %l3 + %g5 ], %o7 118: 99 2a 70 02 sllx %o1, 2, %o4 11c: ca 04 c0 08 ld [ %l3 + %o0 ], %g5 120: 88 02 e5 00 add %o3, 0x500, %g4 124: 86 0e 20 ff and %i0, 0xff, %g3 128: 85 29 30 02 sllx %g4, 2, %g2 12c: d0 04 c0 0c ld [ %l3 + %o4 ], %o0 130: 92 00 e6 00 add %g3, 0x600, %o1 134: d6 04 c0 02 ld [ %l3 + %g2 ], %o3 138: 82 18 40 0a xor %g1, %o2, %g1 13c: 95 2a 70 02 sllx %o1, 2, %o2 140: 82 18 40 0d xor %g1, %o5, %g1 144: da 04 c0 0a ld [ %l3 + %o2 ], %o5 148: 9e 18 40 0f xor %g1, %o7, %o7 14c: b0 1b c0 05 xor %o7, %g5, %i0 150: 98 1e 00 08 xor %i0, %o0, %o4 154: 8a 1b 00 0b xor %o4, %o3, %g5 158: 88 19 40 0d xor %g5, %o5, %g4 15c: b1 31 20 00 srl %g4, 0, %i0 160: 38 fe 96 f4 unknown 164: 01 00 00 00 nop 168: 81 cf e0 08 return %i7 + 8 16c: 01 00 00 00 nop 170: 30 68 00 04 b,a %xcc, 180 <crc32_update_no_xor+0x180> 174: 01 00 00 00 nop 178: 01 00 00 00 nop 17c: 01 00 00 00 nop