The kernel for s390 (and ppc) currently drags in __cmpdi2 from libgcc with the following reduced testcase even though s390 is supposed to have an 8 byte comparison opcode and archs such as i686 generate bit-twiddling for this unsupported case (admittandly not from ifcvt, but from some define-expand hackery), i.e. ll[0] | ll[1] == 0.
void foo(void); int dcache_readdir(long long ll) { switch(ll) { case 0: foo(); } } -- Summary: Emits call to __cmpdi2 for long long comparison Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: critical Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org GCC target triplet: s390-ibm-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25724