This patch that Bernd put in PR77718 seems to be fine. Bootstrap and regtest done on powerpc64le, no new failures. Ok for trunk?
2016-09-28 Bernd Schmidt <bschm...@redhat.com> * builtins.c (expand_builtin_memcmp): don't swap args unless result is only being compared with zero. Index: builtins.c =================================================================== --- builtins.c (revision 240511) +++ builtins.c (working copy) @@ -3707,11 +3707,13 @@ expand_builtin_memcmp (tree exp, rtx tar by_pieces_constfn constfn = NULL; - const char *src_str = c_getstr (arg1); - if (src_str == NULL) - src_str = c_getstr (arg2); - else - std::swap (arg1_rtx, arg2_rtx); + const char *src_str = c_getstr (arg2); + if (result_eq && src_str == NULL) + { + src_str = c_getstr (arg1); + if (src_str != NULL) + std::swap (arg1_rtx, arg2_rtx); + } /* If SRC is a string constant and block move would be done by pieces, we can avoid loading the string from memory -- Aaron Sawdey, Ph.D. acsaw...@linux.vnet.ibm.com 050-2/C113 (507) 253-7520 home: 507/263-0782 IBM Linux Technology Center - PPC Toolchain