mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
middle-end/95690 - avoid MEM_EXPRs for constants
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.
This commit is contained in:
9
gcc/testsuite/gfortran.dg/pr95690.f90
Normal file
9
gcc/testsuite/gfortran.dg/pr95690.f90
Normal file
@@ -0,0 +1,9 @@
|
||||
! { dg-do compile }
|
||||
module m
|
||||
contains
|
||||
subroutine s
|
||||
print *, (erfc) ! { dg-error "not a floating constant" }
|
||||
end
|
||||
function erfc()
|
||||
end
|
||||
end
|
||||
@@ -3399,7 +3399,6 @@ build_constant_desc (tree exp)
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user