The following fixes PR82102, GIMPLE_NOPs don't have a lhs so we have to care for that case.
Tested on x86_64-unknown-linux-gnu, applied as obvious. Richard. 2017-09-05 Richard Biener <rguent...@suse.de> PR tree-optimization/82102 * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL. * gcc.dg/torture/pr82102.c: New testcase. Index: gcc/tree-ssa-pre.c =================================================================== --- gcc/tree-ssa-pre.c (revision 251689) +++ gcc/tree-ssa-pre.c (working copy) @@ -4860,6 +4860,7 @@ fini_eliminate (void) lhs = gimple_get_lhs (stmt); if (inserted_exprs + && lhs && TREE_CODE (lhs) == SSA_NAME && bitmap_bit_p (inserted_exprs, SSA_NAME_VERSION (lhs))) continue; Index: gcc/testsuite/gcc.dg/torture/pr82102.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82102.c (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82102.c (working copy) @@ -0,0 +1,21 @@ +/* { dg-do compile } */ + +void *a, *b; +struct pt3_i2cbuf { + int num_cmds; +} c; +void *memcpy(void *, void *, __SIZE_TYPE__); +void put_stop(); +void translate(struct pt3_i2cbuf *p1, int p2) +{ + p1->num_cmds = 0; + if (p2) + put_stop(); +} +void pt3_i2c_master_xfer(int p1) +{ + translate(&c, p1); + memcpy(a, b, c.num_cmds); + for (; p1;) + ; +}