On 10/12/2016 10:30 AM, Richard Biener wrote: > On Tue, Oct 11, 2016 at 11:33 AM, Martin Liška wrote: >> Changes from the previous version: >> >> 1) Handle BUILT_IN_STRNCMP with length == -1. >> 2) Direct gimple stmts creation and usage gsi_replace_with_seq_vops. >> (hope using of replace_call_with_value is fine if replacing with a cst?) > > yes > >> 3) lhs == NULL cases are handled (Or is it fine to replace with a nop in general? >> Can change a semantic as it may touch a memory.) >> 4) CFN_BUILT_IN_STRNCMP can handle strncmp (x, y, 0). >> 5) Handling of CFN_BUILT_IN_STRNCASECMP is added. >> >> Testing of the whole series has been running. > > gimple_load_first_char needs a comment. > > + tree var = gimple_load_first_char (loc, str1, &stmts); > + if (lhs) > + stmt = gimple_build_assign (lhs, NOP_EXPR, var); > + else > + stmt = gimple_build_nop (); > > I think you don't need the nop() as you have at least one stmt > from the load. Likewise for the other cases below. Thanks, both nits are fixed in the new version. Apart from that, I added usages of enhanced c_getstr API. Patch can bootstrap on ppc64le-redhat-linux and survives regression tests as a whole series. Martin > > Otherwise this patch looks ok now. > > Richard. > > > >> Martin