Redundant logical operations left after early splitting

Paolo Bonzini bonzini@gnu.org
Wed Feb 20 08:23:00 GMT 2008


>> As I understand it (perhaps wrongly), actual splitting only occurs 
>> after combine pass (by split1 pass).
> Combine has some limited splitting capabilities.  For example it can
> try to combine 3 insns, which might not match a pattern, but can match
> a splitter which generates 2 insns.  I don't recall the other cases
> where combine splits, nor do I offhand recall if the split insns are
> ever simplified.  Search for "split" in combine.c

I think Andy is closer in its description to what actually happens. 
More precisely:

- if you use define_insn_and_split, it can try to combine 3 insns into 1 
and later use a splitter to create multiple instruction out of it.  But 
the splits are not simplified.

- after combining 3 instructions into 1 (fully simplified), if it does 
not match it can try to make 2 instructions out of the complex 1 which 
did not match.  See find_split_point.

Paolo



More information about the Gcc mailing list