[PATCH] tree-sra: Do not refresh readonly decls (PR 100453)

Martin Jambor mjambor@suse.cz
Wed Jun 16 15:49:17 GMT 2021


Hi,

On Wed, Jun 16 2021, Jakub Jelinek wrote:
> On Tue, Jun 15, 2021 at 06:11:27PM +0200, Richard Biener wrote:
>> >--- a/gcc/tree-sra.c
>> >+++ b/gcc/tree-sra.c
>> >@@ -915,6 +915,12 @@ create_access (tree expr, gimple *stmt, bool
>> >write)
>> >if (!DECL_P (base) || !bitmap_bit_p (candidate_bitmap, DECL_UID
>> >(base)))
>> >     return NULL;
>> > 
>> >+  if (write && TREE_READONLY (base))
>> >+    {
>> >+      disqualify_candidate (base, "Encountered a store to a read-only
>> >decl.");
>
> Wouldn't this be a useful point to also emit some warning (with
> some TREE_NO_WARNING prevention) that some particular statement modifies
> a const decl?
> I guess it can be warned elsewhere though.

I would prefer it to be elsewhere.

> As testcases one could use https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100994#c4
> and #c5.  Though would be nice if we diagnose that even without those -fno-*
> options.
>

My holy grail would be to actually add a condition to the gimple
verifier that TREE_READONLY decl is never on a LHS of an assignment or a
call (or generally not seen from the store callback of
walk_stmt_load_store_addr_ops).

Of course, in order to do that, either the gimplifier or the pass that
propagated a TREE_READONLY decl into a store would have to drop the flag
and at that point could emit a warning.

But seeing things like the addition in a0d371a2514 I am afraid that
getting there might be difficult.

Martin


More information about the Gcc-patches mailing list