Harvey Harrison wrote: > This patch may be too ugly to live, it suppresses a lot of > sparse warnings in the libata build and produces slightly > tighter code. (4 instructions vs 5 and a few bytes saved). > > include/linux/libata.h:1214:13: warning: potentially expensive pointer subtraction > > Original: > if (++link - ap->pmp_link < ap->nr_pmp_links) > return link; > > 52b: 89 d8 mov %ebx,%eax > 52d: 2b 82 60 26 00 00 sub 0x2660(%edx),%eax > 533: c1 f8 02 sar $0x2,%eax > 536: 69 c0 dd 3d c8 44 imul $0x44c83ddd,%eax,%eax > 53c: 3b 82 5c 26 00 00 cmp 0x265c(%edx),%eax > 542: 7d 04 jge 548 <sata_pmp_detach+0xbe> > > Next: > if ((char*)++link - (char *)ap->pmp_link < ap->nr_pmp_links * sizeof(*link)) > return link; > > 52b: 69 81 5c 26 00 00 d4 imul $0x9d4,0x265c(%ecx),%eax > 532: 09 00 00 > 535: 89 da mov %ebx,%edx > 537: 2b 91 60 26 00 00 sub 0x2660(%ecx),%edx > 53d: 39 c2 cmp %eax,%edx > 53f: 73 04 jae 545 <sata_pmp_detach+0xbb> > > Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> > --- > I know it's ugly, but I had it done anyways. The one real problem I have > with it is that if link and ap->pmp_link ever get changed to different types > the compiler will not even warn as we cast away to (char *). To make it > a bit more robust, a BUILD_BUG_ON checking the pointer types may be a > good idea. Sorry, but Nacked-by: Tejun Heo <htejun@xxxxxxxxx> -- tejun - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html