One more difference between the code generated by the tree-ssa compiler: it inlines fewer mem* functions. When compiling combine.i using -O1 -fdisable-simple there are 2 calls to memset in the generated assembly. When using just -O1 there are 9 memset and 1 memcpy calls. Maybe this is significant too...