From: Jason Merrill Date: Thu, 16 May 2002 05:02:35 +0000 (-0400) Subject: re PR c++/6381 (Missing assembler label) X-Git-Tag: releases/gcc-3.1.1~353 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c23299e52e3adcee60cd954e85af3fdfa285f4bc;p=thirdparty%2Fgcc.git 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 --- 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