From 15c14d500dc6411adbac6c48462a3365f04fcfa6 Mon Sep 17 00:00:00 2001 From: kenner Date: Mon, 1 Nov 1993 12:38:45 +0000 Subject: [PATCH] (expand_decl_init): If CONST_DECL, don't generate any code, but call expand_expr if DECL_INITIAL is a constant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5962 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/stmt.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gcc/stmt.c b/gcc/stmt.c index 8b07813..e6caa9f 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -3604,6 +3604,20 @@ expand_decl_init (decl) { int was_used = TREE_USED (decl); + /* If this is a CONST_DECL, we don't have to generate any code, but + if DECL_INITIAL is a constant, call expand_expr to force TREE_CST_RTL + to be set while in the obstack containing the constant. If we don't + do this, we can lose if we have functions nested three deep and the middle + function makes a CONST_DECL whose DECL_INITIAL is a STRING_CST while + the innermost function is the first to expand that STRING_CST. */ + if (TREE_CODE (decl) == CONST_DECL) + { + if (DECL_INITIAL (decl) && TREE_CONSTANT (DECL_INITIAL (decl))) + expand_expr (DECL_INITIAL (decl), NULL_RTX, VOIDmode, + EXPAND_INITIALIZER); + return; + } + if (TREE_STATIC (decl)) return; -- 2.7.4