[llvm-commits] [llvm] r167691 - /llvm/trunk/test/Transforms/InstCombine/memcmp-1.ll
Eli Friedman
eli.friedman at gmail.com
Sun Nov 11 14:07:30 PST 2012
On Sat, Nov 10, 2012 at 11:10 PM, Meador Inge <meadori at codesourcery.com> wrote:
> Author: meadori
> Date: Sun Nov 11 01:10:25 2012
> New Revision: 167691
>
> URL: http://llvm.org/viewvc/llvm-project?rev=167691&view=rev
> Log:
> Remove hard-coded constant in Transforms/InstCombine/memcmp-1.ll
>
> Transforms/InstCombine/memcmp-1.ll has a test case that looks like:
>
> @foo = constant [4 x i8] c"foo\00"
> @hel = constant [4 x i8] c"hel\00"
>
> ...
>
> %mem1 = getelementptr [4 x i8]* @hel, i32 0, i32 0
> %mem2 = getelementptr [4 x i8]* @foo, i32 0, i32 0
> %ret = call i32 @memcmp(i8* %mem1, i8* %mem2, i32 3)
> ret i32 %ret
> ; CHECK: ret i32 2
>
> The folded return value (2 above) is computed using the system memcmp
> that the compiler is linked with. This can return different values on
> different systems. The test was originally written on an OS X 10.7.5
> x86-64 box and passed. However, it failed on one of the x86-64 FreeBSD
> buildbots because the system memcpy on that machine returned a different
> value (1 instead of 2).
>
> I fixed the test by checking the folding constants with regexes.
This seems wrong: we prefer that transforms are consistent across
platforms where possible. Please fix the transform so it doesn't vary
based on the return value of the system memcmp.
-Eli
More information about the llvm-commits
mailing list