As noted in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32437#c5
> 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.)
I would appreciate it if one or more dataflow maintainers were to opine
on the correctness of the patch in the bug report and to address
Richard's concerns.
Thanks,
David Daney