The following avoids calling set_mem_attributes on the
DECL_INITIAL of a CONST_DECL which seems pointless since there
cannot be a sensible MEM_EXPR derived from that. We're overwriting
both other possibly useful info, alias-set and alignment immediately
so the following patch simply removes the call instead of making
the function deal with even more (unexpected) trees that are not
memory accesses.
2020-06-16 Richard Biener <rguenther@suse.de>
PR middle-end/95690
* varasm.c (build_constant_desc): Remove set_mem_attributes call.
* gfortran.dg/pr95690.f90: New testcase.
--- /dev/null
+! { dg-do compile }
+module m
+contains
+ subroutine s
+ print *, (erfc) ! { dg-error "not a floating constant" }
+ end
+ function erfc()
+ end
+end
TREE_CONSTANT_POOL_ADDRESS_P (symbol) = 1;
rtl = gen_const_mem (TYPE_MODE (TREE_TYPE (exp)), symbol);
- set_mem_attributes (rtl, exp, 1);
set_mem_alias_set (rtl, 0);
/* Putting EXP into the literal pool might have imposed a different