Normalize memcmp constant folding results.
authorMeador Inge <meadori@codesourcery.com>
Mon, 12 Nov 2012 14:00:45 +0000 (14:00 +0000)
committerMeador Inge <meadori@codesourcery.com>
Mon, 12 Nov 2012 14:00:45 +0000 (14:00 +0000)
commit30d8f0e9770db76f19273419c57fe112129b145a
tree741f868d78d286d89912709ffc23317c22bd9203
parent9cc45d2d7ededa025eaea5d734a9e4659bfa1e34
Normalize memcmp constant folding results.

The library call simplifier folds memcmp calls with all constant arguments
to a constant.  For example:

  memcmp("foo", "foo", 3) ->  0
  memcmp("hel", "foo", 3) ->  1
  memcmp("foo", "hel", 3) -> -1

The folding is implemented in terms of the system memcmp that LLVM gets
linked with.  It currently just blindly uses the value returned from
the system memcmp as the folded constant.

This patch normalizes the values returned from the system memcmp to
(-1, 0, 1) so that we get consistent results across multiple platforms.
The test cases were adjusted accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167726 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/SimplifyLibCalls.cpp
test/Transforms/InstCombine/memcmp-1.ll