aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-02-27 10:45:30 +0100
committerJakub Jelinek <jakub@redhat.com>2020-02-27 10:45:30 +0100
commit1956773cc655dfcba8d310066d3f6585dd4b8972 (patch)
tree97912090e49accaad698355da78281533048d1a0 /gcc/dwarf2out.c
parent5f9cd512c4278621435cce486dd00248ea2e821c (diff)
downloadgcc-1956773cc655dfcba8d310066d3f6585dd4b8972.zip
gcc-1956773cc655dfcba8d310066d3f6585dd4b8972.tar.gz
gcc-1956773cc655dfcba8d310066d3f6585dd4b8972.tar.bz2
gimplify: Don't optimize register const vars to static [PR93949]
The following testcase is rejected, while it was accepted in 3.4 and earlier (before tree-ssa merge). The problem is that we decide to promote the const variable to TREE_STATIC, but TREE_STATIC DECL_REGISTER VAR_DECLs may only be the global register vars and so assemble_variable/make_decl_rtl diagnoses it. Either we do what the following patch does, where we could consider register as a hint the user doesn't want such optimization, because if something is forced static, it is not "register" anymore and register static is not valid in C either, or we could clear DECL_REGISTER instead, but would still need to punt at least on DECL_HARD_REGISTER cases. 2020-02-27 Jakub Jelinek <jakub@redhat.com> PR c/93949 * gimplify.c (gimplify_init_constructor): Don't promote readonly DECL_REGISTER variables to TREE_STATIC. * gcc.c-torture/compile/pr93949.c: New test.
Diffstat (limited to 'gcc/dwarf2out.c')
0 files changed, 0 insertions, 0 deletions