[PATCH] D50233: [InstCombine] Transform str(n)cmp to memcmp

Dávid Bolvanský via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 3 14:07:08 PDT 2018


xbolva00 added a comment.

Updated.

Transformation works but I was unable to make it working with tests as you requested (as an argument). Not sure what is wrong, I had tried to put align info but nothing worked.



================
Comment at: lib/Transforms/Utils/SimplifyLibCalls.cpp:155
+  if (!isOnlyUsedInZeroEqualityComparison(CI))
+    return false;
+
----------------
efriedma wrote:
> xbolva00 wrote:
> > efriedma wrote:
> > > Not sure why this check is relevant; memcmp should return the same value as strcmp.
> > \0 in the middle of string?
> > https://stackoverflow.com/questions/13095513/what-is-the-difference-between-memcmp-strcmp-and-strncmp-in-c
> > 
> > I think the check is probably right here..
> I'm not sure what you mean... as far as I can tell, strcmp and memcmp should return the same result even if the non-constant string has an embedded null.  Can you give an example?  (I'm interpreting "same" here loosely to mean the same zero-ness and same sign bit.)
Yeah, sign bit is same, but values are not. So need to check only if it is only used in condition


https://reviews.llvm.org/D50233





More information about the llvm-commits mailing list