Hi,

the Ada part of the Ada front-end is compiled with -gnata, which boils down to 
a form of dynamic type checking for the AST, i.e. something roughly equivalent 
to Tree checking for the front-ends of the C family of compilers.  This patch 
aligns the Ada compiler with them by disabling it in --enable-checking=release 
mode.  Issues flagged by this checking are usually benign on release branches 
and gigi has a slew of gcc_assert's that stop the compiler in serious cases.

Bootstrapped on x86_64-suse-linux (w and w/o --enable-checking=release), OK 
for the mainline?


2013-01-11  Eric Botcazou  <ebotca...@adacore.com>

        * Makefile.tpl (BOOT_ADAFLAGS): Remove -gnata.
        * Makefile.in: Regenerate.


gcc/
2013-01-11  Eric Botcazou  <ebotca...@adacore.com>

        * configure.ac (Tree checking): Set TREECHECKING to yes if enabled.
        Substitute TREECHECKING.
        * configure: Regenerate.
        * Makefile.in (TREECHECKING): New.


gcc/ada/
2013-01-11  Eric Botcazou  <ebotca...@adacore.com>

        * gcc-interface/Make-lang.in (COMMON_ADAFLAGS): Remove -gnata.
        (CHECKING_ADAFLAGS): New.
        (ALL_ADAFLAGS): Include CHECKING_ADAFLAGS.


-- 
Eric Botcazou
Index: gcc/ada/gcc-interface/Make-lang.in
===================================================================
--- gcc/ada/gcc-interface/Make-lang.in	(revision 195091)
+++ gcc/ada/gcc-interface/Make-lang.in	(working copy)
@@ -45,7 +45,12 @@ RMDIR = rm -rf
 
 
 # Extra flags to pass to recursive makes.
-COMMON_ADAFLAGS= -gnatpg -gnata
+COMMON_ADAFLAGS= -gnatpg
+ifeq ($(TREECHECKING),)
+CHECKING_ADAFLAGS=
+else
+CHECKING_ADAFLAGS= -gnata
+endif
 WARN_ADAFLAGS= -W -Wall
 
 # For native builds, the base compiler might be old and we need to arrange for
@@ -59,7 +64,8 @@ else
 ADAFLAGS= $(COMMON_ADAFLAGS)
 endif
 
-ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(WARN_ADAFLAGS)
+ALL_ADAFLAGS = \
+  $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
 FORCE_DEBUG_ADAFLAGS = -g
 ADA_CFLAGS =
 ADA_INCLUDES = -nostdinc -I- -I. -Iada -I$(srcdir)/ada -I$(srcdir)/ada/gcc-interface
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac	(revision 195012)
+++ gcc/configure.ac	(working copy)
@@ -471,6 +471,7 @@ if test x$ac_tree_checking != x ; then
    routines will also be enabled by this option.
    ])
   TREEBROWSER=tree-browser.o
+  TREECHECKING=yes
 fi
 if test x$ac_types_checking != x ; then
   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
@@ -479,6 +480,7 @@ if test x$ac_types_checking != x ; then
    ])
 fi
 AC_SUBST(TREEBROWSER)
+AC_SUBST(TREECHECKING)
 if test x$ac_rtl_checking != x ; then
   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
 [Define if you want all operations on RTL (the basic data structure
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in	(revision 195012)
+++ gcc/Makefile.in	(working copy)
@@ -1487,6 +1487,10 @@ ALL_HOST_OBJS = $(ALL_HOST_FRONTEND_OBJS
 BACKEND = libbackend.a main.o @TREEBROWSER@ libcommon-target.a libcommon.a \
 	$(CPPLIB) $(LIBDECNUMBER)
 
+# This is defined to "yes" if Tree checking is enabled, which roughly means
+# front-end checking.
+TREECHECKING = @TREECHECKING@
+
 MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
  insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
  insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
Index: Makefile.tpl
===================================================================
--- Makefile.tpl	(revision 195012)
+++ Makefile.tpl	(working copy)
@@ -367,7 +367,7 @@ BUILD_PREFIX_1 = @BUILD_PREFIX_1@
 # here so that they can be overridden by Makefile fragments.
 BOOT_CFLAGS= -g -O2
 BOOT_LDFLAGS=
-BOOT_ADAFLAGS=-gnatpg -gnata
+BOOT_ADAFLAGS= -gnatpg
 
 AWK = @AWK@
 SED = @SED@

Reply via email to