------- Comment #5 from rsandifo at gcc dot gnu dot org 2007-06-22 09:11 ------- I'm not surprised that converting it to an unspec_volatile stops us from deleting the instruction, but that wasn't really my concern.
As I said earlier, several other ports use top-level unspecs (rather than unspec_volatiles), and it appears that after the dataflow merge, that construct is no longer allowed. Thus I think we should first nail down whether this is a deliberate change. If it is (and I can see that it might be), then I think we should change the RTL generators so that top-level unspecs are not allowed in define_insns. I do not think we should the MIPS port until we have established what the new rules are. (This isn't an issue about dataflow being more accurate per se; the old code could also have deleted top-level unspecs with no register dependencies, if it had thought that doing so was allowed.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32437