Hi! On Fri, Apr 09, 2021 at 09:49:30AM +0200, Jakub Jelinek wrote: > On the following testcase on aarch64 the combiner propagates > (clobber:TI (const_int 0)) into a DEBUG_INSN. Such clobbers are > specific to the combiner, created by gen_lowpart_for_combine: > fail: > return gen_rtx_CLOBBER (omode, const0_rtx); > which can be embedded anywhere and the combiner hopes they never match > anything.
It doesn't just hope that, there is code all over the place that guarantees this is true. Yes, that isn't super robust, I agree. But that is what we have until someone manages to change it. > That is hopefully the case of all instructions that go through > recog, but for DEBUG_INSNs we don't have any strict rules on what matches > and what doesn't and so if combiner calls propagate_for_debug with > src containing such clobbers embedded in it, it will happily propagate it > into DEBUG_INSNs and cause problems later (in this case ICEs during LRA). It should never get that far. (We talked about this; just adding it here to archive it for posterity.) Segher