Here's an updated patch: Reported-by: Roel Kluin <roel.kluin@xxxxxxxxx> Signed-off-by: Randolph Chung <tausq@xxxxxxxxxxxxxxxx> diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c index 2d68431..827e535 100644 --- a/arch/parisc/lib/memcpy.c +++ b/arch/parisc/lib/memcpy.c @@ -405,7 +405,7 @@ byte_copy: unaligned_copy: /* possibly we are aligned on a word, but not on a double... */ - if (likely(t1 & (sizeof(unsigned int)-1)) == 0) { + if (likely((t1 & (sizeof(unsigned int)-1)) == 0)) { t2 = src & (sizeof(unsigned int) - 1); if (unlikely(t2 != 0)) { On Mon, May 18, 2009 at 9:42 AM, Randolph Chung<randolph@xxxxxxxxx> wrote: > The wrong version of course produces different code.... > > the original and the corrected one may produce different code depending on > how the compiler schedules things. > > randolph > > Matt Turner wrote: >> >> Does gcc produce different code for the three variations? >> >> Matt >> >> On Sat, May 16, 2009 at 12:14 AM, Randolph Chung <randolph@xxxxxxxxx> >> wrote: >> >>> >>> This is a bit confusingly written, but your patch does not appear to be >>> correct. >>> >>> == has higher precedence than &, so you are basically changing it to: >>> if (likely(t1 & 1)) >>> >>> it really should be >>> >>> - if (likely(t1 & (sizeof(unsigned int)-1)) == 0) { >>> + if (likely((t1 & (sizeof(unsigned int)-1)) == 0)) { >>> >>> randolph >>> >>> >>> Roel Kluin wrote: >>> >>>> >>>> Fix misplaced parenthesis. >>>> >>>> Signed-off-by: Roel Kluin <roel.kluin@xxxxxxxxx> >>>> --- >>>> I think this is what was intended? Note that this patch may affect >>>> profiling. >>>> >>>> diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c >>>> index bbda909..30207b0 100644 >>>> --- a/arch/parisc/lib/memcpy.c >>>> +++ b/arch/parisc/lib/memcpy.c >>>> @@ -405,7 +405,7 @@ byte_copy: >>>> unaligned_copy: >>>> /* possibly we are aligned on a word, but not on a double... */ >>>> - if (likely(t1 & (sizeof(unsigned int)-1)) == 0) { >>>> + if (likely(t1 & (sizeof(unsigned int)-1) == 0)) { >>>> t2 = src & (sizeof(unsigned int) - 1); >>>> if (unlikely(t2 != 0)) { >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-parisc" >>>> in >>>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>> >>>> >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-parisc" >>> in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >>> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-parisc" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html