https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59847
Patrick Conlon <cptjustice at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |cptjustice at gmail dot com --- Comment #1 from Patrick Conlon <cptjustice at gmail dot com> --- On gcc 9.0.0 20180808 (experimental) this code no longer give this error. pdp11-aout-gcc no longer produces the sxt instruction with the -m10 option, but still does for -m40 as it should. cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> pdp11-aout-gcc -v Using built-in specs. COLLECT_GCC=pdp11-aout-gcc COLLECT_LTO_WRAPPER=/home/cptnapalm/opt/pdp11-aout/libexec/gcc/pdp11-aout/9.0.0/lto-wrapper Target: pdp11-aout Configured with: /home/cptnapalm/src/gnu/gcc/configure --target=pdp11-aout --prefix=/home/cptnapalm/opt/pdp11-aout --disable-libstdcxx --disable-nls --without-headers --enable-languages=c : (reconfigured) /home/cptnapalm/src/gnu/gcc/configure --target=pdp11-aout --prefix=/home/cptnapalm/opt/pdp11-aout --disable-libstdcxx --disable-nls --without-headers --enable-languages=c --disable-libssp : (reconfigured) /home/cptnapalm/src/gnu/gcc/configure --target=pdp11-aout --prefix=/home/cptnapalm/opt/pdp11-aout --disable-libstdcxx --disable-nls --without-headers --enable-languages=c --disable-libssp20180808 (experimental) Thread model: single gcc version 9.0.0 20180808 (experimental) (GCC) cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> pdp11-aout-gcc -m10 -S -o cast_to_long_m10.s cast_to_long_m10.c cast_to_long_m10.c:1:1: warning: return type defaults to 'int' [-Wimplicit-int] test () ^~~~ cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> cat cast_to_long_m10.s .text .even .globl _test _test: mov r5,-(sp) mov sp,r5 add $-06,sp mov r2,-(sp) clr -04(r5) mov $012,-02(r5) mov $012,-06(r5) mov -06(r5),r0 mov r0,-02(r5) mov r0,r1 mov $017,r2 mov r0,r1 L_3: asr r1 dec r2 bne L_3 mov r1,-04(r5) nop mov (sp)+,r2 mov r5,sp mov (sp)+,r5 rts pc cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> pdp11-aout-gcc -m40 -S -o cast_to_long_m40.s cast_to_long_m10.c cast_to_long_m10.c:1:1: warning: return type defaults to 'int' [-Wimplicit-int] test () ^~~~ cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> cat cast_to_long_m40.s .text .even .globl _test _test: mov r5,-(sp) mov sp,r5 add $-06,sp clr -04(r5) mov $012,-02(r5) mov $012,-06(r5) mov -06(r5),-02(r5) sxt -04(r5) nop mov r5,sp mov (sp)+,r5 rts pc cptnapalm@oracle~/s/p/p/g/59847_cast_to_long_m10> cat cast_to_long_m10.c test () { long a = 10; short b = 10; a = (long) b; }