OSDN Git Service

* gcc-interface/decl.c: Do not undefine IN_GCC_FRONTEND and do not
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Aug 2010 06:49:08 +0000 (06:49 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Aug 2010 06:49:08 +0000 (06:49 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162854 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gcc-interface/Make-lang.in
gcc/ada/gcc-interface/decl.c

index bded46a..7e7dd1e 100644 (file)
@@ -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.
index 9a32b60..a8ce09f 100644 (file)
@@ -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
index 54d0222..13a3153 100644 (file)
  *                                                                          *
  ****************************************************************************/
 
-/* 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;
          }