aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-08-04 06:49:08 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-08-04 06:49:08 +0000
commit56345d11f8a4aad25a11884fa16926f6d7f9db60 (patch)
treee59946fde6ba05da0685408aea327ccd16110b78 /gcc
parent59c724ac203d3be71612dbe499d124ebce721f23 (diff)
downloadgcc-56345d11f8a4aad25a11884fa16926f6d7f9db60.zip
gcc-56345d11f8a4aad25a11884fa16926f6d7f9db60.tar.gz
gcc-56345d11f8a4aad25a11884fa16926f6d7f9db60.tar.bz2
decl.c: Do not undefine IN_GCC_FRONTEND and do not include expr.h.
* gcc-interface/decl.c: Do not undefine IN_GCC_FRONTEND and do not include expr.h. (gnat_to_gnu_entity) <object>: Force address of -1 at the tree level for the debug-only entity. * gcc-interface/Make-lang.in (ada/decl.o): Adjust dependencies. From-SVN: r162854
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog8
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in4
-rw-r--r--gcc/ada/gcc-interface/decl.c21
3 files changed, 18 insertions, 15 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index bded46a..7e7dd1e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,11 @@
+2010-08-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c: Do not undefine IN_GCC_FRONTEND and do not
+ include expr.h.
+ (gnat_to_gnu_entity) <object>: Force address of -1 at the tree level
+ for the debug-only entity.
+ * gcc-interface/Make-lang.in (ada/decl.o): Adjust dependencies.
+
2010-08-03 Joseph Myers <joseph@codesourcery.com>
* gcc-interface/lang-specs.h: Don't pass -a options.
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 9a32b60..a8ce09f 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -1235,8 +1235,8 @@ ada/cuintp.o : ada/gcc-interface/cuintp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(COMPILER) -c $(ALL_COMPILERFLAGS) -I.. $(ALL_CPPFLAGS) $< -o $@
ada/decl.o : ada/gcc-interface/decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(FLAGS_H) toplev.h $(TARGET_H) $(EXPR_H) \
- $(TREE_INLINE_H) ada/gcc-interface/ada.h ada/types.h ada/atree.h \
+ $(TM_H) $(TREE_H) $(FLAGS_H) toplev.h $(TARGET_H) $(TREE_INLINE_H) \
+ ada/gcc-interface/ada.h ada/types.h ada/atree.h \
ada/elists.h ada/namet.h ada/nlists.h ada/repinfo.h ada/snames.h \
ada/stringt.h ada/uintp.h ada/fe.h ada/sinfo.h ada/einfo.h $(ADA_TREE_H) \
ada/gcc-interface/gigi.h gt-ada-decl.h
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 54d0222..13a3153 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -23,10 +23,6 @@
* *
****************************************************************************/
-/* FIXME: Still need to include rtl.h here (via expr.h) because this file
- actually generates RTL (search for gen_rtx_* in gnat_to_gnu_entity). */
-#undef IN_GCC_FRONTEND
-
#include "config.h"
#include "system.h"
#include "coretypes.h"
@@ -36,7 +32,6 @@
#include "toplev.h"
#include "ggc.h"
#include "target.h"
-#include "expr.h"
#include "tree-inline.h"
#include "ada.h"
@@ -600,18 +595,18 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& DECL_NAME (TYPE_NAME (gnu_type)) == exception_data_name_id)
gnu_type = except_type_node;
- /* For a debug renaming declaration, build a pure debug entity. */
+ /* For a debug renaming declaration, build a debug-only entity. */
if (Present (Debug_Renaming_Link (gnat_entity)))
{
- rtx addr;
+ /* Force a non-null value to make sure the symbol is retained. */
+ tree value = build1 (INDIRECT_REF, gnu_type,
+ build1 (NOP_EXPR,
+ build_pointer_type (gnu_type),
+ integer_minus_one_node));
gnu_decl = build_decl (input_location,
VAR_DECL, gnu_entity_name, gnu_type);
- /* The (MEM (CONST (0))) pattern is prescribed by STABS. */
- if (global_bindings_p ())
- addr = gen_rtx_CONST (VOIDmode, const0_rtx);
- else
- addr = stack_pointer_rtx;
- SET_DECL_RTL (gnu_decl, gen_rtx_MEM (Pmode, addr));
+ SET_DECL_VALUE_EXPR (gnu_decl, value);
+ DECL_HAS_VALUE_EXPR_P (gnu_decl) = 1;
gnat_pushdecl (gnu_decl, gnat_entity);
break;
}