The sign-extending Alpha instructions like addl are sometimes not used. I don't know whether the SEE pass is supposed to affect this, or whether it is something a combiner pass should do...
#include <stdlib.h> /* gcc 4.2.0 20060506: negq a0,v0 cmovge a0,a0,v0 sextl v0,v0 optimal: negl a0,v0 cmovge a0,a0,v0 */ int f5(int x) { return abs(x); } /* gcc 4.2.0 20060506: s4addq a0,a0,v0 s4addq v0,v0,v0 s8addq v0,a0,v0 s8addq v0,a0,v0 # sextl v0,v0 # can be combined to s8addl v0,a0,v0 */ int64_t f23(int16_t x) { return 1609 * x; } /* gcc 4.2.0 20060506: ldah t0,-32768 xor a0,t0,v0 addq v0,t0,v0 # sextl v0,v0 # can be combined to addl v0,t0,v0 */ unsigned f49(unsigned val) { return (val ^ 0x80000000) - 0x80000000; } -- Summary: sign-extending Alpha instructions not exploited Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: falk at debian dot org GCC build triplet: alphaev68-unknown-linux-gnu GCC host triplet: alphaev68-unknown-linux-gnu GCC target triplet: alphaev68-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27468