On Wed, Apr 22, 2020 at 11:26 AM Richard Sandiford <richard.sandif...@arm.com> wrote: > > Richard Biener via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > > On Mon, Apr 20, 2020 at 3:38 PM Segher Boessenkool > > <seg...@kernel.crashing.org> wrote: > >> > >> Hi! > >> > >> On Mon, Apr 20, 2020 at 09:56:34AM +0200, Richard Biener wrote: > >> > On Fri, Apr 17, 2020 at 10:51 PM Segher Boessenkool > >> > <seg...@kernel.crashing.org> wrote: > >> > > > Yeah well, but RTL is not in SSA form > >> > > > >> > > "Webs" are not the *same* as SSA, in a few crucial ways; but they serve > >> > > similar purposes: they both make code transformations easier to do. > >> > > Both do this by having more different (independent) names. > >> > > > >> > > > and there's no RTL IL verification > >> > > > in place to track degradation. > >> > > > >> > > Adding this isn't hard in principle. But currently it is violated all > >> > > over the place, including in backend code. > >> > > >> > It's a cheap excuse and clearly a lot of work. But we've done it for > >> > GIMPLE > >> > and it was clearly worth it. If only for documentation purposes. > >> > >> Yes, I very much agree :-) But how will we do this? Make it warnings > >> only, and have those opt-in (for a port) even? > > > > Add -fcheck-rtl, when you're ready (per port?) make it default for > > bootstrap. When you're even more "ready", turn it on with -fchecking > > (or --enable-checking=xyz). > > What kind of condition would we be checking? That no register has two > definitions in the same block? Or something stronger?
For the particular discussion no idea. But we generally lack verification of what is "valid" RTL and what is not. > Testing that -fweb would have no effect is expensive, since it requires > full UD chains. And there's a risk that optimisations could break the > condition accidentally. E.g.: > > if (cond) > { > x = ...; > ...use x...; > } > else > { > x = ...; > ...use x...; > } > ...use x...; // A, REG_DEAD x > > If anything managed to fold away the need for x in A (e.g. combine), > it would then be required to rename x in one of the if/else blocks. > > In some ways it feels like it would be easier to resurrect RTL SSA :-) > > Thanks, > Richard