From: Ulrich Weigand Date: Wed, 10 Mar 2004 15:12:10 +0000 (+0000) Subject: dbxout.c (dbxout_symbol_location): Do not output references to optimized-out constant... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=452c159ed14cfe15a3bbf76bb988d454be2cb923;p=platform%2Fupstream%2Fgcc.git dbxout.c (dbxout_symbol_location): Do not output references to optimized-out constant pool symbols. * dbxout.c (dbxout_symbol_location): Do not output references to optimized-out constant pool symbols. From-SVN: r79258 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a42379a..48f98f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-03-10 Ulrich Weigand + + * dbxout.c (dbxout_symbol_location): Do not output references + to optimized-out constant pool symbols. + 2004-03-10 Andreas Schwab * config/ia64/ia64.md (divsi3, udivsi3): Remove unused variable diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 482470a..2e7c1eb 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -2503,11 +2503,27 @@ dbxout_symbol_location (tree decl, tree type, const char *suffix, rtx home) if (GET_CODE (current_sym_addr) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (current_sym_addr)) { - rtx tmp = get_pool_constant (current_sym_addr); + bool marked; + rtx tmp = get_pool_constant_mark (current_sym_addr, &marked); - if (GET_CODE (tmp) == SYMBOL_REF - || GET_CODE (tmp) == LABEL_REF) - current_sym_addr = tmp; + if (GET_CODE (tmp) == SYMBOL_REF) + { + current_sym_addr = tmp; + if (CONSTANT_POOL_ADDRESS_P (current_sym_addr)) + get_pool_constant_mark (current_sym_addr, &marked); + else + marked = true; + } + else if (GET_CODE (tmp) == LABEL_REF) + { + current_sym_addr = tmp; + marked = true; + } + + /* If all references to the constant pool were optimized + out, we just ignore the symbol. */ + if (!marked) + return 0; } /* Ultrix `as' seems to need this. */