From c23299e52e3adcee60cd954e85af3fdfa285f4bc Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 16 May 2002 01:02:35 -0400 Subject: [PATCH] re PR c++/6381 (Missing assembler label) PR c++/6381 * dwarf2out.c (rtl_for_decl_location): Only expand INTEGER_CST and REAL_CST. From-SVN: r53507 --- gcc/ChangeLog | 6 ++++-- gcc/dwarf2out.c | 17 +++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eba8d047b390..02ca41c684d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,8 @@ -2002-05-14 Release Manager +2002-05-08 Jason Merrill - * GCC 3.1 Released. + PR c++/6381 + * dwarf2out.c (rtl_for_decl_location): Only expand INTEGER_CST and + REAL_CST. 2002-05-14 Release Manager diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index afd9737e035b..01c88af88d7e 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -8941,21 +8941,18 @@ rtl_for_decl_location (decl) == strlen (TREE_STRING_POINTER (init)) + 1)) rtl = gen_rtx_CONST_STRING (VOIDmode, TREE_STRING_POINTER (init)); } - -#if 0 - /* We mustn't actually emit anything here, as we might not get a - chance to emit any symbols we refer to. For the release, don't - try to get this right. */ - if (rtl == NULL) + /* If the initializer is something that we know will expand into an + immediate RTL constant, expand it now. Expanding anything else + tends to produce unresolved symbols; see debug/5770 and c++/6381. */ + else if (TREE_CODE (DECL_INITIAL (decl)) == INTEGER_CST + || TREE_CODE (DECL_INITIAL (decl)) == REAL_CST) { rtl = expand_expr (DECL_INITIAL (decl), NULL_RTX, VOIDmode, EXPAND_INITIALIZER); - /* If expand_expr returned a MEM, we cannot use it, since - it won't be output, leading to unresolved symbol. */ + /* If expand_expr returns a MEM, it wasn't immediate. */ if (rtl && GET_CODE (rtl) == MEM) - rtl = NULL; + abort (); } -#endif } #ifdef ASM_SIMPLIFY_DWARF_ADDR -- 2.47.2