diff options
author | Joern Rennecke <joern.rennecke@st.com> | 2009-04-07 18:32:19 +0000 |
---|---|---|
committer | Joern Rennecke <joern.rennecke@st.com> | 2009-04-07 18:32:19 +0000 |
commit | c8f3e958cb3a3ff38bcb98fc1f906b4590d44769 (patch) | |
tree | d81c0729241f666fed195c5d3ab2cf9a74bc566b | |
parent | 21c32a2af97610f3ef27b15eb5475406aa7491cf (diff) |
Merge gcc-in-cxx branch into multi-target-4_4-branch.
svn merge svn+ssh://amylaar@gcc.gnu.org/svn/gcc/trunk@144602 svn+ssh://amylaar@gcc.gnu.org/svn/gcc/branches/gcc-in-cxx@145084 .
and resolved conflicts:
C gcc/ChangeLog (entry moved to gcc/ChangeLog.cxx)
C gcc/cp/cp-tree.h
C gcc/df.h
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/multi-target-4_4-branch@145698 138bc75d-0d04-0410-961f-82ee72b054a4
240 files changed, 8702 insertions, 2352 deletions
diff --git a/ChangeLog.cxx b/ChangeLog.cxx new file mode 100644 index 00000000000..dfe38d31df5 --- /dev/null +++ b/ChangeLog.cxx @@ -0,0 +1,26 @@ +2009-03-04 Ian Lance Taylor <iant@google.com> + + * Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Add -L option to CXX and + CXX_FOR_BUILD to pick up previous libstdc++. Set RPATH_ENVVAR to + point to previous libstdc++. + * Makefile.in: Rebuild. + +2009-02-04 Ian Lance Taylor <iant@google.com> + + * Makefile.def: Bootstrap the libstdc++-v3 target module. + * Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Add CXX and + CXX_FOR_BUILD. + (POSTSTAGE1_FLAGS_TO_PASS): Likewise. + * Makefile.in: Rebuild. + +2009-01-30 Ian Lance Taylor <iant@google.com> + + * configure.ac: Don't add c++ to missing_languages. Don't use + -fkeep-inline-functions. + * configure: Rebuild. + +2008-06-18 Ian Lance Taylor <iant@google.com> + + * configure.ac: Build C++ in stage 1. + * configure: Rebuild. + diff --git a/Makefile.def b/Makefile.def index a0a5266d218..9acfd245cf4 100644 --- a/Makefile.def +++ b/Makefile.def @@ -138,7 +138,10 @@ host_modules= { module= libtermcap; no_check=true; host_modules= { module= utils; no_check=true; }; host_modules= { module= gnattools; }; -target_modules = { module= libstdc++-v3; lib_path=.libs; raw_cxx=true; }; +target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=.libs; + raw_cxx=true; }; target_modules = { module= libmudflap; lib_path=.libs; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; diff --git a/Makefile.in b/Makefile.in index 26d1d01b584..2d1a68a49d3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -214,7 +214,26 @@ POSTSTAGE1_HOST_EXPORTS = \ $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ -B$(build_tooldir)/bin/"; export CC_FOR_BUILD; \ - LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ + -nostdinc++ \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ + CXX_FOR_BUILD="$(STAGE_CC_WRAPPER) \ + $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ \ + -nostdinc++ \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; \ + export CXX_FOR_BUILD; \ + LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; \ + $(RPATH_ENVVAR)=`echo "$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:$$$(RPATH_ENVVAR)"| sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \ + export $(RPATH_ENVVAR); # Target libraries are put under this directory: TARGET_SUBDIR = @target_subdir@ @@ -625,6 +644,7 @@ X11_FLAGS_TO_PASS = \ POSTSTAGE1_FLAGS_TO_PASS = \ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind" \ LDFLAGS="$(BOOT_LDFLAGS)" \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" @@ -909,7 +929,9 @@ all-host: maybe-all-gnattools .PHONY: all-target +@if target-libstdc++-v3-no-bootstrap all-target: maybe-all-target-libstdc++-v3 +@endif target-libstdc++-v3-no-bootstrap all-target: maybe-all-target-libmudflap all-target: maybe-all-target-libssp all-target: maybe-all-target-newlib @@ -43068,7 +43090,6 @@ configure-target-libstdc++-v3: stage_current @if target-libstdc++-v3 maybe-configure-target-libstdc++-v3: configure-target-libstdc++-v3 configure-target-libstdc++-v3: - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ echo "Checking multilib configuration for libstdc++-v3..."; \ @@ -43105,6 +43126,351 @@ configure-target-libstdc++-v3: +.PHONY: configure-stage1-target-libstdc++-v3 maybe-configure-stage1-target-libstdc++-v3 +maybe-configure-stage1-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 +configure-stage1-target-libstdc++-v3: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + CFLAGS="$(STAGE1_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage 1 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + \ + --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3 +maybe-configure-stage2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 +configure-stage2-target-libstdc++-v3: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage 2 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stageb2g0-target-libstdc++-v3 maybe-configure-stageb2g0-target-libstdc++-v3 +maybe-configure-stageb2g0-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stageb2g0-target-libstdc++-v3: configure-stageb2g0-target-libstdc++-v3 +configure-stageb2g0-target-libstdc++-v3: + @[ $(current_stage) = stageb2g0 ] || $(MAKE) stageb2g0-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE2_LIBCFLAGS) -g0 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_LIBCFLAGS) -g0 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage b2g0 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3 +maybe-configure-stage3-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 +configure-stage3-target-libstdc++-v3: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE3_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage 3 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stageb3g2-target-libstdc++-v3 maybe-configure-stageb3g2-target-libstdc++-v3 +maybe-configure-stageb3g2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stageb3g2-target-libstdc++-v3: configure-stageb3g2-target-libstdc++-v3 +configure-stageb3g2-target-libstdc++-v3: + @[ $(current_stage) = stageb3g2 ] || $(MAKE) stageb3g2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE3_LIBCFLAGS) -g2 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_LIBCFLAGS) -g2 $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage b3g2 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3 +maybe-configure-stage4-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 +configure-stage4-target-libstdc++-v3: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE4_CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE4_CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage 4 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3 +maybe-configure-stageprofile-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 +configure-stageprofile-target-libstdc++-v3: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_LIBCFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage profile in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3 +maybe-configure-stagefeedback-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 +configure-stagefeedback-target-libstdc++-v3: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + CFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + echo Configuring stage feedback in $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ + libsrcdir="$$s/libstdc++-v3"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + @stage2_werror_flag@ +@endif target-libstdc++-v3-bootstrap + + + .PHONY: all-target-libstdc++-v3 maybe-all-target-libstdc++-v3 @@ -43116,7 +43482,6 @@ all-target-libstdc++-v3: stage_current TARGET-target-libstdc++-v3=all maybe-all-target-libstdc++-v3: all-target-libstdc++-v3 all-target-libstdc++-v3: configure-target-libstdc++-v3 - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ @@ -43127,6 +43492,310 @@ all-target-libstdc++-v3: configure-target-libstdc++-v3 +.PHONY: all-stage1-target-libstdc++-v3 maybe-all-stage1-target-libstdc++-v3 +.PHONY: clean-stage1-target-libstdc++-v3 maybe-clean-stage1-target-libstdc++-v3 +maybe-all-stage1-target-libstdc++-v3: +maybe-clean-stage1-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage1-target-libstdc++-v3: all-stage1-target-libstdc++-v3 +all-stage1: all-stage1-target-libstdc++-v3 +TARGET-stage1-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE1_CFLAGS)" CXXFLAGS="$(STAGE1_CFLAGS)" \ + LIBCFLAGS="$(STAGE1_LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(STAGE1_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stage1-target-libstdc++-v3) + +maybe-clean-stage1-target-libstdc++-v3: clean-stage1-target-libstdc++-v3 +clean-stage1: clean-stage1-target-libstdc++-v3 +clean-stage1-target-libstdc++-v3: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage1-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage2-target-libstdc++-v3 maybe-all-stage2-target-libstdc++-v3 +.PHONY: clean-stage2-target-libstdc++-v3 maybe-clean-stage2-target-libstdc++-v3 +maybe-all-stage2-target-libstdc++-v3: +maybe-clean-stage2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage2-target-libstdc++-v3: all-stage2-target-libstdc++-v3 +all-stage2: all-stage2-target-libstdc++-v3 +TARGET-stage2-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS)" CXXFLAGS="$(STAGE2_CFLAGS)" \ + LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stage2-target-libstdc++-v3) + +maybe-clean-stage2-target-libstdc++-v3: clean-stage2-target-libstdc++-v3 +clean-stage2: clean-stage2-target-libstdc++-v3 +clean-stage2-target-libstdc++-v3: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage2-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stageb2g0-target-libstdc++-v3 maybe-all-stageb2g0-target-libstdc++-v3 +.PHONY: clean-stageb2g0-target-libstdc++-v3 maybe-clean-stageb2g0-target-libstdc++-v3 +maybe-all-stageb2g0-target-libstdc++-v3: +maybe-clean-stageb2g0-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stageb2g0-target-libstdc++-v3: all-stageb2g0-target-libstdc++-v3 +all-stageb2g0: all-stageb2g0-target-libstdc++-v3 +TARGET-stageb2g0-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stageb2g0-target-libstdc++-v3: configure-stageb2g0-target-libstdc++-v3 + @[ $(current_stage) = stageb2g0 ] || $(MAKE) stageb2g0-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS) -g0" CXXFLAGS="$(STAGE2_CFLAGS) -g0" \ + LIBCFLAGS="$(STAGE2_LIBCFLAGS) -g0" \ + CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" \ + CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS) -g0" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stageb2g0-target-libstdc++-v3) + +maybe-clean-stageb2g0-target-libstdc++-v3: clean-stageb2g0-target-libstdc++-v3 +clean-stageb2g0: clean-stageb2g0-target-libstdc++-v3 +clean-stageb2g0-target-libstdc++-v3: + @if [ $(current_stage) = stageb2g0 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stageb2g0-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stageb2g0-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage3-target-libstdc++-v3 maybe-all-stage3-target-libstdc++-v3 +.PHONY: clean-stage3-target-libstdc++-v3 maybe-clean-stage3-target-libstdc++-v3 +maybe-all-stage3-target-libstdc++-v3: +maybe-clean-stage3-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage3-target-libstdc++-v3: all-stage3-target-libstdc++-v3 +all-stage3: all-stage3-target-libstdc++-v3 +TARGET-stage3-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS)" CXXFLAGS="$(STAGE3_CFLAGS)" \ + LIBCFLAGS="$(STAGE3_LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stage3-target-libstdc++-v3) + +maybe-clean-stage3-target-libstdc++-v3: clean-stage3-target-libstdc++-v3 +clean-stage3: clean-stage3-target-libstdc++-v3 +clean-stage3-target-libstdc++-v3: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage3-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stageb3g2-target-libstdc++-v3 maybe-all-stageb3g2-target-libstdc++-v3 +.PHONY: clean-stageb3g2-target-libstdc++-v3 maybe-clean-stageb3g2-target-libstdc++-v3 +maybe-all-stageb3g2-target-libstdc++-v3: +maybe-clean-stageb3g2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stageb3g2-target-libstdc++-v3: all-stageb3g2-target-libstdc++-v3 +all-stageb3g2: all-stageb3g2-target-libstdc++-v3 +TARGET-stageb3g2-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stageb3g2-target-libstdc++-v3: configure-stageb3g2-target-libstdc++-v3 + @[ $(current_stage) = stageb3g2 ] || $(MAKE) stageb3g2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS) -g2" CXXFLAGS="$(STAGE3_CFLAGS) -g2" \ + LIBCFLAGS="$(STAGE3_LIBCFLAGS) -g2" \ + CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" \ + CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -g2" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stageb3g2-target-libstdc++-v3) + +maybe-clean-stageb3g2-target-libstdc++-v3: clean-stageb3g2-target-libstdc++-v3 +clean-stageb3g2: clean-stageb3g2-target-libstdc++-v3 +clean-stageb3g2-target-libstdc++-v3: + @if [ $(current_stage) = stageb3g2 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stageb3g2-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stageb3g2-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage4-target-libstdc++-v3 maybe-all-stage4-target-libstdc++-v3 +.PHONY: clean-stage4-target-libstdc++-v3 maybe-clean-stage4-target-libstdc++-v3 +maybe-all-stage4-target-libstdc++-v3: +maybe-clean-stage4-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage4-target-libstdc++-v3: all-stage4-target-libstdc++-v3 +all-stage4: all-stage4-target-libstdc++-v3 +TARGET-stage4-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE4_CFLAGS)" CXXFLAGS="$(STAGE4_CFLAGS)" \ + LIBCFLAGS="$(STAGE4_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(STAGE4_CFLAGS)" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stage4-target-libstdc++-v3) + +maybe-clean-stage4-target-libstdc++-v3: clean-stage4-target-libstdc++-v3 +clean-stage4: clean-stage4-target-libstdc++-v3 +clean-stage4-target-libstdc++-v3: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage4-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stageprofile-target-libstdc++-v3 maybe-all-stageprofile-target-libstdc++-v3 +.PHONY: clean-stageprofile-target-libstdc++-v3 maybe-clean-stageprofile-target-libstdc++-v3 +maybe-all-stageprofile-target-libstdc++-v3: +maybe-clean-stageprofile-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stageprofile-target-libstdc++-v3: all-stageprofile-target-libstdc++-v3 +all-stageprofile: all-stageprofile-target-libstdc++-v3 +TARGET-stageprofile-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" CXXFLAGS="$(STAGE2_CFLAGS) -fprofile-generate" \ + LIBCFLAGS="$(STAGE2_LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" \ + CXXFLAGS_FOR_TARGET="$(STAGE2_LIBCFLAGS)" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stageprofile-target-libstdc++-v3) + +maybe-clean-stageprofile-target-libstdc++-v3: clean-stageprofile-target-libstdc++-v3 +clean-stageprofile: clean-stageprofile-target-libstdc++-v3 +clean-stageprofile-target-libstdc++-v3: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stageprofile-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stagefeedback-target-libstdc++-v3 maybe-all-stagefeedback-target-libstdc++-v3 +.PHONY: clean-stagefeedback-target-libstdc++-v3 maybe-clean-stagefeedback-target-libstdc++-v3 +maybe-all-stagefeedback-target-libstdc++-v3: +maybe-clean-stagefeedback-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stagefeedback-target-libstdc++-v3: all-stagefeedback-target-libstdc++-v3 +all-stagefeedback: all-stagefeedback-target-libstdc++-v3 +TARGET-stagefeedback-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS) -fprofile-use" CXXFLAGS="$(STAGE3_CFLAGS) -fprofile-use" \ + LIBCFLAGS="$(STAGE3_LIBCFLAGS) -fprofile-use" \ + CFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" \ + CXXFLAGS_FOR_TARGET="$(STAGE3_LIBCFLAGS) -fprofile-use" $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-stagefeedback-target-libstdc++-v3) + +maybe-clean-stagefeedback-target-libstdc++-v3: clean-stagefeedback-target-libstdc++-v3 +clean-stagefeedback: clean-stagefeedback-target-libstdc++-v3 +clean-stagefeedback-target-libstdc++-v3: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stagefeedback-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + clean +@endif target-libstdc++-v3-bootstrap + + + + .PHONY: check-target-libstdc++-v3 maybe-check-target-libstdc++-v3 @@ -55269,7 +55938,14 @@ restrap:: all # Generic dependencies for target modules on host stuff, especially gcc @if gcc-bootstrap -configure-target-libstdc++-v3: stage_last +configure-stage1-target-libstdc++-v3: maybe-all-stage1-gcc +configure-stage2-target-libstdc++-v3: maybe-all-stage2-gcc +configure-stageb2g0-target-libstdc++-v3: maybe-all-stageb2g0-gcc +configure-stage3-target-libstdc++-v3: maybe-all-stage3-gcc +configure-stageb3g2-target-libstdc++-v3: maybe-all-stageb3g2-gcc +configure-stage4-target-libstdc++-v3: maybe-all-stage4-gcc +configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc +configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc configure-target-libmudflap: stage_last configure-target-libssp: stage_last configure-target-newlib: stage_last @@ -56142,6 +56818,14 @@ all-target-winsup: maybe-all-target-libtermcap @if gcc-bootstrap +configure-stage1-target-libstdc++-v3: maybe-all-stage1-target-libgcc +configure-stage2-target-libstdc++-v3: maybe-all-stage2-target-libgcc +configure-stageb2g0-target-libstdc++-v3: maybe-all-stageb2g0-target-libgcc +configure-stage3-target-libstdc++-v3: maybe-all-stage3-target-libgcc +configure-stageb3g2-target-libstdc++-v3: maybe-all-stageb3g2-target-libgcc +configure-stage4-target-libstdc++-v3: maybe-all-stage4-target-libgcc +configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-target-libgcc +configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-target-libgcc @endif gcc-bootstrap @if gcc-no-bootstrap diff --git a/Makefile.tpl b/Makefile.tpl index acb349ff742..98f7f04d343 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -217,7 +217,26 @@ POSTSTAGE1_HOST_EXPORTS = \ $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ -B$(build_tooldir)/bin/"; export CC_FOR_BUILD; \ - LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ + -nostdinc++ \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ + CXX_FOR_BUILD="$(STAGE_CC_WRAPPER) \ + $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ \ + -nostdinc++ \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; \ + export CXX_FOR_BUILD; \ + LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; \ + $(RPATH_ENVVAR)=`echo "$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:$$$(RPATH_ENVVAR)"| sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \ + export $(RPATH_ENVVAR); # Target libraries are put under this directory: TARGET_SUBDIR = @target_subdir@ @@ -513,6 +532,7 @@ X11_FLAGS_TO_PASS = \ POSTSTAGE1_FLAGS_TO_PASS = \ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind" \ LDFLAGS="$(BOOT_LDFLAGS)" \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" diff --git a/configure b/configure index ecbbce689ba..027f4570cfb 100755 --- a/configure +++ b/configure @@ -5065,8 +5065,8 @@ fi -# By default, C is the only stage 1 language. -stage1_languages=,c, +# By default, C and C++ are the only stage 1 languages. +stage1_languages=,c,c++, # Figure out what language subdirectories are present. # Look if the user specified --enable-languages="..."; if not, use @@ -5128,9 +5128,9 @@ if test -d ${srcdir}/gcc; then esac done - new_enable_languages=,c, - missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ ` - potential_languages=,c, + new_enable_languages=,c,c++, + missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ -e s/,c++,/,/ ` + potential_languages=,c,c++, for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do case ${lang_frag} in @@ -12433,69 +12433,24 @@ case $build in esac # This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. -if test "$GCC" = yes; then - saved_CFLAGS="$CFLAGS" - - # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. - CFLAGS="$CFLAGS -fkeep-inline-functions" - echo "$as_me:$LINENO: checking whether -fkeep-inline-functions is supported" >&5 -echo $ECHO_N "checking whether -fkeep-inline-functions is supported... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if (__GNUC__ < 3) \ - || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3 \ - || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 1))) -#error http://gcc.gnu.org/PR29382 -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; stage1_cflags="$stage1_cflags -fkeep-inline-functions" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - - CFLAGS="$saved_CFLAGS" -fi +#if test "$GCC" = yes; then +# saved_CFLAGS="$CFLAGS" +# +# # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. +# CFLAGS="$CFLAGS -fkeep-inline-functions" +# AC_MSG_CHECKING([whether -fkeep-inline-functions is supported]) +# AC_TRY_COMPILE([ +##if (__GNUC__ < 3) \ +# || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3 \ +# || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 1))) +##error http://gcc.gnu.org/PR29382 +##endif +# ],, +# [AC_MSG_RESULT([yes]); stage1_cflags="$stage1_cflags -fkeep-inline-functions"], +# [AC_MSG_RESULT([no])]) +# +# CFLAGS="$saved_CFLAGS" +#fi diff --git a/configure.ac b/configure.ac index a34cbe1175b..1f8cce83331 100644 --- a/configure.ac +++ b/configure.ac @@ -1438,8 +1438,8 @@ AC_SUBST(clooglibs) AC_SUBST(clooginc) -# By default, C is the only stage 1 language. -stage1_languages=,c, +# By default, C and C++ are the only stage 1 languages. +stage1_languages=,c,c++, # Figure out what language subdirectories are present. # Look if the user specified --enable-languages="..."; if not, use @@ -1501,9 +1501,9 @@ if test -d ${srcdir}/gcc; then esac done - new_enable_languages=,c, - missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ ` - potential_languages=,c, + new_enable_languages=,c,c++, + missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ -e s/,c++,/,/ ` + potential_languages=,c,c++, for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do case ${lang_frag} in @@ -2891,24 +2891,24 @@ case $build in esac # This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. -if test "$GCC" = yes; then - saved_CFLAGS="$CFLAGS" - - # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. - CFLAGS="$CFLAGS -fkeep-inline-functions" - AC_MSG_CHECKING([whether -fkeep-inline-functions is supported]) - AC_TRY_COMPILE([ -#if (__GNUC__ < 3) \ - || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3 \ - || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 1))) -#error http://gcc.gnu.org/PR29382 -#endif - ],, - [AC_MSG_RESULT([yes]); stage1_cflags="$stage1_cflags -fkeep-inline-functions"], - [AC_MSG_RESULT([no])]) - - CFLAGS="$saved_CFLAGS" -fi +#if test "$GCC" = yes; then +# saved_CFLAGS="$CFLAGS" +# +# # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. +# CFLAGS="$CFLAGS -fkeep-inline-functions" +# AC_MSG_CHECKING([whether -fkeep-inline-functions is supported]) +# AC_TRY_COMPILE([ +##if (__GNUC__ < 3) \ +# || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3 \ +# || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ < 1))) +##error http://gcc.gnu.org/PR29382 +##endif +# ],, +# [AC_MSG_RESULT([yes]); stage1_cflags="$stage1_cflags -fkeep-inline-functions"], +# [AC_MSG_RESULT([no])]) +# +# CFLAGS="$saved_CFLAGS" +#fi AC_SUBST(stage1_cflags) diff --git a/gcc/ChangeLog.cxx b/gcc/ChangeLog.cxx new file mode 100644 index 00000000000..0672ecda62f --- /dev/null +++ b/gcc/ChangeLog.cxx @@ -0,0 +1,977 @@ +2009-03-25 Jerry Quinn <jlquinn@cerberus.qb5.org> + + * config/i386/i386.c (ix86_function_specific_save): Don't check + range of enum values. + +2009-03-12 Tobias Schlüter <tobi@gcc.gnu.org> + + * config/i386/x-darwin: Use ALL_CXXFLAGS. + +2009-03-11 Tobias Schlüter <tobi@gcc.gnu.org> + + * config/t-darwin: Use ALL_CXXFLAGS instead of ALL_CFLAGS. + * config/x-darwin: Same. + +2009-03-10 Tobias Schlüter <tobi@gcc.gnu.org> + + * config/t-darwin: Use CXX as compiler. + * config/x-darwin: Likewise. + * config/i386/x-darwin: Same. + +2009-03-06 Ian Lance Taylor <iant@google.com> + + * toplev.h (floor_log2, exact_log2): Don't define as extern for + C++. + +2009-03-04 Ian Lance Taylor <iant@google.com> + + * config/i386/i386.md (isinf<mode>2): Change slot to enum type. + + * cp-tree.h (finish_call_expr): Correct declaration. + + * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast. + * ipa-struct-reorg.c (create_general_new_stmt): Initialize rhs. + * ira-build.c (copy_info_to_removed_store_destinations): + Initialize parent_a. + * varasm.c (const_rtx_hash_1): Don't declare 'shift' as const. + * config/i386/i386.c (ix86_expand_builtin): Change fcode to enum + type. + + * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Declare as extern + if C++. + + * vec.c (vec_gc_o_reserve_1): Don't initialize alloc to itself. + + * gcc.c (process_command, main): Use CONST_CAST. + * collect2.c (main, scan_prog_file): Likewise. + + * bitmap.c (bitmap_clear): Don't declare as inline. + * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise. + + * cp/cvt.c (convert_to_void): Only warn about ?: operator with + no effect if neither side has an effect. + + * objc/Make-lang.in (cc1obj-dummy$(exeext)): Link with $(CXX). + (cc1obj$(exeext)): Likewise. + * objc/objc-act.c (objc_rewrite_function_call): Change params to + tree. + (objc_gimplify_expr): Change return type to int. + * objc/objc-act.h (objc_gimplify_expr): Update declaration. + + * java/jcf-io.c (find_class): Use CONST_CAST. + + * fortran/Make-lang.in (gfortranspec.o): Compile with $(CXX). + (fortran/cpp.o): Likewise. + (gfortran$(exeext)): Link with $(CXX). + (f951$(exeext)): Likewise. + * fortran/gfortran.h (enum omp_sched_kind): Move out of struct + gfc_omp_clauses. + (enum omp_sharing): Likewise. + (enum gfc_symbol_type): Move out of struct gfc_gsymbol. + (enum gfc_array_ref_dimen_type): Move out of strutc + gfc_array_ref. + * fortran/cpp.c (struct gfc_cpp_option_data): Give name to + anonymous struct. + * fortran/decl.c (build_struct): Initialize first_len. + (match_attr_spec): Change variable 'd' to int. + (add_global_entry): Change variable 'type' to gfc_symbol_type. + * fortran/dump-parse-tree.c (show_namespace): Change variable 'op' + to int. + * fortran/interface.c (gfc_check_interfaces): Change loop to use + int type rather than enum type. + * fortran/module.c (enum rsym_state, enum wsym_state): Move out of + struct pointer_info. + (mio_array_ref, mio_symbol): Add casts to enum type. + (read_module): Change variable 'i' to int. + (write_module): Likewise. + (import_iso_c_binding_module): Add cast to enum type. + * fortran/parse.c (enum state_order): Move out of st_state + struct. + * fortran/resolve.c (resolve_global_procedure): Change variable + 'type' to gfc_symbol_type. + (check_host_association): Initialize tail. + * fortran/symbol.c (gfc_get_namespace): Change variable 'in' to + int. + (gfc_free_namespace): Change variable 'i' to int. + * fortran/trans-intrinsic.c (DEFINE_MATH_BUILTIN): Add casts to + enum type. + * fortran/trans-io.c (st_parameter_field): Add casts to enum + type. + (gfc_build_st_parameter): Change variable 'type' to int. + (gfc_build_io_library_fndecls): Change variable 'ptype' to int. + * fortran/trans-types.c (gfc_init_kinds): Change loops to use int + type rather than enum type. + +2009-03-03 Thomas Neumann <tneumann@users.sourceforge.net> + + * cp/parser.c (cp_lexer_get_preprocessor_token): Add missing cast + to enum. + +2009-03-03 Thomas Neumann <tneumann@users.sourceforge.net> + + * tree-into-ssa.c (get_ssa_name_ann): Use NEED_PHI_STATE_UNKNOWN + instead of 0. + +2009-03-03 Thomas Neumann <tneumann@users.sourceforge.net> + + * langhooks.c (add_builtin_function_common): Avoid assigning -1 to + an enum for C++ compatibility. + +2009-02-17 Thomas Neumann <tneumann@users.sourceforge.net> + + * ira.c (setup_prohibited_mode_move_regs): Add missing casts to + enum machine_mode. + +2009-02-10 Ian Lance Taylor <iant@google.com> + + * df.h (struct df_mw_hardreg): Change flags field to int. + (struct df_base_ref): Likewise. + + * parser.c (cp_parser_label_for_labeled_statement): Permit + attributes on a label. + * semantics.c (finish_label_stmt): Return the new label decl, not + the new statement. + * decl2.c (is_late_template_attribute): Return true for "unused" + on a label. + * pt.c (tsubst_expr): If the original label decl has attributes, + apply them to the new label decl. + +2009-02-06 Ian Lance Taylor <iant@google.com> + + * decl2.c (constrain_visibility): Add cast to enum type. + + * parser.c (cp_parser_question_colon_clause): Set skip_evaluation + if the condition is known to be true or false. + * typeck.c (cp_build_binary_op): Don't warn about out of range + shift counts if skip_evaluation is true. + + * timevar.c (timevar_pop_1): Ignore TV_NONE. + +2009-02-04 Ian Lance Taylor <iant@google.com> + + * configure.ac: Use AC_PROG_CXX. + * Makefile.in (CXX): Set to @CXX@. + * configure: Rebuild. + + * main.c (main): Use CONST_CAST when adding potentially unsafe + const. + * attribs.c (init_attributes): Change slot to void** and use + CONST_CAST when assigning to it. + + * collect2.c (is_ctor_dtor): Change ret field of struct names to + symkind. + * df-scan.c (df_ref_create_structure): Change struct df_ref * in + declaration to just df_ref. + (df_def_record_1): Change 0 to VOIDmode. + (df_get_conditional_uses): Likewise. + (df_defs_record): Change clobber_flags to int. + * fixed-value.c (fixed_compare): Add cast to enum type. + * haifa-sched.c (reemit_notes): Likewise + (max_issue): Put empty loop ';' on new line. + * ira.c (setup_class_subset_and_memory_move_costs): Add casts to + enum type. + (setup_cover_and_important_classes): Likewise. + (setup_reg_class_relations): Likewise. + * real.c (real_arithmetic): Likewise. + (real_compare): Likewise. + * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise. + * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK + to GIMPLE_ERROR_MARK. + * tree-data-ref.c (print_direction_vector): Add cast to enum + type. + * tree-ssa-alias.c (set_initial_properties): Change + pt_anything_mask to int. + * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum + type. + (supportable_widening_operation): Likewise. + (new_stmt_vec_info): Change 0 to enum constants. + (vect_supportable_dr_alignment): Remove useless cast. + * tree-vect-analyze.c (vect_build_slp_tree): Change 0 to enum + constants. + * tree-vect-transform.c (vect_create_epilog_for_reduction): + Likewise. + (vectorizable_reduction): Likewise. Add casts to enum types. + * var-tracking.c (get_init_value): Change return type and ret_val + local variable to enum var_init_status. + + * ira-build.c (setup_min_max_conflict_allocno_ids): Use + LIM_REG_CLASSES instead of -1. + + * config/linux.opt: Put mglibc before muclibc. + + * df-problems.c (df_byte_lr_alloc): Don't assign problem_data to + itself. + (df_simulate_one_insn_forwards): Move default case out of inner + block. + + * gimplify.c (gimplify_omp_for): Use MIN, not bitwise or, to + gather gimplification status from subroutines. + (gimplify_expr): Add cast to enum type. + + * dse.c (struct store_info): Change field name from bitmap to + bmap. Change all uses. + + * dwarf2.h (enum dwarf_type): Add DW_ATE_lo_user and + DW_ATE_hi_user as explicit enum values rather than #define + macros. + * dwarf2out.c (struct indirect_string_node): Change form to enum + dwarf_form. + (INTERNAL_DW_OP_tls_addr): Add cast to enum type. + (AT_string_form): Change return type to enum dwarf_form. + (int_loc_descriptor): Add cast to enum type. Add cast to + HOST_WIDE_INT for unsigned constant. + (add_calling_convention_attribute): Add cast to enum type. + + * cp/class.c (resolve_address_of_overloaded_function): Change + flags to int. + (instantiate_type): Change flags_in to int. + * cp/call.c (standard_conversion): Change flags to int. + (reference_binding): Change lvalue_p to int. + (build_temp): Change 0 to DK_UNSPECIFIED. + (convert_like_real): Change lvalue to int. + * cp/tree.c (lvalue_p_1): Change return type to int. Change + op1_lvalue_kind and op2_lvalue_kind to int. + (real_lvalue_p): Change return type to int. + * cp/cp-gimplify.c (cp_gimplify_expr): Add cast to enum type. + * cp/cp-tree.h (instantiate_template): Update declaration. + (real_lvalue_p): Likewise. + * cp/pt.c (check_instantiated_args): Change complain to int. + (instantiate_template): Likewise. + + * cp/error.c (next_tcode, next_int): Pass int to va_arg. + +2009-02-03 Ian Lance Taylor <iant@google.com> + + * opts.c (set_debug_level): Don't put an arbitrary int in an + enum. + + * omega.c (omega_do_elimination): Avoid math on enum types. + + * gcov.c (read_count_file): Avoid goto. + + * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum + type. + (combine_comparisons): Change compcode to int. Add cast. + + * builtins.c (validate_gimple_arglist): Don't pass an enum typ eto + va_arg. + * calls.c (emit_library_call_value_1): Likewise. + + * mcf.c (add_fixup_edge): Change type parameter to edge_type. + + * tree.c (attribute_list_contained): Put empty loop ';' on new + line. + (build_common_builtin_nodes): Add casts to enum type. + +2009-02-01 Tom Tromey <tromey@redhat.com> + + * c-pch.c (get_ident) <templ>: Don't specify array length. + (pch_init) <partial_pch>: Likewise. + +2009-01-31 Ian Lance Taylor <iant@google.com> + + * genattrtab.c (write_length_unit_log): If C++, declare const to + be extern. + * genchecksum.c (dosum): Likewise. + * gengtype.c (write_rtx_next, finish_root_table): Likewise. + (write_roots): Likewise. + * dummy-checksum.c (executable_checksum): Likewise. + * gimple.c (gimple_ops_offset_): Likewise. + (gimplify_assign): Do not declare as inline. + + * reginfo.c (init_move_cost): Add casts to enum type and integer + types. + (init_reg_sets_1, init_fake_stack_mems): Likewise. + (cannot_change_mode_set_regs): Change 'to' to unsigned int. Add + casts to enum type. + (invalid_mode_change_p): Likewise. + (pass_reginfo_init): Use TV_NONE for tv_id initializer. + (pass_subregs_of_mode_init): Likewise. + (pass_subregs_of_mode_finish): Likewise. + + * reload.c (push_secondary_reload): Add cast for + secondary_reload_info icode field. + (secondary_reload_class): Likewise. + (find_valid_class): Likewise. + (alternative_allows_const_pool_ref): Put empty loop ';' on new + line. + * reload1.c (emit_input_reload_insns): Add cast for + secondary_reload_info icode field. + + * cse.c (insert): Put empty loop ';' on new line. + * emit-rtl.c (push_to_sequence): Likewise. + * matrix-reorg.c (add_allocation_site): Likewise. + * postreload-gcse.c (eliminate_partially_redundant_load): + Likewise. + * sched-rgn.c (rgn_add_block): Likewise. + (rgn_fix_recovery_cfg): Likewise. + * tree-loop-distribution.c (rdg_flag_similar_memory_accesses): + Likewise. + + * profile.c (compute_branch_probabilities): Remove useless + references to variable on right side of comma operator. + + * parser.c (cp_parser_expression_stack_entry): Change prec field + to enum cp_parser_prec. + (cp_parser_decl_specifier_seq): Change flags to int. + (cp_parser_type_specifier): Likewise. + (cp_parser_simple_type_specifier): Likewise. + (cp_parser_type_specifier_seq): Likewise. + (cp_parser_direct_declarator): Don't jump into variable scope. + + * cp/semantics.c (finish_omp_clauses): Change c_kind to enum + omp_clause_code. + + * tree-complex.c (complex_lattice_t): Change to int type. Leave + enum type unnamed. + (expand_complex_libcall): Add casts to enum type. + + * hooks.h (hook_int_void_no_regs): Don't declare. + * hooks.c (hook_int_void_no_regs): Don't define. + + * target.h (struct sched): Correct needs_block_p prototype. + (struct gcc_target): Change return type of + branch_target_register_class to enum reg_class. + * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Change to + default_branch_target_register_class. + * targhooks.h (default_branch_target_register_class): Declare. + * targhooks.c (default_branch_target_register_class): Define. + + * fwprop.c (update_df): Change 0 to VOIDmode. + * sel-sched-ir.c (hash_with_unspec_callback): Likewise. + * combine.c (record_value_for_reg): Likewise. + (record_dead_and_set_regs): Likewise. + * optabs.c (expand_widen_pattern_expr): Likewise. + (expand_vec_shift_expr): Don't cast insn_code field of + optab_handler to int. + (emit_cmp_and_jump_insn_1): Likewise. + + * Makefile.in (xgcc$(exeext)): Link with $(CXX). + (cpp$(exeext)): Likewise. + (cc1-dummy$(exeext), cc1$(exeext)): Likewise. + (collect2$(exeext)): Likewise. + (protoize$(exeext), unprotoize$(exeext)): Likewise. + (gcov$(exeext), gcov-dump$(exeext)): Likewise. + (collect2.o, c-opts.o, c-cppbuiltin.o): Compile with $(CXX). + (c-pch.o, gcc.o, gccspec.o, gcc-options.o): Likewise. + (version.o, prefix.o, toplev.o, intl.o): Likewise. + ($(out_object_file)): Likewise. + (libbackend.o): Likewise. + (cppdefault.o): Likewise. + (protoize.o, unprotoize.o): Likewise. + * cp/Make-lang.in (g++spec.o): Likewise. + (g++$(exeext)): Link with $(CXX). + (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise. + * config/x-linux (host-linux.o): Compile with $(CXX). + + * Makefile.in (omp.low.o): Depend upon gt-omp-low.h. + (ipa-reference.o): Depend upon gt-ipa-reference.h. + (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H). + * cp/Make-lang.in (cp/class.o): Depend upon gt-cp-class.h. + (cp/semantics.o): Depend upon gt-cp-semantics.h. + + * config/i386/i386.c (ix86_function_specific_restore): Add casts + to enum types. + (bdesc_multi_arg): Change 0 to UNKNOWN where appropriate. Add + casts to enum type where needed. + * config/i386/i386-c.c (ix86_pragma_target_parse): Add casts to + enum types. + + * config/i386/x-i386 (driver-i386.o): Build with $(CXX). + * config/i386/t-i386 (i386-c.o): Likewise. + +2008-10-06 Tom Tromey <tromey@redhat.com> + + * errors.h (progname): Wrap in 'extern "C"'. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * bitmap.c (bitmap_obstack_alloc_stat): Remove extra cast. + (bitmap_obstack_free): Likewise. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * dominance.c (iterate_fix_dominators): Cast argument to + BITMAP_FREE. + * bitmap.c (bitmap_obstack_alloc_stat): Add cast. + (bitmap_obstack_free): Likewise. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * fold-const.c (fold_unary): Rename 'and' to 'and_expr'. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * sel-sched.c (move_op_hooks, fur_hooks): Mark forward + declarations 'extern'. + * regstat.c (regstat_n_sets_and_refs): Remove duplicate. + * haifa-sched.c (sched_scan_info): Remove duplicate. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * cgraph.h (struct inline_summary): Move to top level. + (cgraph_local_info): Update. + * target.h (struct asm_out): Move to top level. + (struct asm_int_op): Likewise. + (struct sched): Likewise. + (struct vectorize): Likewise. + (struct calls): Likewise. + (struct c): Likewise. + (struct cxx): Likewise. + (struct emutls): Likewise. + (struct target_option_hooks): Likewise. + (struct gcc_target): Update. + * matrix-reorg.c (struct free_info): Move to top level. + (struct matrix_info): Update. + * tree-eh.c (struct goto_queue_node): Move to top level. + (struct leh_tf_state): Update. + * sched-int.h (struct deps_reg): Move to top level. + (enum post_call_value): Likewise. Give name. + (struct deps): Update. + * cse.c (struct branch_path): Move to top level. + (struct cse_basic_block_data): Update. + +2008-10-05 Tom Tromey <tromey@redhat.com> + + * sdbout.c (sdb_debug_hooks): Initialize. + * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes. + +2008-09-19 Tom Tromey <tromey@redhat.com> + + * gimple.h (gimple_cond_code): Cast result to tree_code. + +2008-09-19 Tom Tromey <tromey@redhat.com> + + * tree-flow.h (struct ptr_info_def) <escape_mask>: Now unsigned + int. + (struct var_ann_d) <escape_mask>: Likewise. + +2008-09-19 Tom Tromey <tromey@redhat.com> + + * tree.c (tree_range_check_failed): Use 'int' to iterate. + (omp_clause_range_check_failed): Likewise. + (build_common_builtin_nodes): Likewise. + * sel-sched.c (init_hard_regs_data): Use 'int' to iterate. + * regclass.c (cannot_change_mode_set_regs): Use 'int' to iterate. + (invalid_mode_change_p): Likewise. + * passes.c (finish_optimization_passes): Use 'int' to iterate. + * ira.c (setup_class_subset_and_memory_move_costs): Use 'int' to + iterate. + (setup_cover_and_important_classes): Likewise. + (setup_class_translate): Likewise. + (setup_reg_class_nregs): Likewise. + (ira_init_once): Likewise. + (free_register_move_costs): Likewise. + * gimple.c (gimple_range_check_failed): Use 'int' to iterate. + +2008-09-18 Tom Tromey <tromey@redhat.com> + + * cp/parser.c (cp_parser_check_decl_spec): Use 'int' to iterate. + * cp/class.c (layout_class_type): Use 'int' to iterate. + * cp/decl.c (finish_enum): Use 'int' to iterate. + +2008-09-17 Tom Tromey <tromey@redhat.com> + + * ipa-reference.c (pass_ipa_reference): Fix struct tag. + * ipa-pure-const.c (pass_ipa_pure_const): Fix struct tag. + * ipa-cp.c (pass_ipa_cp): Fix struct tag. + * except.c (add_call_site): Fix struct tag. + * tree-pass.h (pass_ipa_cp, pass_ipa_reference, + pass_ipa_pure_const): Fix struct tag. + +2008-09-17 Tom Tromey <tromey@redhat.com> + + * cfgrtl.c (pass_free_cfg): Use TV_NONE. + * tree-vectorizer.c (pass_ipa_increase_alignment): Use TV_NONE. + * tree-vect-generic.c (pass_lower_vector): Use TV_NONE. + (pass_lower_vector_ssa): Likewise. + * tree-tailcall.c (pass_tail_recursion): Use TV_NONE. + (pass_tail_calls): Likewise. + * tree-stdarg.c (pass_stdarg): Use TV_NONE. + * tree-ssanames.c (pass_release_ssa_names): Use TV_NONE. + * tree-ssa-math-opts.c (pass_cse_reciprocals): Use TV_NONE. + (pass_cse_sincos): Likewise. + (pass_convert_to_rsqrt): Likewise. + * tree-ssa-dse.c (pass_simple_dse): Use TV_NONE. + * tree-ssa-ccp.c (pass_fold_builtins): Use TV_NONE. + * tree-ssa.c (pass_early_warn_uninitialized): Use TV_NONE. + (pass_late_warn_uninitialized): Likewise. + (pass_update_address_taken): Likewise. + * tree-ssa-alias.c (pass_reset_cc_flags): Use TV_NONE. + (pass_build_alias): Likewise. + * tree-optimize.c (pass_all_optimizations): Use TV_NONE. + (pass_early_local_passes): Likewise. + (pass_all_early_optimizations): Likewise. + (pass_cleanup_cfg): Likewise. + (pass_cleanup_cfg_post_optimizing): Likewise. + (pass_free_datastructures): Likewise. + (pass_free_cfg_annotations): Likewise. + (pass_init_datastructures): Likewise. + * tree-object-size.c (pass_object_sizes): Use TV_NONE. + * tree-nrv.c (pass_return_slot): Use TV_NONE. + * tree-nomudflap.c (pass_mudflap_1): Use TV_NONE. + (pass_mudflap_2): Likewise. + * tree-mudflap.c (pass_mudflap_1): Use TV_NONE. + (pass_mudflap_2): Likewise. + * tree-into-ssa.c (pass_build_ssa): Use TV_NONE. + * tree-if-conv.c (pass_if_conversion): Use TV_NONE. + * tree-complex.c (pass_lower_complex): Use TV_NONE. + (pass_lower_complex_O0): Likewise. + * tree-cfg.c (pass_remove_useless_stmts): Use TV_NONE. + (pass_warn_function_return): Likewise. + (pass_warn_function_noreturn): Likewise. + * stack-ptr-mod.c (pass_stack_ptr_mod): Use TV_NONE. + * regclass.c (pass_regclass_init): Use TV_NONE. + (pass_subregs_of_mode_init): Likewise. + (pass_subregs_of_mode_finish): Likewise. + * recog.c (pass_split_all_insns): Use TV_NONE. + (pass_split_after_reload): Likewise. + (pass_split_before_regstack): Likewise. + (pass_split_before_sched2): Likewise. + (pass_split_for_shorten_branches): Likewise. + * omp-low.c (pass_expand_omp): Use TV_NONE. + (pass_lower_omp): Likewise. + * matrix-reorg.c (pass_ipa_matrix_reorg): Use TV_NONE. + * jump.c (pass_cleanup_barriers): Use TV_NONE. + * ira.c (pass_ira): Use TV_NONE. + * integrate.c (pass_initial_value_sets): Use TV_NONE. + * init-regs.c (pass_initialize_regs): Use TV_NONE. + * gimple-low.c (pass_lower_cf): Use TV_NONE. + (pass_mark_used_blocks): Likewise. + * function.c (pass_instantiate_virtual_regs): Use TV_NONE. + (pass_init_function): Likewise. + (pass_leaf_regs): Likewise. + (pass_match_asm_constraints): Likewise. + * final.c (pass_compute_alignments): Use TV_NONE. + * except.c (pass_set_nothrow_function_flags): Use TV_NONE. + (pass_convert_to_eh_region_ranges): Likewise. + * emit-rtl.c (pass_unshare_all_rtl): Use TV_NONE. + * combine-stack-adj.c (pass_stack_adjustments): Use TV_NONE. + * cgraphbuild.c (pass_build_cgraph_edges): Use TV_NONE. + (pass_rebuild_cgraph_edges): Likewise. + * cfglayout.c (pass_into_cfg_layout_mode): Use TV_NONE. + (pass_outof_cfg_layout_mode): Likewise. + * bt-load.c (pass_branch_target_load_optimize1): Use TV_NONE. + (pass_branch_target_load_optimize2): Likewise. + * passes.c (pass_postreload): Use TV_NONE. + (execute_one_ipa_transform_pass): Unconditionally push and pop + timevar. + (execute_one_pass): Likewise. + * df-core.c (pass_df_initialize_opt): Use TV_NONE. + (pass_df_finish): Likewise. + (pass_df_initialize_no_opt): Likewise. + * timevar.c (timevar_print): Ignore TV_NONE. + (timevar_push_1): Likewise. + * timevar.def (TV_NONE): New timevar. + +2008-09-10 Ian Lance Taylor <iant@google.com> + + * machmode.h (GET_MODE_CLASS): Add cast to enum type. + (GET_CLASS_NARROWEST_MODE): Likewise. + * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type. + (SET_PREDICT_EXPR_OUTCOME): Define. + * rtl.h: Update declaration. + * calls.c (store_one_arg): Change 0 to enum constant. + * combine.c (try_combine): Use alloc_reg_note. + (recog_for_combine, move_deaths, distribute_notes): Likewise. + * combine-stack-adj.c (adjust_frame_related_expr): Use + add_reg_note. + * cse.c (hash_rtx_cb): Change 0 to enum constant. + * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type. + * dbxout.c (dbxout_symbol): Change 0 to enum constant. + (dbxout_parms): Likewise. + * dce.c (run_fast_df_dce): Change old_flags to int. + * df.h: Include "timevar.h". Update declarations. + (enum df_ref_flags): Define DF_REF_NONE. + (struct df_problem): Change tv_id to timevar_id_t. + (struct df): Change changeable_flags to int. + * df-core.c (df_set_flags): Change return type and + changeable_flags and old_flags to int. + (df_clear_flags): Likewise. + * df-problems.c (df_rd_bb_local_compute): Change 0 to enum + constant. + (df_chain_create_bb): Likewise. + (df_chain_add_problem): Change flags to unsigned int. + * df-scan.c (df_ref_create): Change ref_flags to int. + (df_notes_rescan): Change 0 to enum constant. + (df_ref_create_structure): change ref_flags to in. + (df_ref_record, df_def_record_1): Likewise. + (df_defs_record, df_uses_record): Likewise. + (df_get_call_refs): Likewise. Change 0 to enum constant. + (df_insn_refs_collect): Change 0 to enum constant. + (df_bb_refs_collect): Likewise. + (df_entry_block_defs_collect): Likewise. + (df_exit_block_uses_collect): Likewise. + * double-int.c (double_int_divmod): Add cast to enum type. + * dse.c (replace_inc_dec): Correct parameters to gen_int_mode. + * dwarf2out.c (new_reg_loc_descr): Add cast to enum type. + (based_loc_descr): Likewise. + (loc_descriptor_from_tree_1): Change first_op and second_top to + enum dwarf_location_atom. + * expmed.c (init_expmed): Change 0 to enum constant. + * expr.c (init_expr_target): Change 0 to enum constant. + (expand_expr_real_1): Likewise. + * fixed-value.h (struct fixed_value): Change mode to enum + machine_mode. + * genautomata.c (insert_automaton_decl): Change integer constant + to enum constant. + (insert_insn_decl, insert_decl, insert_state): Likewise. + (automata_list_finish): Likewise. + * genrecog.c (process_define_predicate): Add cast to enum type. + * gensupport.c (init_predicate_table): Add cast to enum type. + * gimple.c (gimple_build_return): Change 0 to enum constant. + (gimple_build_call_1, gimple_build_label): Likewise. + (gimple_build_goto, gimple_build_asm_1): Likewise. + (gimple_build_switch_1, gimple_build_cdt): Likewise. + * gimple.h: Update declaration. + (GIMPLE_CHECK): Change 0 to enum constant. + * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to + GSI_SAME_STMT. + * gimplify.c (gimplify_compound_lval): Change fallback to int. + (gimplify_cond_expr, gimplify_expr): Likewise. + * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note. + * ipa-prop.c (update_jump_functions_after_inlining): Change + IPA_BOTTOM to IPA_UNKNOWN. + * ira.c (setup_class_subset_and_memory_move_costs): Add cast to + enum type. + (setup_reg_class_intersect_union): Likewise. + (setup_prohibited_class_mode_regs): Likewise. + (setup_prohibited_mode_move_regs): Likewise. + * ira-costs.c (record_reg_classes): Likewise. + * lists.c (alloc_EXPR_LIST): Add cast to enum type. + * omp-low.c (expand_omp_for): Add cast to enum type. + * optabs.c (debug_optab_libfuncs): Add cast to enum type. + * opts.c (enable_warning_as_error): Change kind to diagnostic_t. + * postreload.c (reload_cse_simplify_operands): Likewise. + * predict.c (combine_predictions_for_insn): Add cast to enum + type. + (combine_predictions_for_bb): Likewise. + (estimate_bb_frequencies): Check profile_status, not + function_frequency. + (build_predict_expr): Use SET_PREDICT_EXPR_OUTCOME. + * real.c (real_arithmetic): Add cast to enum type. + * regclass.c (init_move_cost, init_reg_sets_1): Add cast to enum + type. + (init_fake_stack_mems, record_reg_classes): Likewise. + * regmove.c (regclass_compatible_p): Change class0 and class1 to + enum reg_class. + (try_auto_increment): Use PUT_REG_NOTE_KIND rather than PUT_MODE. + * reload.c (find_valid_class): Add cast to enum type. + (push_reload): Change 0 to enum constant. + (find_reloads): Add cast to enum type. + (make_memloc): Change 0 to enum constant. + * reload1.c (reload): Change 0 to enum constant. + (eliminate_regs_1): Use alloc_reg_note. Change 0 to enum + constant. + (elimination_effects): Change 0 to enum constant. + (eliminate_regs_in_insn, delete_output_reload): Likewise. + (emit_input_reload_insns): Add cast to enum type. + * rtlanal.c (alloc_reg_note): New function. + (add_reg_note): Call it. + * tree-dump.c (get_dump_file_info): Change phase to int. Add cast + to avoid warning. + (get_dump_file_name, dump_begin): Change phase to int. + (dump_enabled_p, dump_initialized_p): Likewise. + (dump_flag_name, dump_end, dump_function): Likewise. + * tree-dump.h (dump_function): Update declaration. + * tree-pass.h: Include "timevar.h". Update several function + declarations. + (struct opt_pass): Change tv_id to timevar_id_t. + * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to + enum machine_mode. + * varasm.c (assemble_integer): Change mclass to enum mode_class. + * config/i386/i386.md (cpu attr): Add cast to enum type. + (truncdfsf2): Change slot to enum ix86_stack_slot. + (truncxf<mode>2, floatunssi<mode>2): Likewise. + * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to + enum type. + * config/i386/i386.c (ix86_expand_prologue): Add add_reg_note. + (ix86_split_fp_branch, predict_jump): Likewise. + (ix86_expand_multi_arg_builtin): Change sub_code to enum + rtx_code. + (ix86_builtin_vectorized_function): Add cast to enum type. + * cp/call.c (build_new_function_call): Change complain to int. + (build_object_call, build_conditional_expr): Likewise. + (build_new_op, convert_like_real, build_over_call): Likewise. + (build_special_member_call, build_new_method_call): Likewise. + (perform_implicit_conversion): Likewise. + (perform_direct_initialization_if_possible): Likewise. + * cp/class.c (instantiate_type): Change complain to int. + * cp/cp-lang.c (objcp_tsubst_coy_and_build): Change complain to + int. + * cp/cvt.c (convert_to_void): Change complain to int. + * cp/decl.c (make_typename_type): Change complain to int. + (make_unbound_class_template): Likewise. + * cp/init.c (build_aggr_init): Change complain to int. + (expand_default_init, expand_aggr_init_1, build_new_1): Likewise. + (build_new, build_vec_init): Likewise. + * cp/parser.c (cp_parser_omp_var_list_no_open): Change integer + constant to enum constant. + (cp_parser_omp_flush, cp_parser_omp_threadprivate): Likewise. + * cp/pt.c (reduce_template_parm_level): Change complain to int. + (coerce_template_template_parm): Likewise. + (coerce_template_template_parms): Likewise. + (convert_template_argument): Likewise. + (coerce_template_parameter_pack): Likewise. + (coerce_template_parms, lookup_template_class): Likewise. + (apply_late_template_attributes): Likewise. + (tsubst_template_arg, tsubst_pack_expansion): Likewise. + (tsubst_tempalte_args, tsubst_tempalte_parms): Likewise. + (tsubst_aggr_type, tsubst_decl, tsubst_arg_types): Likewise. + (tsubst_function_type, tsubst_exception_specification): Likewise. + (tsubst, tsubst_baselink, tsubst_qualified_id): Likewise. + (tsubst_copy, tsubst_omp_clauses): Likewise. + (tsubst_copy_asm_operand, tsubst_omp_for_iterator): Likewise. + (tsubst_expr, tsubst_non_call_postfix_expression): Likewise. + (tsubst_copy_and_build, check_instantiated_args): Likewise. + (do_type_instantiation, invalid_nontype_parm_type_p): Likewise. + (process_template_parm): Change integer constant to enum constant. + (unify_pack_expansion): Add cast to enum type. + * cp/rtti.c (build_dynamic_cast_1): Change complain to int. + (build_dynamic_cast): Likewise. + * cp/search.c (lookup_base): Change access to int. + * cp/semantics.c (finish_call_expr): Change complain to int. + * cp/tree.c (cp_build_qualified_type_real): Change complain to + int. + * cp/typeck.c (composite_pointer_type_r): Change complain to int. + (composite_pointer_type, invalid_nonstatic_memfn_p): Likewise. + (build_class_member_access_expr): Likewise. + (finish_class_member_access_expr): Likewise. + (build_x_indirect_ref, cp_build_indirect_ref): Likewise. + (cp_build_function_call, convert_arguments): Likewise. + (build_x_binary_op, cp_build_binary_op): Likewise. + (build_x_unary_op, cp_build_unary_op): Likewise. + (build_x_conditional_expr): Likewise. + (build_x_compound_expr, cp_build_compound_expr): Likewise. + (build_static_cast_1, build_static_cast): Likewise. + (build_reinterpret_cast_1, build_reinterpret_cast): Likewise. + (build_const_cast, cp_build_c_cast): Likewise. + (cp_build_modify_expr, build_x_modify_expr): Likewise. + (convert_for_assignment, convert_for_initialization): Likewise. + (lvalue_or_else): Likewise. + * cp/typeck2.c (build_functional_cast): Change complain to int. + * cp/cp-tree.h: Update declarations. + * cp/cp-objcp-common.h: Update declaration. + * fortran/decl.c (gfc_mod_pointee_as): Change return type to + match. + * fortran/gfortran.h: Update declaration. + * fortran/module.c (import_iso_c_binding_module): Use new + iso_c_binding_symbol local. Add cast to enum type. + * fortran/trans-intrinsic.c (gfc_conv_intrinsic_minmax): Change op + to enum tree_code. + (gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_arith): Likewise. + (gfc_conv_intrinsic_minmaxloc): Likewise. + (gfc_conv_intrinsic_minmaxval): Likewise. + (gfc_conv_intrinsic_bitop): Likewise. + (gfc_conv_intrinsic_singlebitop): Likewise. + (gfc_conv_intrinsic_strcmp): Likewise. + * Makefile.in: Change tree-pass.h to $(TREE_PASS_H) globally. + (DF_H): Add $(TIMEVAR_H). + (TREE_PASS_H): New variable. + +2008-07-05 Tom Tromey <tromey@redhat.com> + + * basic-block.h (enum profile_status): Move to top level. + (struct control_flow_graph): Update. + * combine.c (enum undo_kinds): Move to top level. + (struct undo): Update. + * tree-inline.h (enum copy_body_cge_which): Move to top level. + (copy_body_data): Update. + * ggc-page.c (struct ggc_pch_ondisk): Move to top level. + (struct ggc_pch_data): Update. + * except.c (enum eh_region_type): Move to top level. + (struct eh_region_d): Update. + * regmove.c (enum match_use_kinds): Move to top level. + (struct match): Update. + * cgraphunit.c (enum cgraph_order_kinds): Move to top level. + (struct cgraph_order_sort): Update. + +2008-07-05 Tom Tromey <tromey@redhat.com> + + * optabs.c (optab_table, convert_optab_table): Check + HAVE_DESIGNATED_INITIALIZERS. + (init_optabs): Likewise. + * system.h (HAVE_DESIGNATED_INITIALIZERS): Define to 0 for C++. + +2008-07-03 Tom Tromey <tromey@redhat.com> + + * stringpool.c (alloc_node): Update. + +2008-07-03 Tom Tromey <tromey@redhat.com> + + * tree-eh.c (struct leh_state): Update. + (struct leh_tf_state): Likewise. + (lower_catch): Likewise. + (lower_eh_filter): Likewise. + (lower_cleanup): Likewise. + (make_eh_edge): Likewise. + (mark_eh_edge): Likewise. + * function.h (call_site_record): Update. + (ipa_opt_pass): Likewise. + * alias.c (struct alias_set_entry_d): Rename from + alias_set_entry. + (record_alias_subset): Update. + * except.c (struct eh_region_d): Rename from eh_region. + (struct call_site_record_d): Rename from call_site_record. + Update all users. + * except.h (struct eh_region_d): Rename from eh_region. + Update all users. + * tree-predcom.c (struct dref_d): Rename from dref. + Update all users. + * tree-cfg.c (update_eh_label): Update. + * passes.c (add_ipa_transform_pass): Update. + (execute_ipa_summary_passes): Update. + (execute_one_ipa_transform_pass): Update. + (execute_ipa_summary_passes): Update. + (execute_ipa_pass_list): Update. + * optabs.c (optab_table): Update. + (convert_optab_table): Likewise. + (sign_expand_binop): Likewise. + * optabs.h (struct optab_d): Rename from optab. + (optab): Update. + (struct convert_optab_d): Rename from convert_optab. + (convert_optab): Update. + (optab_table, convert_optab_table): Likewise. + * tree-pass.h (enum opt_pass_type): Declare at top-level. + (struct ipa_ops_pass_d): Rename from struct ipa_ops_pass. + (pass_ipa_inline): Update. + * omega.c (verify_omega_pb): Update. + (omega_eliminate_redundant, omega_eliminate_red, + parallel_splinter, omega_alloc_problem): Likewise. + * omega.h (struct eqn_d): Rename from eqn. + (struct omega_pb_d): Rename from omega_pb. + (omega_alloc_eqns): Update. + * ipa-inline.c (pass_ipa_inline): Update. + +2008-07-01 Ian Lance Taylor <iant@google.com> + + * machmode.h (GET_MODE_INNER): Cast to enum machine_mode. + (GET_MODE_WIDER_MODE): Likewise. + (GET_MODE_2XWIDER_MODE): Likewise. + + * builtins.c (expand_builtin_profile_func): Rename local variable + this to this_func. + (validate_arglist): Pass int rather than enum to va_arg. + +2008-06-30 Ian Lance Taylor <iant@google.com> + + * vec.h (DEF_VEC_FUNC_P) [iterate]: Add cast for constant 0. + +2008-06-21 Tom Tromey <tromey@redhat.com> + + * system.h (CONST_CAST2): Define for C++. + +2008-06-19 Ian Lance Taylor <iant@google.com> + + * tree.h (enum tree_code): Include all-tree.def, not tree.def. + * tree.c (tree_code_type): New global array. + (tree_code_length, tree_code_name): Likewise. + * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and + $(lang_tree_files). + (all-tree.def, s-alltree): New targets. + (gencheck.h, s-gencheck): Remove. + (tree.o): Depend upon all-tree.def. + (build/gencheck.o): Remove gencheck.h dependency. + (mostlyclean): Don't remove gencheck.h. + * c-common.h (enum c_tree_code): Remove. + * c-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * gencheck.c (tree_codes): Include all-tree.def, rather than + tree.def, c-common.def, and gencheck.h. Undefined DEFTREECODE + after it is used. + * tree-browser.c (tb_tree_codes): Include all-tree.def, rather + than tree.def. + * cp/cp-tree.h (enum cplus_tree_code): Remove. + (operator_name_info): Size to LAST_AND_UNUSED_TREE_CODE. + (assignment_operator_name_info): Likewise. + * cp/cp-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * cp/lex.c (operator_name_info): Size to + LAST_AND_UNUSED_TREE_CODE. + (assignment_operator_name_info): Likewise. + * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to + LAST_AND_UNUSED_TREE_CODE. + * cp/mangle.c (write_expression): Likewise. + * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def. + * fortran/f95-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * java/java-tree.h (enum java_tree_code): Remove. + * java/lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def. + * objc/objc-act.h (enum objc_tree_code): Remove. + * objc/objc-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * objcp/objcp-lang.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + * ada/ada-tre.h (enum gnat_tree_code): Remove. + * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def. + * ada/misc.c (tree_code_type): Remove. + (tree_code_length, tree_code_name): Remove. + + * c-lex.c (narrowest_unsigned_type): Change itk to int. + (narrowest_signed_type): Likewise. + * c-typeck.c (c_common_type): Change local variable mclass to enum + mode_class, twice. + (parser_build_binary_op): Compare the TREE_CODE_CLASS with + tcc_comparison, not the tree code itself. + * c-common.c (def_fn_type): Pass int, not an enum, to va_arg. + (c_expand_expr): Cast modifier to enum expand_modifier. + * c-common.h (C_RID_CODE): Add casts. + (C_SET_RID_CODE): Define. + * c-parser.c (c_parse_init): Use C_SET_RID_CODE. + (c_lex_one_token): Add cast to avoid warning. + (c_parser_objc_type_name): Rename local typename to type_name. + (check_no_duplicate_clause): Change code parameter to enum + omp_clause_code. + (c_parser_omp_var_list_parens): Change kind parameter to enum + omp_clause_code. + (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to + c_parser_omp_list_var_parens. + (c_parser_omp_threadprivate): Likewise. + * c-format.c (NO_FMT): Define. + (printf_length_specs): Use NO_FMT. + (asm_fprintf_length_specs): Likewise. + (gcc_diag_length_specs): Likewise. + (scanf_length_specs): Likewise. + (strfmon_length_specs): Likewise. + (gcc_gfc_length_specs): Likewise. + (printf_flag_specs): Change 0 to STD_C89. + (asm_fprintf_flag_specs): Likewise. + (gcc_diag_flag_specs): Likewise. + (gcc_cxxdiag_flag_specs): Likewise. + (scanf_flag_specs): Likewise. + (strftime_flag_specs): Likewise. + (strfmon_flag_specs): Likewise. + (print_char_table): Likewise. + (asm_fprintf_char_table): Likewise. + (gcc_diag_char_table): Likewise. + (gcc_tdiag_char_table): Likewise. + (gcc_cdiag_char_table): Likewise. + (gcc_cxxdiag_char_table): Likewise. + (gcc_gfc_char_table): Likewise. + (scan_char_table): Likewise. + (time_char_table): Likewis. + (monetary_char_table): Likewise. + * c-format.h (BADLEN): Likewise. + + * toplev.h (progname): Declare as extern "C" when compiling with + C++. + +2008-06-18 Ian Lance Taylor <iant@google.com> + + * configure.ac: Split c_loose_warn out from loose_warn, and + c_strict_warn from strict_warn. Set and substitute + warn_cxxflags. + * Makefile.in (C_LOOSE_WARN, C_STRICT_WARN): New variables. + (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN) and $(C_STRICT_WARN). + (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables. + (GCC_CFLAGS): Add $(C_LOOSE_WARN). + (ALL_CXXFLAGS): New variable. + (.c.o): Compile with $(CXX) rather than $(CC). + * configure: Rebuild. + +Local Variables: +mode: change-log +change-log-default-name: "ChangeLog.cxx" +End: diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 8850231bb89..4a9cd63768c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -149,11 +149,15 @@ coverageexts = .{gcda,gcno} # off if they wish. # LOOSE_WARN are the warning flags to use when compiling something # which is only compiled with gcc, such as libgcc. +# C_LOOSE_WARN is similar, but with C-only warnings. # STRICT_WARN are the additional warning flags to # apply to the back end and some front ends, which may be compiled # with other compilers. +# C_STRICT_WARN is similar, with C-only warnings. LOOSE_WARN = @loose_warn@ +C_LOOSE_WARN = @c_loose_warn@ STRICT_WARN = @strict_warn@ +C_STRICT_WARN = @c_strict_warn@ # This is set by --enable-checking. The idea is to catch forgotten # "extern" tags in header files. @@ -169,7 +173,8 @@ VALGRIND_DRIVER_DEFINES = @valgrind_path_defines@ # This is how we control whether or not the additional warnings are applied. .-warn = $(STRICT_WARN) build-warn = $(STRICT_WARN) -GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn) +GCC_WARN_CFLAGS = $(LOOSE_WARN) $(C_LOOSE_WARN) $($(@D)-warn) $(if $(filter-out $(STRICT_WARN),$($(@D)-warn)),,$(C_STRICT_WARN)) $(NOCOMMON_FLAG) $($@-warn) +GCC_WARN_CXXFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn) # These files are to have specific diagnostics suppressed, or are not to # be subject to -Werror: @@ -184,13 +189,16 @@ mips-tfile.o-warn = -Wno-error # All warnings have to be shut off in stage1 if the compiler used then # isn't gcc; configure determines that. WARN_CFLAGS will be either -# $(GCC_WARN_CFLAGS), or nothing. +# $(GCC_WARN_CFLAGS), or nothing. Similarly, WARN_CXXFLAGS will be +# either $(GCC_WARN_CXXFLAGS), or nothing. WARN_CFLAGS = @warn_cflags@ +WARN_CXXFLAGS = @warn_cxxflags@ CPPFLAGS = @CPPFLAGS@ AWK = @AWK@ CC = @CC@ +CXX = @CXX@ BISON = @BISON@ BISONFLAGS = FLEX = @FLEX@ @@ -325,7 +333,7 @@ GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isyste # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # It specifies -B./. # It also specifies -isystem ./include to find, e.g., stddef.h. -GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS) +GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) $(C_LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS) # --------------------------------------------------- # Programs which produce files for the target machine @@ -836,7 +844,7 @@ IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H) IPA_REFERENCE_H = ipa-reference.h $(BITMAP_H) $(TREE_H) IPA_TYPE_ESCAPE_H = ipa-type-escape.h $(TREE_H) CGRAPH_H = cgraph.h $(TREE_H) $(BASIC_BLOCK_H) -DF_H = df.h $(BITMAP_H) $(BASIC_BLOCK_H) alloc-pool.h +DF_H = df.h $(BITMAP_H) $(BASIC_BLOCK_H) alloc-pool.h $(TIMEVAR_H) RESOURCE_H = resource.h hard-reg-set.h $(DF_H) DDG_H = ddg.h sbitmap.h $(DF_H) GCC_H = gcc.h version.h @@ -860,10 +868,11 @@ MKDEPS_H = $(srcdir)/../libcpp/include/mkdeps.h SYMTAB_H = $(srcdir)/../libcpp/include/symtab.h $(OBSTACK_H) CPP_ID_DATA_H = $(CPPLIB_H) $(srcdir)/../libcpp/include/cpp-id-data.h CPP_INTERNAL_H = $(srcdir)/../libcpp/internal.h $(CPP_ID_DATA_H) -TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) tree-pass.h +TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) $(TREE_PASS_H) TREE_FLOW_H = tree-flow.h tree-flow-inline.h tree-ssa-operands.h \ $(BITMAP_H) $(BASIC_BLOCK_H) hard-reg-set.h $(GIMPLE_H) \ $(HASHTAB_H) $(CGRAPH_H) $(IPA_REFERENCE_H) +TREE_PASS_H = tree-pass.h $(TIMEVAR_H) TREE_SSA_LIVE_H = tree-ssa-live.h $(PARTITION_H) vecprim.h PRETTY_PRINT_H = pretty-print.h $(INPUT_H) $(OBSTACK_H) DIAGNOSTIC_H = diagnostic.h diagnostic.def $(PRETTY_PRINT_H) options.h @@ -895,6 +904,11 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@ ALL_CFLAGS = $(T_CFLAGS) \ $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ +# The C++ version. +ALL_CXXFLAGS = $(T_CFLAGS) \ + $(CFLAGS) $(CXXFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) \ + $(WARN_CXXFLAGS) @DEFS@ + # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro # puts -I options in CPPFLAGS, our include files in the srcdir will always # win against random include files in /usr/include. @@ -945,8 +959,9 @@ INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ $(CPPINC) $(GMPINC) $(DECNUMINC) \ $(PPLINC) $(CLOOGINC) +# [gcc-in-cxx] Keep the .c extension, but compile with C++. .c.o: - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION) + $(CXX) -x c++ -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION) # # Support for additional languages (other than C). @@ -1617,7 +1632,7 @@ libbackend.a: $(OBJS@onestep@) # and CC is `gcc'. It is renamed to `gcc' when it is installed. xgcc$(exeext): $(GCC_OBJS) gccspec.o version.o intl.o prefix.o \ version.o $(LIBDEPS) $(EXTRA_GCC_OBJS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) gccspec.o \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) gccspec.o \ intl.o prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS) # cpp is to cpp0 as gcc is to cc1. @@ -1625,7 +1640,7 @@ xgcc$(exeext): $(GCC_OBJS) gccspec.o version.o intl.o prefix.o \ # instead of gccspec.o. cpp$(exeext): $(GCC_OBJS) cppspec.o version.o intl.o prefix.o \ version.o $(LIBDEPS) $(EXTRA_GCC_OBJS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) cppspec.o \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) cppspec.o \ intl.o prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS) # Dump a specs file to make -B./ read these specs over installed ones. @@ -1642,7 +1657,7 @@ gcc-cross$(exeext): xgcc$(exeext) dummy-checksum.o : dummy-checksum.c cc1-dummy$(exeext): $(C_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) dummy-checksum.o \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) dummy-checksum.o \ $(BACKEND) $(LIBS) $(BACKENDLIBS) cc1-checksum.c : cc1-dummy$(exeext) build/genchecksum$(build_exeext) @@ -1651,7 +1666,7 @@ cc1-checksum.c : cc1-dummy$(exeext) build/genchecksum$(build_exeext) cc1-checksum.o : cc1-checksum.c cc1$(exeext): $(C_OBJS) cc1-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) cc1-checksum.o \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) cc1-checksum.o \ $(BACKEND) $(LIBS) $(BACKENDLIBS) # @@ -1868,13 +1883,13 @@ COLLECT2_OBJS = collect2.o tlink.o intl.o version.o COLLECT2_LIBS = @COLLECT2_LIBS@ collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS) # Don't try modifying collect2 (aka ld) in place--it might be linking this. - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o T$@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o T$@ \ $(COLLECT2_OBJS) $(LIBS) $(COLLECT2_LIBS) mv -f T$@ $@ collect2.o : collect2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h \ $(OBSTACK_H) $(DEMANGLE_H) collect2.h version.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DTARGET_MACHINE=\"$(target_noncanonical)\" \ -c $(srcdir)/collect2.c $(OUTPUT_OPTION) @@ -1901,14 +1916,14 @@ c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_INLINE_H) $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H) \ opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h $(TARGET_H) \ $(TM_P_H) $(VARRAY_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@ c-cppbuiltin.o : c-cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) version.h $(C_COMMON_H) $(C_PRAGMA_H) $(FLAGS_H) \ $(TOPLEV_H) output.h except.h $(REAL_H) $(TARGET_H) $(TM_P_H) \ $(BASEVER) debug.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) -DBASEVER=$(BASEVER_s) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) -DBASEVER=$(BASEVER_s) \ $< $(OUTPUT_OPTION) # A file used by all variants of C and some other languages. @@ -1933,7 +1948,7 @@ c-dump.o : c-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ c-pch.o : c-pch.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(CPPLIB_H) $(TREE_H) \ $(C_COMMON_H) output.h $(TOPLEV_H) $(C_PRAGMA_H) $(GGC_H) debug.h \ langhooks.h $(FLAGS_H) hosthooks.h version.h $(TARGET_H) opts.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DHOST_MACHINE=\"$(host)\" -DTARGET_MACHINE=\"$(target)\" \ $< $(OUTPUT_OPTION) @@ -1959,13 +1974,13 @@ gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \ Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \ configargs.h $(OBSTACK_H) opts.h (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ -c $(srcdir)/gcc.c $(OUTPUT_OPTION)) gccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ -c $(srcdir)/gccspec.c $(OUTPUT_OPTION)) @@ -2000,7 +2015,7 @@ options.o: options.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) $(FLAGS_H) $(TM_H) opts.h intl.h gcc-options.o: options.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) opts.h intl.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(OUTPUT_OPTION) -DGCC_DRIVER options.c + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(OUTPUT_OPTION) -DGCC_DRIVER options.c dumpvers: dumpvers.c @@ -2009,7 +2024,7 @@ version.o: version.c version.h $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE) else version.o: version.c version.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) endif - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ -DREVISION=$(REVISION_s) \ -DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \ @@ -2041,7 +2056,7 @@ stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) prefix.h \ Makefile $(BASEVER) - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s) \ -c $(srcdir)/prefix.c $(OUTPUT_OPTION) @@ -2061,13 +2076,13 @@ tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(OBSTACK_H) pointer-set.h fixed-value.h tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) langhooks.h $(TOPLEV_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) \ - tree-iterator.h tree-pass.h $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h + tree-iterator.h $(TREE_PASS_H) $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) $(INPUT_H) insn-config.h \ $(VARRAY_H) $(HASHTAB_H) $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(CGRAPH_H) \ intl.h $(FUNCTION_H) $(GGC_H) $(GIMPLE_H) \ debug.h $(DIAGNOSTIC_H) except.h $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \ - $(IPA_PROP_H) value-prof.h tree-pass.h $(TARGET_H) $(INTEGRATE_H) + $(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) $(INTEGRATE_H) print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(GGC_H) langhooks.h $(REAL_H) tree-iterator.h fixed-value.h \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) @@ -2079,19 +2094,19 @@ tree-ssa-structalias.o: tree-ssa-structalias.c tree-ssa-structalias.h \ $(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(GGC_H) $(OBSTACK_H) $(BITMAP_H) \ $(FLAGS_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) output.h \ $(DIAGNOSTIC_H) $(TREE_H) $(C_COMMON_H) $(TREE_FLOW_H) $(TREE_INLINE_H) varray.h \ - $(C_TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) tree-pass.h \ + $(C_TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) $(TREE_PASS_H) \ $(TIMEVAR_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) gt-tree-ssa-structalias.h \ $(CGRAPH_H) $(ALIAS_H) pointer-set.h tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \ $(TOPLEV_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) langhooks.h tree-pass.h $(BASIC_BLOCK_H) $(BITMAP_H) \ + $(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \ $(FLAGS_H) $(GGC_H) hard-reg-set.h $(HASHTAB_H) pointer-set.h \ $(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) tree-into-ssa.o : tree-into-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \ $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - langhooks.h domwalk.h tree-pass.h $(GGC_H) $(PARAMS_H) $(BASIC_BLOCK_H) \ + langhooks.h domwalk.h $(TREE_PASS_H) $(GGC_H) $(PARAMS_H) $(BASIC_BLOCK_H) \ $(BITMAP_H) $(CFGLOOP_H) $(FLAGS_H) hard-reg-set.h $(HASHTAB_H) \ $(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) vecprim.h tree-ssa-ter.o : tree-ssa-ter.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ @@ -2102,59 +2117,61 @@ tree-ssa-coalesce.o : tree-ssa-coalesce.c $(TREE_FLOW_H) $(CONFIG_H) \ $(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) $(TOPLEV_H) tree-outof-ssa.o : tree-outof-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - tree-pass.h $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) $(TOPLEV_H) + $(TREE_PASS_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) \ + $(TOPLEV_H) tree-ssa-dse.o : tree-ssa-dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \ $(DIAGNOSTIC_H) $(TIMEVAR_H) langhooks.h tree-ssa-forwprop.o : tree-ssa-forwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ langhooks.h $(FLAGS_H) $(GIMPLE_H) tree-ssa-phiprop.o : tree-ssa-phiprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ langhooks.h $(FLAGS_H) tree-ssa-ifcombine.o : tree-ssa-ifcombine.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) $(BASIC_BLOCK_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) tree-ssa-phiopt.o : tree-ssa-phiopt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \ $(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h tree-nrv.o : tree-nrv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(TREE_H) $(RTL_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(EXPR_H) \ - $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) tree-pass.h \ + $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_PASS_H) \ langhooks.h tree-ssa-copy.o : tree-ssa-copy.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \ $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(BASIC_BLOCK_H) tree-pass.h langhooks.h tree-ssa-propagate.h $(FLAGS_H) + $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h tree-ssa-propagate.h $(FLAGS_H) tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) $(BASIC_BLOCK_H) tree-pass.h langhooks.h \ + $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \ tree-ssa-propagate.h vec.h value-prof.h gt-tree-ssa-propagate.h $(FLAGS_H) \ $(VARRAY_H) $(GIMPLE_H) tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \ $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) langhooks.h \ + $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) langhooks.h \ tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) $(REAL_H) tree-ssa-uncprop.o : tree-ssa-uncprop.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) \ + $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) \ langhooks.h tree-ssa-propagate.h $(REAL_H) tree-ssa-threadedge.o : tree-ssa-threadedge.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) $(RTL_H) $(TM_P_H) $(GGC_H) \ $(BASIC_BLOCK_H) $(CFGLOOP_H) output.h $(EXPR_H) \ $(FUNCTION_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_FLOW_H) \ - domwalk.h $(REAL_H) tree-pass.h tree-ssa-propagate.h langhooks.h $(PARAMS_H) + domwalk.h $(REAL_H) $(TREE_PASS_H) tree-ssa-propagate.h langhooks.h \ + $(PARAMS_H) tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(BASIC_BLOCK_H) $(FLAGS_H) tree-pass.h $(CFGLOOP_H) + $(BASIC_BLOCK_H) $(FLAGS_H) $(TREE_PASS_H) $(CFGLOOP_H) tree-ssanames.o : tree-ssanames.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(TREE_H) $(VARRAY_H) $(GGC_H) $(TREE_FLOW_H) tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ @@ -2166,49 +2183,49 @@ tree-ssa-live.o : tree-ssa-live.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ $(TREE_SSA_LIVE_H) $(BITMAP_H) $(TOPLEV_H) debug.h $(FLAGS_H) tree-ssa-copyrename.o : tree-ssa-copyrename.c $(TREE_FLOW_H) $(CONFIG_H) \ - $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) tree-pass.h \ - $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) \ - $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h $(GIMPLE_H) \ - $(TREE_INLINE_H) $(GIMPLE_H) + $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) \ + $(TREE_PASS_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) \ + $(BASIC_BLOCK_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h \ + $(GIMPLE_H) $(TREE_INLINE_H) tree-ssa-pre.o : tree-ssa-pre.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \ - $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) langhooks.h $(CFGLOOP_H) \ - alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \ - $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \ + $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \ + $(CFGLOOP_H) alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) \ + $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \ $(DBGCNT_H) tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \ - $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \ + $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(CFGLOOP_H) \ alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) langhooks.h $(HASHTAB_H) $(GIMPLE_H) \ $(TREE_INLINE_H) tree-iterator.h tree-ssa-propagate.h tree-ssa-sccvn.h \ $(PARAMS_H) tree-vrp.o : tree-vrp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(GGC_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(GGC_H) \ $(BASIC_BLOCK_H) tree-ssa-propagate.h $(FLAGS_H) $(TREE_DUMP_H) \ $(CFGLOOP_H) tree-chrec.h $(TIMEVAR_H) $(TOPLEV_H) intl.h tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) except.h langhooks.h $(CFGLOOP_H) tree-pass.h \ + $(TREE_DUMP_H) except.h langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \ $(CFGLAYOUT_H) $(BASIC_BLOCK_H) hard-reg-set.h $(TOPLEV_H) \ value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H) tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \ $(DIAGNOSTIC_H) $(TOPLEV_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) except.h langhooks.h $(CFGLOOP_H) tree-pass.h \ + $(TREE_DUMP_H) except.h langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \ $(CFGLAYOUT_H) $(BASIC_BLOCK_H) hard-reg-set.h $(HASHTAB_H) $(TOPLEV_H) \ tree-ssa-propagate.h tree-scalar-evolution.h rtl-factoring.o : rtl-factoring.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ coretypes.h $(TM_H) $(BASIC_BLOCK_H) $(RESOURCE_H) $(GGC_H) $(REGS_H) \ - $(PARAMS_H) $(EXPR_H) addresses.h $(TM_P_H) tree-pass.h $(TREE_FLOW_H) \ + $(PARAMS_H) $(EXPR_H) addresses.h $(TM_P_H) $(TREE_PASS_H) $(TREE_FLOW_H) \ $(TIMEVAR_H) output.h $(DF_H) tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) $(DIAGNOSTIC_H) except.h tree-pass.h $(FLAGS_H) langhooks.h \ - $(BASIC_BLOCK_H) hard-reg-set.h $(DBGCNT_H) + $(TREE_DUMP_H) $(DIAGNOSTIC_H) except.h $(TREE_PASS_H) $(FLAGS_H) \ + langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h $(DBGCNT_H) tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ - $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) alloc-pool.h \ + $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \ $(BASIC_BLOCK_H) $(BITMAP_H) $(CFGLOOP_H) $(FIBHEAP_H) $(HASHTAB_H) \ langhooks.h $(REAL_H) $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \ @@ -2218,7 +2235,7 @@ tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \ tree-if-conv.o: tree-if-conv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(FLAGS_H) $(TIMEVAR_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \ $(CFGLOOP_H) $(RTL_H) $(C_COMMON_H) tree-chrec.h $(TREE_DATA_REF_H) \ - $(SCEV_H) tree-pass.h $(DIAGNOSTIC_H) $(TARGET_H) $(TREE_DUMP_H) \ + $(SCEV_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) $(TARGET_H) $(TREE_DUMP_H) \ $(VARRAY_H) tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ coretypes.h $(GGC_H) tree-iterator.h $(GIMPLE_H) gt-tree-iterator.h @@ -2226,59 +2243,59 @@ tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \ $(TREE_INLINE_H) $(HASHTAB_H) pointer-set.h $(FLAGS_H) $(FUNCTION_H) \ $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h $(TREE_DUMP_H) \ - tree-pass.h $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) hard-reg-set.h \ + $(TREE_PASS_H) $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) hard-reg-set.h \ $(GIMPLE_H) tree-ssa-operands.o : tree-ssa-operands.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \ - $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) tree-pass.h $(TOPLEV_H) \ + $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TOPLEV_H) \ coretypes.h langhooks.h $(IPA_REFERENCE_H) tree-eh.o : tree-eh.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_H) $(FLAGS_H) $(FUNCTION_H) except.h langhooks.h \ - $(GGC_H) tree-pass.h coretypes.h $(TIMEVAR_H) $(TM_P_H) pointer-set.h \ + $(GGC_H) $(TREE_PASS_H) coretypes.h $(TIMEVAR_H) $(TM_P_H) pointer-set.h \ $(TREE_DUMP_H) $(TREE_INLINE_H) tree-iterator.h $(TOPLEV_H) tree-ssa-loop.o : tree-ssa-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) output.h \ - $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) tree-pass.h $(TIMEVAR_H) \ + $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TREE_PASS_H) $(TIMEVAR_H) \ $(CFGLOOP_H) $(FLAGS_H) $(TREE_INLINE_H) tree-scalar-evolution.h tree-ssa-loop-unswitch.o : tree-ssa-loop-unswitch.c $(TREE_FLOW_H) \ $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) \ domwalk.h $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \ - coretypes.h $(TREE_DUMP_H) tree-pass.h $(BASIC_BLOCK_H) hard-reg-set.h \ + coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(BASIC_BLOCK_H) hard-reg-set.h \ $(TREE_INLINE_H) tree-ssa-address.o : tree-ssa-address.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \ output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - tree-pass.h $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h $(EXPR_H) \ - gt-tree-ssa-address.h $(GGC_H) tree-affine.h + $(TREE_PASS_H) $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h \ + $(EXPR_H) gt-tree-ssa-address.h $(GGC_H) tree-affine.h tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \ $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(TOPLEV_H) $(FLAGS_H) tree-pass.h $(SCEV_H) $(TREE_DATA_REF_H) $(BASIC_BLOCK_H) \ - $(GGC_H) hard-reg-set.h tree-chrec.h intl.h + $(TOPLEV_H) $(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(TREE_DATA_REF_H) \ + $(BASIC_BLOCK_H) $(GGC_H) hard-reg-set.h tree-chrec.h intl.h tree-ssa-loop-ivcanon.o : tree-ssa-loop-ivcanon.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \ $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - $(FLAGS_H) tree-pass.h $(SCEV_H) $(BASIC_BLOCK_H) $(GGC_H) hard-reg-set.h \ - tree-chrec.h + $(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(BASIC_BLOCK_H) $(GGC_H) \ + hard-reg-set.h tree-chrec.h tree-ssa-loop-ch.o : tree-ssa-loop-ch.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(TREE_INLINE_H) \ output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) hard-reg-set.h + $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) hard-reg-set.h tree-ssa-loop-prefetch.o: tree-ssa-loop-prefetch.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \ output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - tree-pass.h $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \ + $(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \ $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \ tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \ $(OPTABS_H) tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \ $(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \ - $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \ - $(TREE_INLINE_H) + $(PARAMS_H) $(DIAGNOSTIC_H) $(TREE_PASS_H) $(TM_H) coretypes.h \ + tree-affine.h $(TREE_INLINE_H) tree-ssa-loop-ivopts.o : tree-ssa-loop-ivopts.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \ output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ - tree-pass.h $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \ + $(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \ $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \ tree-chrec.h $(VARRAY_H) tree-affine.h pointer-set.h $(TARGET_H) tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \ @@ -2287,32 +2304,32 @@ tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \ tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h \ $(BASIC_BLOCK_H) output.h $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \ - $(TIMEVAR_H) $(CFGLOOP_H) tree-pass.h $(CFGLAYOUT_H) tree-scalar-evolution.h \ - $(PARAMS_H) $(TREE_INLINE_H) + $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PASS_H) $(CFGLAYOUT_H) \ + tree-scalar-evolution.h $(PARAMS_H) $(TREE_INLINE_H) tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h \ $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(REAL_H) $(BASIC_BLOCK_H) \ + $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(REAL_H) $(BASIC_BLOCK_H) \ hard-reg-set.h pointer-set.h tree-affine.h tree-ssa-propagate.h tree-ssa-math-opts.o : tree-ssa-math-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(REAL_H) $(TIMEVAR_H) tree-pass.h \ - alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H) + $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(REAL_H) $(TIMEVAR_H) \ + $(TREE_PASS_H) alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H) tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(TREE_INLINE_H) $(FLAGS_H) \ $(FUNCTION_H) $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h \ - $(TREE_DUMP_H) tree-pass.h $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \ + $(TREE_DUMP_H) $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \ hard-reg-set.h $(GIMPLE_H) vec.h tree-ssa-structalias.h \ $(IPA_TYPE_ESCAPE_H) vecprim.h pointer-set.h alloc-pool.h tree-ssa-reassoc.o : tree-ssa-reassoc.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ - $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) tree-iterator.h\ + $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) tree-iterator.h\ $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) vec.h langhooks.h \ alloc-pool.h pointer-set.h $(CFGLOOP_H) tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) hard-reg-set.h $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ $(TREE_DUMP_H) $(TOPLEV_H) $(FUNCTION_H) langhooks.h $(FLAGS_H) $(CGRAPH_H) \ - $(TREE_INLINE_H) tree-mudflap.h $(GGC_H) graph.h $(CGRAPH_H) tree-pass.h \ + $(TREE_INLINE_H) tree-mudflap.h $(GGC_H) graph.h $(CGRAPH_H) $(TREE_PASS_H) \ $(CFGLOOP_H) except.h c-gimplify.o : c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ @@ -2331,34 +2348,35 @@ gimple-iterator.o : gimple-iterator.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ gimple-low.o : gimple-low.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(DIAGNOSTIC_H) $(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) langhooks.h \ $(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - except.h $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) tree-pass.h \ + except.h $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) $(TREE_PASS_H) \ $(HASHTAB_H) $(TOPLEV.H) tree-iterator.h omp-low.o : omp-low.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h $(DIAGNOSTIC_H) \ - $(TREE_FLOW_H) $(TIMEVAR_H) $(FLAGS_H) $(EXPR_H) $(TOPLEV_H) tree-pass.h \ + $(TREE_FLOW_H) $(TIMEVAR_H) $(FLAGS_H) $(EXPR_H) $(TOPLEV_H) $(TREE_PASS_H) \ $(GGC_H) except.h $(SPLAY_TREE_H) $(OPTABS_H) $(CFGLOOP_H) \ - tree-iterator.h + tree-iterator.h gt-omp-low.h tree-browser.o : tree-browser.c tree-browser.def $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) \ $(TM_H) coretypes.h omega.o : omega.c omega.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - errors.h $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) varray.h tree-pass.h $(PARAMS_H) + errors.h $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) varray.h $(TREE_PASS_H) \ + $(PARAMS_H) tree-chrec.o: tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(GGC_H) $(TREE_H) $(REAL_H) $(SCEV_H) tree-pass.h $(PARAMS_H) \ + $(GGC_H) $(TREE_H) $(REAL_H) $(SCEV_H) $(TREE_PASS_H) $(PARAMS_H) \ $(DIAGNOSTIC_H) $(CFGLOOP_H) $(TREE_FLOW_H) tree-scalar-evolution.o: tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(REAL_H) $(RTL_H) \ $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \ - $(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) tree-pass.h $(FLAGS_H) tree-chrec.h \ + $(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) $(TREE_PASS_H) $(FLAGS_H) tree-chrec.h \ gt-tree-scalar-evolution.h tree-data-ref.o: tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \ $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ - $(TREE_DATA_REF_H) $(SCEV_H) tree-pass.h tree-chrec.h langhooks.h + $(TREE_DATA_REF_H) $(SCEV_H) $(TREE_PASS_H) tree-chrec.h langhooks.h graphite.o: graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TOPLEV_H) \ $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) $(GIMPLE_H) domwalk.h \ - $(TREE_DATA_REF_H) $(SCEV_H) tree-pass.h tree-chrec.h graphite.h pointer-set.h \ + $(TREE_DATA_REF_H) $(SCEV_H) $(TREE_PASS_H) tree-chrec.h graphite.h pointer-set.h \ value-prof.h tree-vect-analyze.o: tree-vect-analyze.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RECOG_H) $(BASIC_BLOCK_H) \ @@ -2372,52 +2390,53 @@ tree-vect-patterns.o: tree-vect-patterns.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ tree-vect-transform.o: tree-vect-transform.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(GGC_H) $(OPTABS_H) $(RECOG_H) $(TREE_H) $(RTL_H) \ $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \ - $(TIMEVAR_H) $(CFGLOOP_H) $(TARGET_H) tree-pass.h $(EXPR_H) \ + $(TIMEVAR_H) $(CFGLOOP_H) $(TARGET_H) $(TREE_PASS_H) $(EXPR_H) \ tree-vectorizer.h $(TREE_DATA_REF_H) $(SCEV_H) langhooks.h $(TOPLEV_H) \ tree-chrec.h tree-vectorizer.o: tree-vectorizer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ - tree-pass.h $(EXPR_H) $(RECOG_H) tree-vectorizer.h $(TREE_DATA_REF_H) $(SCEV_H) \ - $(INPUT_H) $(TARGET_H) $(CFGLAYOUT_H) $(TOPLEV_H) tree-chrec.h langhooks.h + $(TREE_PASS_H) $(EXPR_H) $(RECOG_H) tree-vectorizer.h $(TREE_DATA_REF_H) \ + $(SCEV_H) $(INPUT_H) $(TARGET_H) $(CFGLAYOUT_H) $(TOPLEV_H) tree-chrec.h \ + langhooks.h tree-loop-linear.o: tree-loop-linear.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ - tree-pass.h $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) $(LAMBDA_H) \ + $(TREE_PASS_H) $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) $(LAMBDA_H) \ $(TARGET_H) tree-chrec.h $(OBSTACK_H) tree-loop-distribution.o: tree-loop-distribution.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ - tree-pass.h $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) \ + $(TREE_PASS_H) $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) \ $(TARGET_H) tree-chrec.h langhooks.h tree-vectorizer.h tree-parloops.o: tree-parloops.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_FLOW_H) $(TREE_H) $(RTL_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(GGC_H) \ - $(DIAGNOSTIC_H) tree-pass.h $(SCEV_H) langhooks.h gt-tree-parloops.h \ + $(DIAGNOSTIC_H) $(TREE_PASS_H) $(SCEV_H) langhooks.h gt-tree-parloops.h \ tree-vectorizer.h tree-stdarg.o: tree-stdarg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ - $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \ + $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \ tree-stdarg.h $(TARGET_H) langhooks.h tree-object-size.o: tree-object-size.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \ + $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \ tree-ssa-propagate.h gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ $(GGC_H) $(GIMPLE_H) $(GIMPLE_H) $(DIAGNOSTIC_H) gt-gimple.h \ $(TREE_FLOW_H) value-prof.h $(FLAGS_H) gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \ - $(TM_H) coretypes.h tree-pass.h $(GIMPLE_H) value-prof.h + $(TM_H) coretypes.h $(TREE_PASS_H) $(GIMPLE_H) value-prof.h tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \ $(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \ - $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(CGRAPH_H) $(GGC_H) \ + $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \ gt-tree-mudflap.h $(BASIC_BLOCK_H) $(FLAGS_H) $(FUNCTION_H) hard-reg-set.h \ $(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(TOPLEV.H) $(GIMPLE_H) tree-iterator.h tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \ $(C_TREE_H) $(C_COMMON_H) $(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) \ output.h $(VARRAY_H) langhooks.h tree-mudflap.h $(TM_H) coretypes.h \ - $(GGC_H) gt-tree-mudflap.h tree-pass.h $(TOPLEV_H) + $(GGC_H) gt-tree-mudflap.h $(TREE_PASS_H) $(TOPLEV_H) tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \ - $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h tree-pass.h \ + $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h $(TREE_PASS_H) \ value-prof.h fixed-value.h output.h fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(FLAGS_H) $(REAL_H) $(TOPLEV_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \ @@ -2429,7 +2448,7 @@ diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ opts.o : opts.c opts.h options.h $(TOPLEV_H) $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TREE_H) $(TM_H) langhooks.h $(GGC_H) $(EXPR_H) $(RTL_H) \ output.h $(DIAGNOSTIC_H) $(TM_P_H) $(INSN_ATTR_H) intl.h $(TARGET_H) \ - $(FLAGS_H) $(PARAMS_H) tree-pass.h $(DBGCNT_H) debug.h varray.h + $(FLAGS_H) $(PARAMS_H) $(TREE_PASS_H) $(DBGCNT_H) debug.h varray.h opts-common.o : opts-common.c opts.h $(CONFIG_H) $(SYSTEM_H) \ coretypes.h intl.h targhooks.o : targhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ @@ -2445,8 +2464,8 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ value-prof.h $(PARAMS_H) $(TM_P_H) reload.h ira.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \ $(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) $(INTEGRATE_H) \ - opts.h params.def tree-mudflap.h $(REAL_H) tree-pass.h $(GIMPLE_H) - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + opts.h params.def tree-mudflap.h $(REAL_H) $(TREE_PASS_H) $(GIMPLE_H) + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -c $(srcdir)/toplev.c $(OUTPUT_OPTION) @@ -2457,7 +2476,7 @@ passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ graph.h except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h $(CFGLAYOUT_H) $(REAL_H) $(CFGLOOP_H) \ - hosthooks.h $(CGRAPH_H) $(COVERAGE_H) tree-pass.h $(TREE_DUMP_H) \ + hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \ $(GGC_H) $(INTEGRATE_H) $(CPPLIB_H) opts.h $(TREE_FLOW_H) $(TREE_INLINE_H) \ gt-passes.h $(DF_H) $(PREDICT_H) @@ -2491,9 +2510,9 @@ function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(OPTABS_H) libfuncs.h $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \ output.h $(TOPLEV_H) except.h $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \ gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(PREDICT_H) \ - tree-pass.h $(DF_H) $(TIMEVAR_H) vecprim.h + $(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - tree-pass.h $(TREE_DUMP_H) $(HASHTAB_H) statistics.h $(TM_H) $(FUNCTION_H) + $(TREE_PASS_H) $(TREE_DUMP_H) $(HASHTAB_H) statistics.h $(TM_H) $(FUNCTION_H) stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) $(FUNCTION_H) insn-config.h hard-reg-set.h $(EXPR_H) \ libfuncs.h except.h $(RECOG_H) $(TOPLEV_H) output.h $(GGC_H) $(TM_P_H) \ @@ -2504,14 +2523,14 @@ except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \ dwarf2asm.h dwarf2out.h $(TOPLEV_H) $(HASHTAB_H) intl.h $(GGC_H) \ gt-except.h $(CGRAPH_H) $(INTEGRATE_H) $(DIAGNOSTIC_H) dwarf2.h \ - $(TARGET_H) $(TM_P_H) tree-pass.h $(TIMEVAR_H) + $(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \ libfuncs.h $(INSN_ATTR_H) insn-config.h $(RECOG_H) output.h \ typeclass.h hard-reg-set.h $(TOPLEV_H) hard-reg-set.h except.h reload.h \ $(GGC_H) langhooks.h intl.h $(TM_P_H) $(REAL_H) $(TARGET_H) \ tree-iterator.h gt-expr.h $(MACHMODE_H) $(TIMEVAR_H) $(TREE_FLOW_H) \ - tree-pass.h $(DF_H) $(DIAGNOSTIC_H) vecprim.h + $(TREE_PASS_H) $(DF_H) $(DIAGNOSTIC_H) vecprim.h dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) $(INSN_ATTR_H) insn-config.h \ langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H) @@ -2562,7 +2581,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \ $(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(TOPLEV_H) $(BASIC_BLOCK_H) \ - $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h \ + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h $(TREE_PASS_H) gt-emit-rtl.h \ $(REAL_H) $(DF_H) real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(TOPLEV_H) $(TM_P_H) $(REAL_H) dfp.h @@ -2574,10 +2593,10 @@ integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) $(FLAGS_H) debug.h $(INTEGRATE_H) insn-config.h \ $(EXPR_H) $(REAL_H) $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \ except.h $(TOPLEV_H) $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h \ - gt-integrate.h $(GGC_H) tree-pass.h $(DF_H) + gt-integrate.h $(GGC_H) $(TREE_PASS_H) $(DF_H) jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \ - $(REAL_H) except.h $(FUNCTION_H) tree-pass.h $(DIAGNOSTIC_H) \ + $(REAL_H) except.h $(FUNCTION_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \ $(TOPLEV_H) $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H) \ $(TIMEVAR_H) $(TARGET_H) simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ @@ -2591,68 +2610,69 @@ cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) langhooks.h $(TREE_INLINE_H) $(TOPLEV_H) $(FLAGS_H) $(GGC_H) \ $(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \ - $(TREE_FLOW_H) tree-pass.h $(C_COMMON_H) debug.h $(DIAGNOSTIC_H) \ + $(TREE_FLOW_H) $(TREE_PASS_H) $(C_COMMON_H) debug.h $(DIAGNOSTIC_H) \ $(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \ gt-cgraphunit.h tree-iterator.h cgraphbuild.o : cgraphbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) langhooks.h $(CGRAPH_H) intl.h pointer-set.h $(GIMPLE_H) \ - $(TREE_FLOW_H) tree-pass.h + $(TREE_FLOW_H) $(TREE_PASS_H) varpool.o : varpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(CGRAPH_H) langhooks.h $(DIAGNOSTIC_H) $(HASHTAB_H) \ $(GGC_H) $(TIMEVAR_H) debug.h $(TARGET_H) output.h $(GIMPLE_H) \ $(TREE_FLOW_H) gt-varpool.h ipa.o : ipa.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(CGRAPH_H) \ - tree-pass.h $(TIMEVAR_H) + $(TREE_PASS_H) $(TIMEVAR_H) ipa-prop.o : ipa-prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ langhooks.h $(GGC_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(DIAGNOSTIC_H) \ - $(TREE_FLOW_H) $(TM_H) tree-pass.h $(FLAGS_H) $(TREE_H) $(TREE_INLINE_H) \ + $(TREE_FLOW_H) $(TM_H) $(TREE_PASS_H) $(FLAGS_H) $(TREE_H) $(TREE_INLINE_H) \ $(TIMEVAR_H) ipa-cp.o : ipa-cp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) tree-pass.h \ - $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) $(TREE_INLINE_H) + $(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \ + $(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \ + $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) matrix-reorg.o : matrix-reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) $(TREE_INLINE_H) $(TREE_FLOW_H) \ tree-flow-inline.h langhooks.h $(HASHTAB_H) $(TOPLEV_H) $(FLAGS_H) $(GGC_H) \ debug.h $(TARGET_H) $(CGRAPH_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(PARAMS_H) \ $(FIBHEAP_H) $(C_COMMON_H) intl.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(CFGLOOP_H) \ - tree-iterator.h tree-pass.h opts.h $(TREE_DATA_REF_H) tree-chrec.h \ + tree-iterator.h $(TREE_PASS_H) opts.h $(TREE_DATA_REF_H) tree-chrec.h \ tree-scalar-evolution.h ipa-inline.o : ipa-inline.c gt-ipa-inline.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \ - $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) tree-pass.h \ + $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(RTL_H) $(IPA_PROP_H) ipa-utils.o : ipa-utils.c $(IPA_UTILS_H) $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \ pointer-set.h $(GGC_H) $(C_COMMON_H) $(GIMPLE_H) \ - $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h $(TIMEVAR_H) $(DIAGNOSTIC_H) + $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) ipa-reference.o : ipa-reference.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \ pointer-set.h $(GGC_H) $(IPA_REFERENCE_H) $(IPA_UTILS_H) $(C_COMMON_H) \ - $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h \ - $(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H) + $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) \ + $(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H) gt-ipa-reference.h ipa-pure-const.o : ipa-pure-const.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \ pointer-set.h $(GGC_H) $(IPA_UTILS_H) $(C_COMMON_H) $(TARGET_H) \ - $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h $(TIMEVAR_H) \ + $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) \ $(DIAGNOSTIC_H) ipa-type-escape.o : ipa-type-escape.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \ pointer-set.h $(GGC_H) $(IPA_TYPE_ESCAPE_H) $(IPA_UTILS_H) $(C_COMMON_H) \ - $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h \ + $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) \ $(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H) ipa-struct-reorg.o: ipa-struct-reorg.c ipa-struct-reorg.h $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(GIMPLE_H) tree-inline.h \ $(TREE_FLOW_H) langhooks.h pointer-set.h $(HASHTAB_H) $(C_TREE_H) $(TOPLEV_H) \ $(FLAGS_H) debug.h $(TARGET_H) $(CGRAPH_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \ $(PARAMS_H) $(FIBHEAP_H) intl.h $(FUNCTION_H) $(BASIC_BLOCK_H) tree-iterator.h \ - tree-pass.h opts.h $(IPA_TYPE_ESCAPE_H) $(TREE_DUMP_H) $(C_COMMON_H) \ + $(TREE_PASS_H) opts.h $(IPA_TYPE_ESCAPE_H) $(TREE_DUMP_H) $(C_COMMON_H) \ $(GIMPLE_H) coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \ $(FUNCTION_H) $(TOPLEV_H) $(GGC_H) langhooks.h $(COVERAGE_H) gt-coverage.h \ - $(HASHTAB_H) tree-iterator.h $(CGRAPH_H) tree-pass.h gcov-io.c $(TM_P_H) + $(HASHTAB_H) tree-iterator.h $(CGRAPH_H) $(TREE_PASS_H) gcov-io.c $(TM_P_H) cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(RECOG_H) \ $(EMIT_RTL_H) $(TOPLEV_H) output.h $(FUNCTION_H) cselib.h $(GGC_H) $(TM_P_H) \ @@ -2660,31 +2680,31 @@ cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \ hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) $(TOPLEV_H) \ output.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \ - except.h $(TARGET_H) $(PARAMS_H) rtlhooks-def.h tree-pass.h $(REAL_H) \ + except.h $(TARGET_H) $(PARAMS_H) rtlhooks-def.h $(TREE_PASS_H) $(REAL_H) \ $(DF_H) $(DBGCNT_H) dce.o : dce.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(DF_H) cselib.h \ - $(DBGCNT_H) dce.h $(TIMEVAR_H) tree-pass.h $(DBGCNT_H) $(TM_P_H) + $(DBGCNT_H) dce.h $(TIMEVAR_H) $(TREE_PASS_H) $(DBGCNT_H) $(TM_P_H) dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ - $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) tree-pass.h \ - alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H) + $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \ + $(TREE_PASS_H) alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H) fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TOPLEV_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \ - output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) tree-pass.h $(TARGET_H) $(TM_P_H) \ - $(CFGLOOP_H) $(EMIT_RTL_H) + output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \ + $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \ - $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h + $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) see.o : see.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h \ - $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(RECOG_H) $(EXPR_H) $(SPLAY_TREE_H) \ - $(HASHTAB_H) $(REGS_H) dce.h + $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(RECOG_H) $(EXPR_H) \ + $(SPLAY_TREE_H) $(HASHTAB_H) $(REGS_H) dce.h gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(GGC_H) \ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \ $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h $(TREE_H) cselib.h $(TIMEVAR_H) \ - intl.h $(OBSTACK_H) tree-pass.h $(DF_H) $(DBGCNT_H) + intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \ coretypes.h $(TM_H) $(REGS_H) $(FLAGS_H) output.h $(RESOURCE_H) $(DF_H) \ $(FUNCTION_H) $(TOPLEV_H) $(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H) @@ -2694,43 +2714,43 @@ lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \ mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \ - output.h tree-pass.h $(TIMEVAR_H) $(REAL_H) $(DF_H) + output.h $(TREE_PASS_H) $(TIMEVAR_H) $(REAL_H) $(DF_H) tree-ssa-dce.o : tree-ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \ - coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) \ + coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \ $(GGC_H) hard-reg-set.h $(OBSTACK_H) $(GIMPLE_H) $(CFGLOOP_H) \ tree-scalar-evolution.h tree-call-cdce.o : tree-call-cdce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \ - coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) \ + coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \ $(GGC_H) hard-reg-set.h $(OBSTACK_H) $(GIMPLE_H) tree-ssa-ccp.o : tree-ssa-ccp.c $(TREE_FLOW_H) $(CONFIG_H) \ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \ - $(TREE_DUMP_H) $(BASIC_BLOCK_H) tree-pass.h langhooks.h \ + $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \ tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) $(TOPLEV_H) tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \ $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \ $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \ - langhooks.h tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \ + langhooks.h $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \ $(BITMAP_H) $(GGC_H) hard-reg-set.h $(OBSTACK_H) $(PARAMS_H) $(TARGET_H) tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \ $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \ - tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \ + $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \ $(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ $(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \ - tree-iterator.h tree-pass.h tree-ssa-propagate.h $(DIAGNOSTIC_H) + tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H) tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ - $(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h tree-pass.h \ + $(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h $(TREE_PASS_H) \ $(FLAGS_H) $(OPTABS_H) $(RTL_H) $(MACHMODE_H) $(EXPR_H) \ langhooks.h $(FLAGS_H) $(DIAGNOSTIC_H) gt-tree-vect-generic.h $(GGC_H) \ coretypes.h insn-codes.h df-core.o : df-core.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \ hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \ - $(TM_P_H) $(FLAGS_H) output.h tree-pass.h $(PARAMS_H) + $(TM_P_H) $(FLAGS_H) output.h $(TREE_PASS_H) $(PARAMS_H) df-problems.o : df-problems.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \ hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \ @@ -2739,7 +2759,7 @@ df-scan.o : df-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \ hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \ $(TM_P_H) $(FLAGS_H) $(TARGET_H) $(TARGET_DEF_H) $(TREE_H) output.h \ - tree-pass.h + $(TREE_PASS_H) df-byte-scan.o : df-byte-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ tm_p.h $(DF_H) output.h $(DBGCNT_H) regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ @@ -2748,22 +2768,22 @@ regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \ $(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \ - $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h + $(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \ $(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \ - $(CFGLOOP_H) $(TIMEVAR_H) tree-pass.h profile.h + $(CFGLOOP_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.h mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h \ $(BASIC_BLOCK_H) output.h langhooks.h $(GCOV_IO_H) $(TREE_H) tree-profile.o : tree-profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \ $(FUNCTION_H) $(TOPLEV_H) $(COVERAGE_H) $(TREE_H) value-prof.h $(TREE_DUMP_H) \ - tree-pass.h $(TREE_FLOW_H) $(TIMEVAR_H) $(GGC_H) gt-tree-profile.h $(CGRAPH_H) + $(TREE_PASS_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(GGC_H) gt-tree-profile.h $(CGRAPH_H) value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h value-prof.h $(EXPR_H) output.h $(FLAGS_H) \ $(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \ $(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \ - tree-flow-inline.h $(TIMEVAR_H) tree-pass.h $(TOPLEV_H) pointer-set.h + tree-flow-inline.h $(TIMEVAR_H) $(TREE_PASS_H) $(TOPLEV_H) pointer-set.h loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \ $(TOPLEV_H) $(CFGLOOP_H) output.h $(PARAMS_H) $(TARGET_H) @@ -2771,23 +2791,23 @@ alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h $(HASHTAB_H) auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \ $(REGS_H) $(FLAGS_H) output.h $(FUNCTION_H) except.h $(TOPLEV_H) $(RECOG_H) \ - $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) + $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \ $(REGS_H) hard-reg-set.h output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(GGC_H) \ $(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \ - $(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) tree-pass.h + $(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(TREE_PASS_H) cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TOPLEV_H) $(CFGLOOP_H) cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) \ - coretypes.h $(TREE_DUMP_H) except.h langhooks.h tree-pass.h $(RTL_H) \ + coretypes.h $(TREE_DUMP_H) except.h langhooks.h $(TREE_PASS_H) $(RTL_H) \ $(DIAGNOSTIC_H) $(TOPLEV_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \ value-prof.h $(TREE_INLINE_H) $(TARGET_H) cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) insn-config.h $(EXPR_H) \ $(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \ - tree-pass.h $(DF_H) $(GGC_H) + $(TREE_PASS_H) $(DF_H) $(GGC_H) cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \ $(TIMEVAR_H) $(OBSTACK_H) $(TOPLEV_H) vecprim.h @@ -2797,8 +2817,8 @@ cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TIMEVAR_H) hard-reg-set.h output.h $(FLAGS_H) $(RECOG_H) \ $(TOPLEV_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \ - $(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) tree-pass.h $(CFGLOOP_H) $(EXPR_H) \ - $(DF_H) $(DBGCNT_H) dce.h + $(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) $(TREE_PASS_H) $(CFGLOOP_H) \ + $(EXPR_H) $(DF_H) $(DBGCNT_H) dce.h cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) $(FUNCTION_H) \ $(OBSTACK_H) $(TOPLEV_H) $(TREE_FLOW_H) $(TREE_H) pointer-set.h output.h \ @@ -2820,7 +2840,8 @@ cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) $(TREE_FLOW_H) loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \ - coretypes.h $(TM_H) $(OBSTACK_H) tree-pass.h $(TIMEVAR_H) $(FLAGS_H) $(DF_H) + coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_PASS_H) $(TIMEVAR_H) $(FLAGS_H) \ + $(DF_H) loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \ output.h $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) @@ -2837,12 +2858,12 @@ combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(FUNCTION_H) insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \ rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) $(REAL_H) hard-reg-set.h \ $(TOPLEV_H) $(TM_P_H) $(TREE_H) $(TARGET_H) output.h $(PARAMS_H) $(OPTABS_H) \ - insn-codes.h $(TIMEVAR_H) tree-pass.h $(DF_H) vecprim.h $(CGRAPH_H) + insn-codes.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) vecprim.h $(CGRAPH_H) reginfo.o : reginfo.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) addresses.h $(REGS_H) insn-config.h \ $(RECOG_H) reload.h $(REAL_H) $(TOPLEV_H) $(FUNCTION_H) output.h $(GGC_H) \ $(TM_P_H) $(EXPR_H) $(TIMEVAR_H) gt-reginfo.h $(HASHTAB_H) \ - $(TARGET_H) tree-pass.h $(DF_H) ira.h + $(TARGET_H) $(TREE_PASS_H) $(DF_H) ira.h bitmap.o : bitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(GGC_H) gt-bitmap.h $(BITMAP_H) $(OBSTACK_H) $(HASHTAB_H) varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GGC_H) \ @@ -2864,35 +2885,35 @@ postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \ hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \ $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \ - $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) + $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \ $(TM_P_H) except.h $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \ - $(PARAMS_H) $(TIMEVAR_H) tree-pass.h $(REAL_H) $(DBGCNT_H) + $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) $(REAL_H) $(DBGCNT_H) caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(FUNCTION_H) \ addresses.h $(RECOG_H) reload.h $(EXPR_H) $(TOPLEV_H) $(TM_P_H) $(DF_H) \ output.h ira.h gt-caller-save.h $(GGC_H) bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) except.h \ $(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) output.h $(EXPR_H) \ - $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) tree-pass.h $(TOPLEV_H) \ - $(DF_H) vecprim.h $(RECOG_H) + $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) $(TREE_PASS_H) \ + $(TOPLEV_H) $(DF_H) vecprim.h $(RECOG_H) reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ conditions.h hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \ $(INSN_ATTR_H) except.h $(RECOG_H) $(FUNCTION_H) $(FLAGS_H) output.h \ $(EXPR_H) $(TOPLEV_H) $(PARAMS_H) $(TM_P_H) $(OBSTACK_H) $(RESOURCE_H) \ - $(TIMEVAR_H) $(TARGET_H) tree-pass.h + $(TIMEVAR_H) $(TARGET_H) $(TREE_PASS_H) alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) $(TOPLEV_H) output.h \ $(ALIAS_H) $(EMIT_RTL_H) $(GGC_H) $(FUNCTION_H) cselib.h $(TREE_H) $(TM_P_H) \ langhooks.h $(TARGET_H) gt-alias.h $(TIMEVAR_H) $(CGRAPH_H) \ - $(SPLAY_TREE_H) $(VARRAY_H) $(IPA_TYPE_ESCAPE_H) $(DF_H) tree-pass.h + $(SPLAY_TREE_H) $(VARRAY_H) $(IPA_TYPE_ESCAPE_H) $(DF_H) $(TREE_PASS_H) stack-ptr-mod.o : stack-ptr-mod.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) tree-pass.h \ + $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) $(TREE_PASS_H) \ $(BASIC_BLOCK_H) $(FLAGS_H) output.h $(DF_H) init-regs.o : init-regs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) tree-pass.h \ + $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) $(TREE_PASS_H) \ $(BASIC_BLOCK_H) $(FLAGS_H) $(DF_H) ira-build.o: ira-build.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ @@ -2924,13 +2945,13 @@ ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(REGS_H) hard-reg-set.h $(FLAGS_H) $(OBSTACK_H) \ $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) \ $(DF_H) $(IRA_INT_H) $(PARAMS_H) $(TIMEVAR_H) $(INTEGRATE_H) \ - tree-pass.h output.h + $(TREE_PASS_H) output.h regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - insn-config.h $(TIMEVAR_H) tree-pass.h $(DF_H)\ + insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)\ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \ $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) except.h reload.h combine-stack-adj.o : combine-stack-adj.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) tree-pass.h \ + $(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) \ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \ $(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(DF_H) except.h reload.h ddg.o : ddg.c $(DDG_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) \ @@ -2942,7 +2963,7 @@ modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TARGET_H) $(TOPLEV_H) $(RTL_H) $(TM_P_H) $(REGS_H) $(FUNCTION_H) \ $(FLAGS_H) insn-config.h $(INSN_ATTR_H) except.h $(RECOG_H) \ $(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \ - cfghooks.h $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) tree-pass.h \ + cfghooks.h $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(DF_H) $(DBGCNT_H) haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(FUNCTION_H) \ @@ -2955,7 +2976,7 @@ sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) except.h $(PARAMS_H) \ - $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \ + $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(DBGCNT_H) sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ @@ -2963,73 +2984,73 @@ sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H) output.h sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \ - $(REAL_H) tree-pass.h $(INSN_ATTR_H) + $(REAL_H) $(TREE_PASS_H) $(INSN_ATTR_H) sel-sched.o : sel-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(PARAMS_H) \ - $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \ + $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(SCHED_INT_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) \ $(SEL_SCHED_IR_H) $(SEL_SCHED_DUMP_H) sel-sched.h sel-sched-dump.o : sel-sched-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(PARAMS_H) \ - $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \ + $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(SEL_SCHED_DUMP_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H) sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ $(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(PARAMS_H) \ - $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \ + $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \ $(SCHED_INT_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H) final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) intl.h $(REGS_H) $(RECOG_H) conditions.h \ insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \ - except.h debug.h xcoffout.h $(TOPLEV_H) reload.h dwarf2out.h tree-pass.h \ + except.h debug.h xcoffout.h $(TOPLEV_H) reload.h dwarf2out.h $(TREE_PASS_H) \ $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) $(CFGLAYOUT_H) dbxout.h \ $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) $(REAL_H) $(DF_H) vecprim.h $(GGC_H) \ $(CFGLOOP_H) $(PARAMS_H) recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) \ $(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(TOPLEV_H) output.h reload.h \ - addresses.h $(TM_P_H) $(TIMEVAR_H) tree-pass.h hard-reg-set.h $(REAL_H) \ + addresses.h $(TM_P_H) $(TIMEVAR_H) $(TREE_PASS_H) hard-reg-set.h $(REAL_H) \ $(DF_H) $(DBGCNT_H) $(TARGET_H) reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ insn-config.h $(TOPLEV_H) reload.h $(FUNCTION_H) $(TM_P_H) $(GGC_H) \ $(BASIC_BLOCK_H) $(CFGLAYOUT_H) output.h $(VARRAY_H) $(TIMEVAR_H) \ - tree-pass.h $(TARGET_H) vecprim.h $(DF_H) + $(TREE_PASS_H) $(TARGET_H) vecprim.h $(DF_H) sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) sreal.h predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \ hard-reg-set.h output.h $(TOPLEV_H) $(RECOG_H) $(FUNCTION_H) except.h \ $(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \ $(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \ - $(TREE_FLOW_H) tree-pass.h $(EXPR_H) pointer-set.h + $(TREE_FLOW_H) $(TREE_PASS_H) $(EXPR_H) pointer-set.h lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \ $(RTL_H) $(GGC_H) gt-lists.h bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(CFGLAYOUT_H) $(FIBHEAP_H) \ $(TARGET_H) $(FUNCTION_H) $(TM_P_H) $(OBSTACK_H) $(EXPR_H) $(REGS_H) \ - $(PARAMS_H) $(TOPLEV_H) tree-pass.h $(DF_H) + $(PARAMS_H) $(TOPLEV_H) $(TREE_PASS_H) $(DF_H) tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h output.h $(CFGLAYOUT_H) \ $(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \ - tree-pass.h $(TREE_FLOW_H) $(TREE_INLINE_H) + $(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \ $(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \ - $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) tree-pass.h vecprim.h \ + $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) $(TREE_PASS_H) vecprim.h \ $(DF_H) timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TIMEVAR_H) $(FLAGS_H) intl.h $(TOPLEV_H) $(RTL_H) timevar.def regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \ - addresses.h reload.h $(TOPLEV_H) $(TIMEVAR_H) tree-pass.h $(DF_H) + addresses.h reload.h $(TOPLEV_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(REGS_H) $(TOPLEV_H) $(FLAGS_H) insn-config.h $(FUNCTION_H) $(RECOG_H) \ $(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h except.h $(TM_P_H) \ - $(REAL_H) $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) tree-pass.h \ - $(DF_H) $(DBGCNT_H) + $(REAL_H) $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) \ + $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) lambda-mat.o : lambda-mat.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) coretypes.h $(TREE_H) $(TREE_FLOW_H) lambda-trans.o: lambda-trans.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ @@ -3038,7 +3059,7 @@ lambda-code.o: lambda-code.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) coretypes.h $(TARGET_H) \ - tree-chrec.h tree-pass.h vec.h vecprim.h $(OBSTACK_H) pointer-set.h + tree-chrec.h $(TREE_PASS_H) vec.h vecprim.h $(OBSTACK_H) pointer-set.h params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) $(TOPLEV_H) pointer-set.o: pointer-set.c pointer-set.h $(CONFIG_H) $(SYSTEM_H) hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H) @@ -3050,14 +3071,14 @@ dbgcnt.o: dbgcnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h errors.h $(DBGCNT_H) \ lower-subreg.o : lower-subreg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(MACHMODE_H) $(TM_H) $(RTL_H) $(TM_P_H) $(TIMEVAR_H) $(FLAGS_H) \ insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) $(OBSTACK_H) $(BITMAP_H) \ - $(EXPR_H) except.h $(REGS_H) tree-pass.h $(DF_H) + $(EXPR_H) except.h $(REGS_H) $(TREE_PASS_H) $(DF_H) $(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h insn-config.h conditions.h \ output.h $(INSN_ATTR_H) $(SYSTEM_H) $(TOPLEV_H) $(TARGET_H) libfuncs.h \ $(TARGET_DEF_H) $(FUNCTION_H) $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) \ langhooks.h $(GGC_H) $(OPTABS_H) $(REAL_H) tm-constrs.h $(GIMPLE_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ $(out_file) $(OUTPUT_OPTION) # Build auxiliary files that support ecoff format. @@ -3077,7 +3098,7 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) coretypes.h \ libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ insn-config.h insn-flags.h insn-codes.h insn-constants.h \ insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) gcov-iov.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -DLOCALEDIR=\"$(localedir)\" \ -c $(filter %.c,$^) -o $@ \ @@ -3455,7 +3476,7 @@ gengtype-lex.c : gengtype-lex.l # # Remake internationalization support. intl.o: intl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h Makefile - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ -DLOCALEDIR=\"$(localedir)\" \ -c $(srcdir)/intl.c $(OUTPUT_OPTION) @@ -3477,7 +3498,7 @@ PREPROCESSOR_DEFINES = \ cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ cppdefault.h Makefile - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ $(PREPROCESSOR_DEFINES) \ -c $(srcdir)/cppdefault.c $(OUTPUT_OPTION) @@ -3489,22 +3510,22 @@ proto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X PROTO_OBJS = intl.o version.o cppdefault.o errors.o protoize$(exeext): protoize.o $(PROTO_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ protoize.o $(PROTO_OBJS) $(LIBS) + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ protoize.o $(PROTO_OBJS) $(LIBS) unprotoize$(exeext): unprotoize.o $(PROTO_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ unprotoize.o $(PROTO_OBJS) $(LIBS) + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ unprotoize.o $(PROTO_OBJS) $(LIBS) protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ $(srcdir)/protoize.c $(OUTPUT_OPTION)) unprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) \ $(SYSTEM_H) coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(CXX) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ $(srcdir)/protoize.c $(OUTPUT_OPTION)) @@ -3571,10 +3592,10 @@ gcov-dump.o: gcov-dump.c gcov-io.c $(GCOV_IO_H) $(SYSTEM_H) coretypes.h \ GCOV_OBJS = gcov.o intl.o version.o errors.o gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_OBJS) $(LIBS) -o $@ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) $(GCOV_OBJS) $(LIBS) -o $@ GCOV_DUMP_OBJS = gcov-dump.o version.o errors.o gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_DUMP_OBJS) $(LIBS) -o $@ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) $(GCOV_DUMP_OBJS) $(LIBS) -o $@ # # Build the include directories. The stamp files are stmp-* rather than # s-* so that mostlyclean does not force the include directory to diff --git a/gcc/alias.c b/gcc/alias.c index 2ebde8d73a5..c1768ea6e44 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -128,7 +128,7 @@ along with GCC; see the file COPYING3. If not see However, this is no actual entry for alias set zero. It is an error to attempt to explicitly construct a subset of zero. */ -struct alias_set_entry GTY(()) +struct alias_set_entry_d GTY(()) { /* The alias set number, as stored in MEM_ALIAS_SET. */ alias_set_type alias_set; @@ -146,7 +146,7 @@ struct alias_set_entry GTY(()) `int', `double', `float', and `struct S'. */ splay_tree GTY((param1_is (int), param2_is (int))) children; }; -typedef struct alias_set_entry *alias_set_entry; +typedef struct alias_set_entry_d *alias_set_entry; static int rtx_equal_for_memref_p (const_rtx, const_rtx); static int memrefs_conflict_p (int, rtx, int, rtx, HOST_WIDE_INT); @@ -752,7 +752,7 @@ record_alias_subset (alias_set_type superset, alias_set_type subset) { /* Create an entry for the SUPERSET, so that we have a place to attach the SUBSET. */ - superset_entry = GGC_NEW (struct alias_set_entry); + superset_entry = GGC_NEW (struct alias_set_entry_d); superset_entry->alias_set = superset; superset_entry->children = splay_tree_new_ggc (splay_tree_compare_ints); diff --git a/gcc/attribs.c b/gcc/attribs.c index be360d36bf2..139e7026b47 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -184,15 +184,15 @@ init_attributes (void) for (k = 0; attribute_tables[i][k].name != NULL; k++) { struct substring str; - const void **slot; + void **slot; str.str = attribute_tables[i][k].name; str.length = strlen (attribute_tables[i][k].name); - slot = (const void **)htab_find_slot_with_hash (attribute_hash, &str, + slot = htab_find_slot_with_hash (attribute_hash, &str, substring_hash (str.str, str.length), INSERT); gcc_assert (!*slot); - *slot = &attribute_tables[i][k]; + *slot = CONST_CAST (struct attribute_spec*, &attribute_tables[i][k]); } attributes_initialized = true; } diff --git a/gcc/basic-block.h b/gcc/basic-block.h index bd741b52275..c530ebd4418 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -365,6 +365,14 @@ enum dom_state DOM_OK /* Everything is ok. */ }; +/* Values for x_profile_status in control_flow_graph. */ + +enum profile_status { + PROFILE_ABSENT, + PROFILE_GUESSED, + PROFILE_READ +}; + /* A structure to group all the per-function control flow graph data. The x_* prefixing is necessary because otherwise references to the fields of this struct are interpreted as the defines for backward @@ -392,11 +400,7 @@ struct control_flow_graph GTY(()) only used for the gimple CFG. */ VEC(basic_block,gc) *x_label_to_block_map; - enum profile_status { - PROFILE_ABSENT, - PROFILE_GUESSED, - PROFILE_READ - } x_profile_status; + enum profile_status x_profile_status; /* Whether the dominators and the postdominators are available. */ enum dom_state x_dom_computed[2]; diff --git a/gcc/bitmap.c b/gcc/bitmap.c index d2c2e05aae0..bdde3553af2 100644 --- a/gcc/bitmap.c +++ b/gcc/bitmap.c @@ -291,7 +291,7 @@ bitmap_elt_clear_from (bitmap head, bitmap_element *elt) /* Clear a bitmap by freeing the linked list. */ -inline void +void bitmap_clear (bitmap head) { if (head->first) diff --git a/gcc/bt-load.c b/gcc/bt-load.c index f052f6c9507..7b503ebdb96 100644 --- a/gcc/bt-load.c +++ b/gcc/bt-load.c @@ -1513,7 +1513,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize1 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1563,7 +1563,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize2 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/builtins.c b/gcc/builtins.c index cc9d93e2311..a9bc75e6b8a 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -11066,7 +11066,7 @@ validate_arg (const_tree arg, enum tree_code code) bool validate_gimple_arglist (const_gimple call, ...) { - enum tree_code code; + int code; bool res = 0; va_list ap; const_tree arg; @@ -11077,8 +11077,8 @@ validate_gimple_arglist (const_gimple call, ...) do { - code = va_arg (ap, enum tree_code); - switch (code) + code = va_arg (ap, int); + switch ((enum tree_code) code) { case 0: /* This signifies an ellipses, any further arguments are all ok. */ @@ -11094,7 +11094,7 @@ validate_gimple_arglist (const_gimple call, ...) match the specified code, return false. Otherwise continue checking any remaining arguments. */ arg = gimple_call_arg (call, i++); - if (!validate_arg (arg, code)) + if (!validate_arg (arg, (enum tree_code) code)) goto end; break; } @@ -11128,7 +11128,7 @@ validate_arglist (const_tree callexpr, ...) do { - code = va_arg (ap, enum tree_code); + code = (enum tree_code) va_arg (ap, int); switch (code) { case 0: diff --git a/gcc/c-pch.c b/gcc/c-pch.c index b4f70506e40..0ba9953a24a 100644 --- a/gcc/c-pch.c +++ b/gcc/c-pch.c @@ -1,5 +1,5 @@ /* Precompiled header implementation for the C languages. - Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -92,7 +92,7 @@ static const char * get_ident (void) { static char result[IDENT_LENGTH]; - static const char templ[IDENT_LENGTH] = "gpch.013"; + static const char templ[] = "gpch.013"; static const char c_language_chars[] = "Co+O"; memcpy (result, templ, IDENT_LENGTH); @@ -112,7 +112,7 @@ pch_init (void) FILE *f; struct c_pch_validity v; void *target_validity; - static const char partial_pch[IDENT_LENGTH] = "gpcWrite"; + static const char partial_pch[] = "gpcWrite"; #ifdef ASM_COMMENT_START if (flag_verbose_asm) diff --git a/gcc/calls.c b/gcc/calls.c index 7bad365b5ac..1c92a402a87 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3444,7 +3444,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, for (; count < nargs; count++) { rtx val = va_arg (p, rtx); - enum machine_mode mode = va_arg (p, enum machine_mode); + enum machine_mode mode = (enum machine_mode) va_arg (p, int); /* We cannot convert the arg value to the mode the library wants here; must do it earlier where we know the signedness of the arg. */ @@ -4232,7 +4232,8 @@ store_one_arg (struct arg_data *arg, rtx argblock, int flags, - int_size_in_bytes (TREE_TYPE (pval)) + partial); size_rtx = expand_expr (size_in_bytes (TREE_TYPE (pval)), - NULL_RTX, TYPE_MODE (sizetype), 0); + NULL_RTX, TYPE_MODE (sizetype), + EXPAND_NORMAL); } parm_align = arg->locate.boundary; diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index 27eb029d076..005f09cb91d 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -363,7 +363,7 @@ struct rtl_opt_pass pass_into_cfg_layout_mode = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -382,7 +382,7 @@ struct rtl_opt_pass pass_outof_cfg_layout_mode = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index a7dc5076865..e77a8cde4eb 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -437,7 +437,7 @@ struct rtl_opt_pass pass_free_cfg = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ PROP_cfg, /* properties_destroyed */ diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 29fc1ba4a4d..23cb676eaa7 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -48,18 +48,21 @@ enum availability extern const char * const cgraph_availability_names[]; +struct inline_summary GTY(()) +{ + /* Estimated stack frame consumption by the function. */ + HOST_WIDE_INT estimated_self_stack_size; + + /* Size of the function before inlining. */ + int self_insns; +}; + /* Information about the function collected locally. Available after function is analyzed. */ struct cgraph_local_info GTY(()) { - struct inline_summary { - /* Estimated stack frame consumption by the function. */ - HOST_WIDE_INT estimated_self_stack_size; - - /* Size of the function before inlining. */ - int self_insns; - } inline_summary; + struct inline_summary inline_summary; /* Set when function function is visible in current compilation unit only and its address is never taken. */ diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c index 75db87544ce..30ce9ff1353 100644 --- a/gcc/cgraphbuild.c +++ b/gcc/cgraphbuild.c @@ -208,7 +208,7 @@ struct gimple_opt_pass pass_build_cgraph_edges = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -269,7 +269,7 @@ struct gimple_opt_pass pass_rebuild_cgraph_edges = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 07998d4af8c..f51087955ec 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1112,11 +1112,18 @@ cgraph_expand_all_functions (void) } +enum cgraph_order_kinds { + ORDER_UNDEFINED = 0, + ORDER_FUNCTION, + ORDER_VAR, + ORDER_ASM +}; + /* This is used to sort the node types by the cgraph order number. */ struct cgraph_order_sort { - enum { ORDER_UNDEFINED = 0, ORDER_FUNCTION, ORDER_VAR, ORDER_ASM } kind; + enum cgraph_order_kinds kind; union { struct cgraph_node *f; diff --git a/gcc/collect2.c b/gcc/collect2.c index 3f62dfe40b3..d12a1beeb99 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -538,7 +538,7 @@ dump_file (const char *name, FILE *to) static symkind is_ctor_dtor (const char *s) { - struct names { const char *const name; const int len; const int ret; + struct names { const char *const name; const int len; const symkind ret; const int two_underscores; }; const struct names *p; @@ -857,9 +857,9 @@ main (int argc, char **argv) /* Do not invoke xcalloc before this point, since locale needs to be set first, in case a diagnostic is issued. */ - ld1 = (const char **)(ld1_argv = XCNEWVEC (char *, argc+4)); - ld2 = (const char **)(ld2_argv = XCNEWVEC (char *, argc+11)); - object = (const char **)(object_lst = XCNEWVEC (char *, argc)); + ld1 = CONST_CAST (const char **, (ld1_argv = XCNEWVEC (char *, argc+4))); + ld2 = CONST_CAST (const char **, (ld2_argv = XCNEWVEC (char *, argc+11))); + object = CONST_CAST (const char **, (object_lst = XCNEWVEC (char *, argc))); #ifdef DEBUG debug = 1; @@ -904,7 +904,7 @@ main (int argc, char **argv) -fno-exceptions -w */ num_c_args += 5; - c_ptr = (const char **) (c_argv = XCNEWVEC (char *, num_c_args)); + c_ptr = CONST_CAST (const char **, (c_argv = XCNEWVEC (char *, num_c_args))); if (argc < 2) fatal ("no arguments"); @@ -1406,7 +1406,8 @@ main (int argc, char **argv) if (strip_flag) { char **real_strip_argv = XCNEWVEC (char *, 3); - const char ** strip_argv = (const char **) real_strip_argv; + const char ** strip_argv = CONST_CAST (const char **, + real_strip_argv); strip_argv[0] = strip_file_name; strip_argv[1] = output_file; @@ -2090,7 +2091,7 @@ scan_prog_file (const char *prog_name, enum pass which_pass) void (*quit_handler) (int); #endif char *real_nm_argv[4]; - const char **nm_argv = (const char **) real_nm_argv; + const char **nm_argv = CONST_CAST (const char **, real_nm_argv); int argc = 0; struct pex_obj *pex; const char *errmsg; diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index c678a607c66..a5bead7321d 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -333,9 +333,7 @@ adjust_frame_related_expr (rtx last_sp_set, rtx insn, if (note) XEXP (note, 0) = new_expr; else - REG_NOTES (last_sp_set) - = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, new_expr, - REG_NOTES (last_sp_set)); + add_reg_note (last_sp_set, REG_FRAME_RELATED_EXPR, new_expr); } /* Subroutine of combine_stack_adjustments, called for each basic block. */ @@ -551,7 +549,7 @@ struct rtl_opt_pass pass_stack_adjustments = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/combine.c b/gcc/combine.c index bbb7135aa75..3483496916b 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -342,10 +342,12 @@ static int nonzero_sign_valid; /* Record one modification to rtl structure to be undone by storing old_contents into *where. */ +enum undo_kinds { UNDO_RTX, UNDO_INT, UNDO_MODE }; + struct undo { struct undo *next; - enum { UNDO_RTX, UNDO_INT, UNDO_MODE } kind; + enum undo_kinds kind; union { rtx r; int i; enum machine_mode m; } old_contents; union { rtx *r; int *i; } where; }; @@ -3621,12 +3623,12 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) if (i3dest_killed) { if (newi2pat && reg_set_p (i3dest_killed, newi2pat)) - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed, - NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i3dest_killed, + NULL_RTX), NULL_RTX, i2, NULL_RTX, elim_i2, elim_i1); else - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed, - NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i3dest_killed, + NULL_RTX), NULL_RTX, i3, newi2pat ? i2 : NULL_RTX, elim_i2, elim_i1); } @@ -3634,10 +3636,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) if (i2dest_in_i2src) { if (newi2pat && reg_set_p (i2dest, newi2pat)) - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i2dest, NULL_RTX), NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX); else - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i2dest, NULL_RTX), NULL_RTX, i3, newi2pat ? i2 : NULL_RTX, NULL_RTX, NULL_RTX); } @@ -3645,10 +3647,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) if (i1dest_in_i1src) { if (newi2pat && reg_set_p (i1dest, newi2pat)) - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i1dest, NULL_RTX), NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX); else - distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX), + distribute_notes (alloc_reg_note (REG_DEAD, i1dest, NULL_RTX), NULL_RTX, i3, newi2pat ? i2 : NULL_RTX, NULL_RTX, NULL_RTX); } @@ -9848,8 +9850,8 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes) if (GET_CODE (XEXP (XVECEXP (newpat, 0, i), 0)) != SCRATCH) { gcc_assert (REG_P (XEXP (XVECEXP (newpat, 0, i), 0))); - notes = gen_rtx_EXPR_LIST (REG_UNUSED, - XEXP (XVECEXP (newpat, 0, i), 0), notes); + notes = alloc_reg_note (REG_UNUSED, + XEXP (XVECEXP (newpat, 0, i), 0), notes); } } pat = newpat; @@ -11374,11 +11376,11 @@ record_value_for_reg (rtx reg, rtx insn, rtx value) rsp->last_set = insn; rsp->last_set_value = 0; - rsp->last_set_mode = 0; + rsp->last_set_mode = VOIDmode; rsp->last_set_nonzero_bits = 0; rsp->last_set_sign_bit_copies = 0; rsp->last_death = 0; - rsp->truncated_to_mode = 0; + rsp->truncated_to_mode = VOIDmode; } /* Mark registers that are being referenced in this value. */ @@ -11525,11 +11527,11 @@ record_dead_and_set_regs (rtx insn) rsp->last_set_invalid = 1; rsp->last_set = insn; rsp->last_set_value = 0; - rsp->last_set_mode = 0; + rsp->last_set_mode = VOIDmode; rsp->last_set_nonzero_bits = 0; rsp->last_set_sign_bit_copies = 0; rsp->last_death = 0; - rsp->truncated_to_mode = 0; + rsp->truncated_to_mode = VOIDmode; } last_call_luid = mem_last_set = DF_INSN_LUID (insn); @@ -12220,7 +12222,7 @@ move_deaths (rtx x, rtx maybe_kill_insn, int from_luid, rtx to_insn, *pnotes = note; } else - *pnotes = gen_rtx_EXPR_LIST (REG_DEAD, x, *pnotes); + *pnotes = alloc_reg_note (REG_DEAD, x, *pnotes); } return; @@ -12790,7 +12792,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2, PATTERN (place))) { rtx new_note - = gen_rtx_EXPR_LIST (REG_DEAD, piece, NULL_RTX); + = alloc_reg_note (REG_DEAD, piece, NULL_RTX); distribute_notes (new_note, place, place, NULL_RTX, NULL_RTX, NULL_RTX); @@ -12837,9 +12839,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2, } if (place2) - REG_NOTES (place2) - = gen_rtx_fmt_ee (GET_CODE (note), REG_NOTE_KIND (note), - XEXP (note, 0), REG_NOTES (place2)); + add_reg_note (place2, REG_NOTE_KIND (note), XEXP (note, 0)); } } diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index 3d17c104e39..fe6fef1fd87 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -273,10 +273,10 @@ ix86_pragma_target_parse (tree args, tree pop_target) prev_isa = prev_opt->ix86_isa_flags; cur_isa = cur_opt->ix86_isa_flags; diff_isa = (prev_isa ^ cur_isa); - prev_arch = prev_opt->arch; - prev_tune = prev_opt->tune; - cur_arch = cur_opt->arch; - cur_tune = cur_opt->tune; + prev_arch = (enum processor_type) prev_opt->arch; + prev_tune = (enum processor_type) prev_opt->tune; + cur_arch = (enum processor_type) cur_opt->arch; + cur_tune = (enum processor_type) cur_opt->tune; /* If the same processor is used for both previous and current options, don't change the macros. */ @@ -290,14 +290,14 @@ ix86_pragma_target_parse (tree args, tree pop_target) ix86_target_macros_internal (prev_isa & diff_isa, prev_arch, prev_tune, - prev_opt->fpmath, + (enum fpmath_unit) prev_opt->fpmath, cpp_undef); /* Define all of the macros for new options that were just turned on. */ ix86_target_macros_internal (cur_isa & diff_isa, cur_arch, cur_tune, - cur_opt->fpmath, + (enum fpmath_unit) cur_opt->fpmath, cpp_define); return true; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e6d4367fe93..ec77cc16de2 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3280,10 +3280,6 @@ override_options (bool main_args_p) static void ix86_function_specific_save (struct cl_target_option *ptr) { - gcc_assert (IN_RANGE (ix86_arch, 0, 255)); - gcc_assert (IN_RANGE (ix86_schedule, 0, 255)); - gcc_assert (IN_RANGE (ix86_tune, 0, 255)); - gcc_assert (IN_RANGE (ix86_fpmath, 0, 255)); gcc_assert (IN_RANGE (ix86_branch_cost, 0, 255)); ptr->arch = ix86_arch; @@ -3307,10 +3303,10 @@ ix86_function_specific_restore (struct cl_target_option *ptr) unsigned int ix86_arch_mask, ix86_tune_mask; int i; - ix86_arch = ptr->arch; - ix86_schedule = ptr->schedule; - ix86_tune = ptr->tune; - ix86_fpmath = ptr->fpmath; + ix86_arch = (enum processor_type) ptr->arch; + ix86_schedule = (enum attr_cpu) ptr->schedule; + ix86_tune = (enum processor_type) ptr->tune; + ix86_fpmath = (enum fpmath_unit) ptr->fpmath; ix86_branch_cost = ptr->branch_cost; ix86_tune_defaulted = ptr->tune_defaulted; ix86_arch_specified = ptr->arch_specified; @@ -8208,8 +8204,7 @@ ix86_expand_prologue (void) RTX_FRAME_RELATED_P (insn) = 1; t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (-allocate)); t = gen_rtx_SET (VOIDmode, stack_pointer_rtx, t); - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, - t, REG_NOTES (insn)); + add_reg_note (insn, REG_FRAME_RELATED_EXPR, t); if (eax_live) { @@ -14456,20 +14451,14 @@ ix86_split_fp_branch (enum rtx_code code, rtx op1, rtx op2, label), pc_rtx))); if (bypass_probability >= 0) - REG_NOTES (i) - = gen_rtx_EXPR_LIST (REG_BR_PROB, - GEN_INT (bypass_probability), - REG_NOTES (i)); + add_reg_note (i, REG_BR_PROB, GEN_INT (bypass_probability)); } i = emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, gen_rtx_IF_THEN_ELSE (VOIDmode, condition, target1, target2))); if (probability >= 0) - REG_NOTES (i) - = gen_rtx_EXPR_LIST (REG_BR_PROB, - GEN_INT (probability), - REG_NOTES (i)); + add_reg_note (i, REG_BR_PROB, GEN_INT (probability)); if (second != NULL_RTX) { i = emit_jump_insn (gen_rtx_SET @@ -14477,10 +14466,7 @@ ix86_split_fp_branch (enum rtx_code code, rtx op1, rtx op2, gen_rtx_IF_THEN_ELSE (VOIDmode, second, target1, target2))); if (second_probability >= 0) - REG_NOTES (i) - = gen_rtx_EXPR_LIST (REG_BR_PROB, - GEN_INT (second_probability), - REG_NOTES (i)); + add_reg_note (i, REG_BR_PROB, GEN_INT (second_probability)); } if (label != NULL_RTX) emit_label (label); @@ -16678,10 +16664,7 @@ predict_jump (int prob) { rtx insn = get_last_insn (); gcc_assert (JUMP_P (insn)); - REG_NOTES (insn) - = gen_rtx_EXPR_LIST (REG_BR_PROB, - GEN_INT (prob), - REG_NOTES (insn)); + add_reg_note (insn, REG_BR_PROB, GEN_INT (prob)); } /* Helper function for the string operations below. Dest VARIABLE whether @@ -21546,81 +21529,81 @@ enum multi_arg_type { static const struct builtin_description bdesc_multi_arg[] = { - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmaddv4sf4, "__builtin_ia32_fmaddss", IX86_BUILTIN_FMADDSS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmaddv2df4, "__builtin_ia32_fmaddsd", IX86_BUILTIN_FMADDSD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmaddv4sf4, "__builtin_ia32_fmaddps", IX86_BUILTIN_FMADDPS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmaddv2df4, "__builtin_ia32_fmaddpd", IX86_BUILTIN_FMADDPD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmsubv4sf4, "__builtin_ia32_fmsubss", IX86_BUILTIN_FMSUBSS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmsubv2df4, "__builtin_ia32_fmsubsd", IX86_BUILTIN_FMSUBSD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmsubv4sf4, "__builtin_ia32_fmsubps", IX86_BUILTIN_FMSUBPS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmsubv2df4, "__builtin_ia32_fmsubpd", IX86_BUILTIN_FMSUBPD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmaddv4sf4, "__builtin_ia32_fnmaddss", IX86_BUILTIN_FNMADDSS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmaddv2df4, "__builtin_ia32_fnmaddsd", IX86_BUILTIN_FNMADDSD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmaddv4sf4, "__builtin_ia32_fnmaddps", IX86_BUILTIN_FNMADDPS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmaddv2df4, "__builtin_ia32_fnmaddpd", IX86_BUILTIN_FNMADDPD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmsubv4sf4, "__builtin_ia32_fnmsubss", IX86_BUILTIN_FNMSUBSS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmsubv2df4, "__builtin_ia32_fnmsubsd", IX86_BUILTIN_FNMSUBSD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmsubv4sf4, "__builtin_ia32_fnmsubps", IX86_BUILTIN_FNMSUBPS, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmsubv2df4, "__builtin_ia32_fnmsubpd", IX86_BUILTIN_FNMSUBPD, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2di, "__builtin_ia32_pcmov", IX86_BUILTIN_PCMOV, 0, (int)MULTI_ARG_3_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2di, "__builtin_ia32_pcmov_v2di", IX86_BUILTIN_PCMOV_V2DI, 0, (int)MULTI_ARG_3_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v4si, "__builtin_ia32_pcmov_v4si", IX86_BUILTIN_PCMOV_V4SI, 0, (int)MULTI_ARG_3_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v8hi, "__builtin_ia32_pcmov_v8hi", IX86_BUILTIN_PCMOV_V8HI, 0, (int)MULTI_ARG_3_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v16qi, "__builtin_ia32_pcmov_v16qi",IX86_BUILTIN_PCMOV_V16QI,0, (int)MULTI_ARG_3_QI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2df, "__builtin_ia32_pcmov_v2df", IX86_BUILTIN_PCMOV_V2DF, 0, (int)MULTI_ARG_3_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v4sf, "__builtin_ia32_pcmov_v4sf", IX86_BUILTIN_PCMOV_V4SF, 0, (int)MULTI_ARG_3_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pperm, "__builtin_ia32_pperm", IX86_BUILTIN_PPERM, 0, (int)MULTI_ARG_3_QI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_permv4sf, "__builtin_ia32_permps", IX86_BUILTIN_PERMPS, 0, (int)MULTI_ARG_3_PERMPS }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_permv2df, "__builtin_ia32_permpd", IX86_BUILTIN_PERMPD, 0, (int)MULTI_ARG_3_PERMPD }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssww, "__builtin_ia32_pmacssww", IX86_BUILTIN_PMACSSWW, 0, (int)MULTI_ARG_3_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsww, "__builtin_ia32_pmacsww", IX86_BUILTIN_PMACSWW, 0, (int)MULTI_ARG_3_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsswd, "__builtin_ia32_pmacsswd", IX86_BUILTIN_PMACSSWD, 0, (int)MULTI_ARG_3_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacswd, "__builtin_ia32_pmacswd", IX86_BUILTIN_PMACSWD, 0, (int)MULTI_ARG_3_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdd, "__builtin_ia32_pmacssdd", IX86_BUILTIN_PMACSSDD, 0, (int)MULTI_ARG_3_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdd, "__builtin_ia32_pmacsdd", IX86_BUILTIN_PMACSDD, 0, (int)MULTI_ARG_3_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdql, "__builtin_ia32_pmacssdql", IX86_BUILTIN_PMACSSDQL, 0, (int)MULTI_ARG_3_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdqh, "__builtin_ia32_pmacssdqh", IX86_BUILTIN_PMACSSDQH, 0, (int)MULTI_ARG_3_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdql, "__builtin_ia32_pmacsdql", IX86_BUILTIN_PMACSDQL, 0, (int)MULTI_ARG_3_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdqh, "__builtin_ia32_pmacsdqh", IX86_BUILTIN_PMACSDQH, 0, (int)MULTI_ARG_3_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmadcsswd, "__builtin_ia32_pmadcsswd", IX86_BUILTIN_PMADCSSWD, 0, (int)MULTI_ARG_3_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmadcswd, "__builtin_ia32_pmadcswd", IX86_BUILTIN_PMADCSWD, 0, (int)MULTI_ARG_3_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv2di3, "__builtin_ia32_protq", IX86_BUILTIN_PROTQ, 0, (int)MULTI_ARG_2_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv4si3, "__builtin_ia32_protd", IX86_BUILTIN_PROTD, 0, (int)MULTI_ARG_2_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv8hi3, "__builtin_ia32_protw", IX86_BUILTIN_PROTW, 0, (int)MULTI_ARG_2_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv16qi3, "__builtin_ia32_protb", IX86_BUILTIN_PROTB, 0, (int)MULTI_ARG_2_QI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv2di3, "__builtin_ia32_protqi", IX86_BUILTIN_PROTQ_IMM, 0, (int)MULTI_ARG_2_DI_IMM }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv4si3, "__builtin_ia32_protdi", IX86_BUILTIN_PROTD_IMM, 0, (int)MULTI_ARG_2_SI_IMM }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv8hi3, "__builtin_ia32_protwi", IX86_BUILTIN_PROTW_IMM, 0, (int)MULTI_ARG_2_HI_IMM }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv16qi3, "__builtin_ia32_protbi", IX86_BUILTIN_PROTB_IMM, 0, (int)MULTI_ARG_2_QI_IMM }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv2di3, "__builtin_ia32_pshaq", IX86_BUILTIN_PSHAQ, 0, (int)MULTI_ARG_2_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv4si3, "__builtin_ia32_pshad", IX86_BUILTIN_PSHAD, 0, (int)MULTI_ARG_2_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv8hi3, "__builtin_ia32_pshaw", IX86_BUILTIN_PSHAW, 0, (int)MULTI_ARG_2_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv16qi3, "__builtin_ia32_pshab", IX86_BUILTIN_PSHAB, 0, (int)MULTI_ARG_2_QI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv2di3, "__builtin_ia32_pshlq", IX86_BUILTIN_PSHLQ, 0, (int)MULTI_ARG_2_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv4si3, "__builtin_ia32_pshld", IX86_BUILTIN_PSHLD, 0, (int)MULTI_ARG_2_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv8hi3, "__builtin_ia32_pshlw", IX86_BUILTIN_PSHLW, 0, (int)MULTI_ARG_2_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv16qi3, "__builtin_ia32_pshlb", IX86_BUILTIN_PSHLB, 0, (int)MULTI_ARG_2_QI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmfrczv4sf2, "__builtin_ia32_frczss", IX86_BUILTIN_FRCZSS, 0, (int)MULTI_ARG_2_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmfrczv2df2, "__builtin_ia32_frczsd", IX86_BUILTIN_FRCZSD, 0, (int)MULTI_ARG_2_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_frczv4sf2, "__builtin_ia32_frczps", IX86_BUILTIN_FRCZPS, 0, (int)MULTI_ARG_1_SF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_frczv2df2, "__builtin_ia32_frczpd", IX86_BUILTIN_FRCZPD, 0, (int)MULTI_ARG_1_DF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_cvtph2ps, "__builtin_ia32_cvtph2ps", IX86_BUILTIN_CVTPH2PS, 0, (int)MULTI_ARG_1_PH2PS }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_cvtps2ph, "__builtin_ia32_cvtps2ph", IX86_BUILTIN_CVTPS2PH, 0, (int)MULTI_ARG_1_PS2PH }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbw, "__builtin_ia32_phaddbw", IX86_BUILTIN_PHADDBW, 0, (int)MULTI_ARG_1_QI_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbd, "__builtin_ia32_phaddbd", IX86_BUILTIN_PHADDBD, 0, (int)MULTI_ARG_1_QI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbq, "__builtin_ia32_phaddbq", IX86_BUILTIN_PHADDBQ, 0, (int)MULTI_ARG_1_QI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddwd, "__builtin_ia32_phaddwd", IX86_BUILTIN_PHADDWD, 0, (int)MULTI_ARG_1_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddwq, "__builtin_ia32_phaddwq", IX86_BUILTIN_PHADDWQ, 0, (int)MULTI_ARG_1_HI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadddq, "__builtin_ia32_phadddq", IX86_BUILTIN_PHADDDQ, 0, (int)MULTI_ARG_1_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubw, "__builtin_ia32_phaddubw", IX86_BUILTIN_PHADDUBW, 0, (int)MULTI_ARG_1_QI_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubd, "__builtin_ia32_phaddubd", IX86_BUILTIN_PHADDUBD, 0, (int)MULTI_ARG_1_QI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubq, "__builtin_ia32_phaddubq", IX86_BUILTIN_PHADDUBQ, 0, (int)MULTI_ARG_1_QI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadduwd, "__builtin_ia32_phadduwd", IX86_BUILTIN_PHADDUWD, 0, (int)MULTI_ARG_1_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadduwq, "__builtin_ia32_phadduwq", IX86_BUILTIN_PHADDUWQ, 0, (int)MULTI_ARG_1_HI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddudq, "__builtin_ia32_phaddudq", IX86_BUILTIN_PHADDUDQ, 0, (int)MULTI_ARG_1_SI_DI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubbw, "__builtin_ia32_phsubbw", IX86_BUILTIN_PHSUBBW, 0, (int)MULTI_ARG_1_QI_HI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubwd, "__builtin_ia32_phsubwd", IX86_BUILTIN_PHSUBWD, 0, (int)MULTI_ARG_1_HI_SI }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubdq, "__builtin_ia32_phsubdq", IX86_BUILTIN_PHSUBDQ, 0, (int)MULTI_ARG_1_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmaddv4sf4, "__builtin_ia32_fmaddss", IX86_BUILTIN_FMADDSS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmaddv2df4, "__builtin_ia32_fmaddsd", IX86_BUILTIN_FMADDSD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmaddv4sf4, "__builtin_ia32_fmaddps", IX86_BUILTIN_FMADDPS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmaddv2df4, "__builtin_ia32_fmaddpd", IX86_BUILTIN_FMADDPD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmsubv4sf4, "__builtin_ia32_fmsubss", IX86_BUILTIN_FMSUBSS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfmsubv2df4, "__builtin_ia32_fmsubsd", IX86_BUILTIN_FMSUBSD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmsubv4sf4, "__builtin_ia32_fmsubps", IX86_BUILTIN_FMSUBPS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fmsubv2df4, "__builtin_ia32_fmsubpd", IX86_BUILTIN_FMSUBPD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmaddv4sf4, "__builtin_ia32_fnmaddss", IX86_BUILTIN_FNMADDSS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmaddv2df4, "__builtin_ia32_fnmaddsd", IX86_BUILTIN_FNMADDSD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmaddv4sf4, "__builtin_ia32_fnmaddps", IX86_BUILTIN_FNMADDPS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmaddv2df4, "__builtin_ia32_fnmaddpd", IX86_BUILTIN_FNMADDPD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmsubv4sf4, "__builtin_ia32_fnmsubss", IX86_BUILTIN_FNMSUBSS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_vmfnmsubv2df4, "__builtin_ia32_fnmsubsd", IX86_BUILTIN_FNMSUBSD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmsubv4sf4, "__builtin_ia32_fnmsubps", IX86_BUILTIN_FNMSUBPS, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5i_fnmsubv2df4, "__builtin_ia32_fnmsubpd", IX86_BUILTIN_FNMSUBPD, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2di, "__builtin_ia32_pcmov", IX86_BUILTIN_PCMOV, UNKNOWN, (int)MULTI_ARG_3_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2di, "__builtin_ia32_pcmov_v2di", IX86_BUILTIN_PCMOV_V2DI, UNKNOWN, (int)MULTI_ARG_3_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v4si, "__builtin_ia32_pcmov_v4si", IX86_BUILTIN_PCMOV_V4SI, UNKNOWN, (int)MULTI_ARG_3_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v8hi, "__builtin_ia32_pcmov_v8hi", IX86_BUILTIN_PCMOV_V8HI, UNKNOWN, (int)MULTI_ARG_3_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v16qi, "__builtin_ia32_pcmov_v16qi",IX86_BUILTIN_PCMOV_V16QI,UNKNOWN, (int)MULTI_ARG_3_QI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v2df, "__builtin_ia32_pcmov_v2df", IX86_BUILTIN_PCMOV_V2DF, UNKNOWN, (int)MULTI_ARG_3_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcmov_v4sf, "__builtin_ia32_pcmov_v4sf", IX86_BUILTIN_PCMOV_V4SF, UNKNOWN, (int)MULTI_ARG_3_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pperm, "__builtin_ia32_pperm", IX86_BUILTIN_PPERM, UNKNOWN, (int)MULTI_ARG_3_QI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_permv4sf, "__builtin_ia32_permps", IX86_BUILTIN_PERMPS, UNKNOWN, (int)MULTI_ARG_3_PERMPS }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_permv2df, "__builtin_ia32_permpd", IX86_BUILTIN_PERMPD, UNKNOWN, (int)MULTI_ARG_3_PERMPD }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssww, "__builtin_ia32_pmacssww", IX86_BUILTIN_PMACSSWW, UNKNOWN, (int)MULTI_ARG_3_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsww, "__builtin_ia32_pmacsww", IX86_BUILTIN_PMACSWW, UNKNOWN, (int)MULTI_ARG_3_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsswd, "__builtin_ia32_pmacsswd", IX86_BUILTIN_PMACSSWD, UNKNOWN, (int)MULTI_ARG_3_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacswd, "__builtin_ia32_pmacswd", IX86_BUILTIN_PMACSWD, UNKNOWN, (int)MULTI_ARG_3_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdd, "__builtin_ia32_pmacssdd", IX86_BUILTIN_PMACSSDD, UNKNOWN, (int)MULTI_ARG_3_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdd, "__builtin_ia32_pmacsdd", IX86_BUILTIN_PMACSDD, UNKNOWN, (int)MULTI_ARG_3_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdql, "__builtin_ia32_pmacssdql", IX86_BUILTIN_PMACSSDQL, UNKNOWN, (int)MULTI_ARG_3_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacssdqh, "__builtin_ia32_pmacssdqh", IX86_BUILTIN_PMACSSDQH, UNKNOWN, (int)MULTI_ARG_3_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdql, "__builtin_ia32_pmacsdql", IX86_BUILTIN_PMACSDQL, UNKNOWN, (int)MULTI_ARG_3_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmacsdqh, "__builtin_ia32_pmacsdqh", IX86_BUILTIN_PMACSDQH, UNKNOWN, (int)MULTI_ARG_3_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmadcsswd, "__builtin_ia32_pmadcsswd", IX86_BUILTIN_PMADCSSWD, UNKNOWN, (int)MULTI_ARG_3_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pmadcswd, "__builtin_ia32_pmadcswd", IX86_BUILTIN_PMADCSWD, UNKNOWN, (int)MULTI_ARG_3_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv2di3, "__builtin_ia32_protq", IX86_BUILTIN_PROTQ, UNKNOWN, (int)MULTI_ARG_2_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv4si3, "__builtin_ia32_protd", IX86_BUILTIN_PROTD, UNKNOWN, (int)MULTI_ARG_2_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv8hi3, "__builtin_ia32_protw", IX86_BUILTIN_PROTW, UNKNOWN, (int)MULTI_ARG_2_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vrotlv16qi3, "__builtin_ia32_protb", IX86_BUILTIN_PROTB, UNKNOWN, (int)MULTI_ARG_2_QI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv2di3, "__builtin_ia32_protqi", IX86_BUILTIN_PROTQ_IMM, UNKNOWN, (int)MULTI_ARG_2_DI_IMM }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv4si3, "__builtin_ia32_protdi", IX86_BUILTIN_PROTD_IMM, UNKNOWN, (int)MULTI_ARG_2_SI_IMM }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv8hi3, "__builtin_ia32_protwi", IX86_BUILTIN_PROTW_IMM, UNKNOWN, (int)MULTI_ARG_2_HI_IMM }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_rotlv16qi3, "__builtin_ia32_protbi", IX86_BUILTIN_PROTB_IMM, UNKNOWN, (int)MULTI_ARG_2_QI_IMM }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv2di3, "__builtin_ia32_pshaq", IX86_BUILTIN_PSHAQ, UNKNOWN, (int)MULTI_ARG_2_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv4si3, "__builtin_ia32_pshad", IX86_BUILTIN_PSHAD, UNKNOWN, (int)MULTI_ARG_2_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv8hi3, "__builtin_ia32_pshaw", IX86_BUILTIN_PSHAW, UNKNOWN, (int)MULTI_ARG_2_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_ashlv16qi3, "__builtin_ia32_pshab", IX86_BUILTIN_PSHAB, UNKNOWN, (int)MULTI_ARG_2_QI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv2di3, "__builtin_ia32_pshlq", IX86_BUILTIN_PSHLQ, UNKNOWN, (int)MULTI_ARG_2_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv4si3, "__builtin_ia32_pshld", IX86_BUILTIN_PSHLD, UNKNOWN, (int)MULTI_ARG_2_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv8hi3, "__builtin_ia32_pshlw", IX86_BUILTIN_PSHLW, UNKNOWN, (int)MULTI_ARG_2_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_lshlv16qi3, "__builtin_ia32_pshlb", IX86_BUILTIN_PSHLB, UNKNOWN, (int)MULTI_ARG_2_QI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmfrczv4sf2, "__builtin_ia32_frczss", IX86_BUILTIN_FRCZSS, UNKNOWN, (int)MULTI_ARG_2_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmfrczv2df2, "__builtin_ia32_frczsd", IX86_BUILTIN_FRCZSD, UNKNOWN, (int)MULTI_ARG_2_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_frczv4sf2, "__builtin_ia32_frczps", IX86_BUILTIN_FRCZPS, UNKNOWN, (int)MULTI_ARG_1_SF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_frczv2df2, "__builtin_ia32_frczpd", IX86_BUILTIN_FRCZPD, UNKNOWN, (int)MULTI_ARG_1_DF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_cvtph2ps, "__builtin_ia32_cvtph2ps", IX86_BUILTIN_CVTPH2PS, UNKNOWN, (int)MULTI_ARG_1_PH2PS }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_cvtps2ph, "__builtin_ia32_cvtps2ph", IX86_BUILTIN_CVTPS2PH, UNKNOWN, (int)MULTI_ARG_1_PS2PH }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbw, "__builtin_ia32_phaddbw", IX86_BUILTIN_PHADDBW, UNKNOWN, (int)MULTI_ARG_1_QI_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbd, "__builtin_ia32_phaddbd", IX86_BUILTIN_PHADDBD, UNKNOWN, (int)MULTI_ARG_1_QI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddbq, "__builtin_ia32_phaddbq", IX86_BUILTIN_PHADDBQ, UNKNOWN, (int)MULTI_ARG_1_QI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddwd, "__builtin_ia32_phaddwd", IX86_BUILTIN_PHADDWD, UNKNOWN, (int)MULTI_ARG_1_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddwq, "__builtin_ia32_phaddwq", IX86_BUILTIN_PHADDWQ, UNKNOWN, (int)MULTI_ARG_1_HI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadddq, "__builtin_ia32_phadddq", IX86_BUILTIN_PHADDDQ, UNKNOWN, (int)MULTI_ARG_1_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubw, "__builtin_ia32_phaddubw", IX86_BUILTIN_PHADDUBW, UNKNOWN, (int)MULTI_ARG_1_QI_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubd, "__builtin_ia32_phaddubd", IX86_BUILTIN_PHADDUBD, UNKNOWN, (int)MULTI_ARG_1_QI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddubq, "__builtin_ia32_phaddubq", IX86_BUILTIN_PHADDUBQ, UNKNOWN, (int)MULTI_ARG_1_QI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadduwd, "__builtin_ia32_phadduwd", IX86_BUILTIN_PHADDUWD, UNKNOWN, (int)MULTI_ARG_1_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phadduwq, "__builtin_ia32_phadduwq", IX86_BUILTIN_PHADDUWQ, UNKNOWN, (int)MULTI_ARG_1_HI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phaddudq, "__builtin_ia32_phaddudq", IX86_BUILTIN_PHADDUDQ, UNKNOWN, (int)MULTI_ARG_1_SI_DI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubbw, "__builtin_ia32_phsubbw", IX86_BUILTIN_PHSUBBW, UNKNOWN, (int)MULTI_ARG_1_QI_HI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubwd, "__builtin_ia32_phsubwd", IX86_BUILTIN_PHSUBWD, UNKNOWN, (int)MULTI_ARG_1_HI_SI }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_phsubdq, "__builtin_ia32_phsubdq", IX86_BUILTIN_PHSUBDQ, UNKNOWN, (int)MULTI_ARG_1_SI_DI }, { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmmaskcmpv4sf3, "__builtin_ia32_comeqss", IX86_BUILTIN_COMEQSS, EQ, (int)MULTI_ARG_2_SF_CMP }, { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_vmmaskcmpv4sf3, "__builtin_ia32_comness", IX86_BUILTIN_COMNESS, NE, (int)MULTI_ARG_2_SF_CMP }, @@ -21754,32 +21737,32 @@ static const struct builtin_description bdesc_multi_arg[] = { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_maskcmp_unsv2di3, "__builtin_ia32_pcomgtuq", IX86_BUILTIN_PCOMGTUQ, GTU, (int)MULTI_ARG_2_DI_CMP }, { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_maskcmp_unsv2di3, "__builtin_ia32_pcomgeuq", IX86_BUILTIN_PCOMGEUQ, GEU, (int)MULTI_ARG_2_DI_CMP }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comfalsess", IX86_BUILTIN_COMFALSESS, COM_FALSE_S, (int)MULTI_ARG_2_SF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comtruess", IX86_BUILTIN_COMTRUESS, COM_TRUE_S, (int)MULTI_ARG_2_SF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comfalseps", IX86_BUILTIN_COMFALSEPS, COM_FALSE_P, (int)MULTI_ARG_2_SF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comtrueps", IX86_BUILTIN_COMTRUEPS, COM_TRUE_P, (int)MULTI_ARG_2_SF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comfalsesd", IX86_BUILTIN_COMFALSESD, COM_FALSE_S, (int)MULTI_ARG_2_DF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comtruesd", IX86_BUILTIN_COMTRUESD, COM_TRUE_S, (int)MULTI_ARG_2_DF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comfalsepd", IX86_BUILTIN_COMFALSEPD, COM_FALSE_P, (int)MULTI_ARG_2_DF_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comtruepd", IX86_BUILTIN_COMTRUEPD, COM_TRUE_P, (int)MULTI_ARG_2_DF_TF }, - - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomfalseb", IX86_BUILTIN_PCOMFALSEB, PCOM_FALSE, (int)MULTI_ARG_2_QI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomfalsew", IX86_BUILTIN_PCOMFALSEW, PCOM_FALSE, (int)MULTI_ARG_2_HI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomfalsed", IX86_BUILTIN_PCOMFALSED, PCOM_FALSE, (int)MULTI_ARG_2_SI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomfalseq", IX86_BUILTIN_PCOMFALSEQ, PCOM_FALSE, (int)MULTI_ARG_2_DI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomfalseub",IX86_BUILTIN_PCOMFALSEUB,PCOM_FALSE, (int)MULTI_ARG_2_QI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomfalseuw",IX86_BUILTIN_PCOMFALSEUW,PCOM_FALSE, (int)MULTI_ARG_2_HI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomfalseud",IX86_BUILTIN_PCOMFALSEUD,PCOM_FALSE, (int)MULTI_ARG_2_SI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomfalseuq",IX86_BUILTIN_PCOMFALSEUQ,PCOM_FALSE, (int)MULTI_ARG_2_DI_TF }, - - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomtrueb", IX86_BUILTIN_PCOMTRUEB, PCOM_TRUE, (int)MULTI_ARG_2_QI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomtruew", IX86_BUILTIN_PCOMTRUEW, PCOM_TRUE, (int)MULTI_ARG_2_HI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomtrued", IX86_BUILTIN_PCOMTRUED, PCOM_TRUE, (int)MULTI_ARG_2_SI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomtrueq", IX86_BUILTIN_PCOMTRUEQ, PCOM_TRUE, (int)MULTI_ARG_2_DI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomtrueub", IX86_BUILTIN_PCOMTRUEUB, PCOM_TRUE, (int)MULTI_ARG_2_QI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomtrueuw", IX86_BUILTIN_PCOMTRUEUW, PCOM_TRUE, (int)MULTI_ARG_2_HI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomtrueud", IX86_BUILTIN_PCOMTRUEUD, PCOM_TRUE, (int)MULTI_ARG_2_SI_TF }, - { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomtrueuq", IX86_BUILTIN_PCOMTRUEUQ, PCOM_TRUE, (int)MULTI_ARG_2_DI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comfalsess", IX86_BUILTIN_COMFALSESS, (enum rtx_code) COM_FALSE_S, (int)MULTI_ARG_2_SF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comtruess", IX86_BUILTIN_COMTRUESS, (enum rtx_code) COM_TRUE_S, (int)MULTI_ARG_2_SF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comfalseps", IX86_BUILTIN_COMFALSEPS, (enum rtx_code) COM_FALSE_P, (int)MULTI_ARG_2_SF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv4sf3, "__builtin_ia32_comtrueps", IX86_BUILTIN_COMTRUEPS, (enum rtx_code) COM_TRUE_P, (int)MULTI_ARG_2_SF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comfalsesd", IX86_BUILTIN_COMFALSESD, (enum rtx_code) COM_FALSE_S, (int)MULTI_ARG_2_DF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comtruesd", IX86_BUILTIN_COMTRUESD, (enum rtx_code) COM_TRUE_S, (int)MULTI_ARG_2_DF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comfalsepd", IX86_BUILTIN_COMFALSEPD, (enum rtx_code) COM_FALSE_P, (int)MULTI_ARG_2_DF_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_com_tfv2df3, "__builtin_ia32_comtruepd", IX86_BUILTIN_COMTRUEPD, (enum rtx_code) COM_TRUE_P, (int)MULTI_ARG_2_DF_TF }, + + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomfalseb", IX86_BUILTIN_PCOMFALSEB, (enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_QI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomfalsew", IX86_BUILTIN_PCOMFALSEW, (enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_HI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomfalsed", IX86_BUILTIN_PCOMFALSED, (enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_SI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomfalseq", IX86_BUILTIN_PCOMFALSEQ, (enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_DI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomfalseub",IX86_BUILTIN_PCOMFALSEUB ,(enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_QI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomfalseuw",IX86_BUILTIN_PCOMFALSEUW ,(enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_HI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomfalseud",IX86_BUILTIN_PCOMFALSEUD ,(enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_SI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomfalseuq",IX86_BUILTIN_PCOMFALSEUQ ,(enum rtx_code) PCOM_FALSE, (int)MULTI_ARG_2_DI_TF }, + + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomtrueb", IX86_BUILTIN_PCOMTRUEB, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_QI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomtruew", IX86_BUILTIN_PCOMTRUEW, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_HI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomtrued", IX86_BUILTIN_PCOMTRUED, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_SI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomtrueq", IX86_BUILTIN_PCOMTRUEQ, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_DI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv16qi3, "__builtin_ia32_pcomtrueub", IX86_BUILTIN_PCOMTRUEUB, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_QI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv8hi3, "__builtin_ia32_pcomtrueuw", IX86_BUILTIN_PCOMTRUEUW, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_HI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv4si3, "__builtin_ia32_pcomtrueud", IX86_BUILTIN_PCOMTRUEUD, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_SI_TF }, + { OPTION_MASK_ISA_SSE5, CODE_FOR_sse5_pcom_tfv2di3, "__builtin_ia32_pcomtrueuq", IX86_BUILTIN_PCOMTRUEUQ, (enum rtx_code) PCOM_TRUE, (int)MULTI_ARG_2_DI_TF }, }; /* Set up all the MMX/SSE builtins, even builtins for instructions that are not @@ -23483,7 +23466,7 @@ ix86_expand_binop_builtin (enum insn_code icode, tree exp, rtx target) static rtx ix86_expand_multi_arg_builtin (enum insn_code icode, tree exp, rtx target, enum multi_arg_type m_type, - enum insn_code sub_code) + enum rtx_code sub_code) { rtx pat; int i; @@ -24720,7 +24703,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, tree arg0, arg1, arg2; rtx op0, op1, op2, pat; enum machine_mode mode0, mode1, mode2; - unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + enum ix86_builtins fcode = (enum ix86_builtins) DECL_FUNCTION_CODE (fndecl); /* Determine whether the builtin function is available under the current ISA. Originally the builtin was not created if it wasn't applicable to the @@ -24969,7 +24952,8 @@ ix86_builtin_vectorized_function (unsigned int fn, tree type_out, /* Dispatch to a handler for a vectorization library. */ if (ix86_veclib_handler) - return (*ix86_veclib_handler)(fn, type_out, type_in); + return (*ix86_veclib_handler)((enum built_in_function) fn, type_out, + type_in); return NULL_TREE; } diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 39e62fbe6bd..677cb20d3a9 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4357,7 +4357,9 @@ ; else { - int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL; + enum ix86_stack_slot slot = (virtuals_instantiated + ? SLOT_TEMP + : SLOT_VIRTUAL); rtx temp = assign_386_stack_local (SFmode, slot); emit_insn (gen_truncdfsf2_with_temp (operands[0], operands[1], temp)); DONE; @@ -4542,7 +4544,9 @@ } else { - int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL; + enum ix86_stack_slot slot = (virtuals_instantiated + ? SLOT_TEMP + : SLOT_VIRTUAL); operands[2] = assign_386_stack_local (<MODE>mode, slot); } }) @@ -5686,7 +5690,9 @@ } else { - int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL; + enum ix86_stack_slot slot = (virtuals_instantiated + ? SLOT_TEMP + : SLOT_VIRTUAL); operands[2] = assign_386_stack_local (DImode, slot); } }) @@ -18899,7 +18905,9 @@ emit_insn (gen_fxam<mode>2_i387_with_temp (scratch, operands[1])); else { - int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL; + enum ix86_stack_slot slot = (virtuals_instantiated + ? SLOT_TEMP + : SLOT_VIRTUAL); rtx temp = assign_386_stack_local (<MODE>mode, slot); emit_move_insn (temp, operands[1]); diff --git a/gcc/config/i386/t-i386 b/gcc/config/i386/t-i386 index 4c0c046dae6..8aecc0721b5 100644 --- a/gcc/config/i386/t-i386 +++ b/gcc/config/i386/t-i386 @@ -10,4 +10,4 @@ i386-c.o: $(srcdir)/config/i386/i386-c.c \ $(srcdir)/config/i386/i386-protos.h $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(FLAGS_H) $(C_COMMON_H) $(GGC_H) \ $(TARGET_H) $(TARGET_DEF_H) $(CPPLIB_H) $(C_PRAGMA_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/i386-c.c + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/i386-c.c diff --git a/gcc/config/i386/x-darwin b/gcc/config/i386/x-darwin index 9a3b0f262ce..530ba9fe6b9 100644 --- a/gcc/config/i386/x-darwin +++ b/gcc/config/i386/x-darwin @@ -1,4 +1,4 @@ host-i386-darwin.o : $(srcdir)/config/i386/host-i386-darwin.c \ $(CONFIG_H) $(SYSTEM_H) coretypes.h hosthooks.h $(HOSTHOOKS_DEF_H) \ config/host-darwin.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc/config/i386/x-i386 b/gcc/config/i386/x-i386 index 9f03de4535e..bff97207bc7 100644 --- a/gcc/config/i386/x-i386 +++ b/gcc/config/i386/x-i386 @@ -1,4 +1,4 @@ driver-i386.o : $(srcdir)/config/i386/driver-i386.c \ $(srcdir)/config/i386/cpuid.h \ $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc/config/linux.opt b/gcc/config/linux.opt index fe8c075b35c..ec4841076b2 100644 --- a/gcc/config/linux.opt +++ b/gcc/config/linux.opt @@ -19,10 +19,10 @@ ; along with GCC; see the file COPYING3. If not see ; <http://www.gnu.org/licenses/>. -muclibc -Target RejectNegative Report Mask(UCLIBC) Var(linux_uclibc) Init(UCLIBC_DEFAULT ? OPTION_MASK_UCLIBC : 0) -Use uClibc instead of GNU libc - mglibc -Target RejectNegative Report InverseMask(UCLIBC, GLIBC) Var(linux_uclibc) VarExists +Target RejectNegative Report InverseMask(UCLIBC, GLIBC) Var(linux_uclibc) Init(UCLIBC_DEFAULT ? OPTION_MASK_UCLIBC : 0) Use GNU libc instead of uClibc + +muclibc +Target RejectNegative Report Mask(UCLIBC) Var(linux_uclibc) VarExists +Use uClibc instead of GNU libc diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin index b1ba53c4774..02f2f4632a0 100644 --- a/gcc/config/t-darwin +++ b/gcc/config/t-darwin @@ -3,22 +3,22 @@ darwin.o: $(srcdir)/config/darwin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ conditions.h insn-flags.h output.h insn-attr.h flags.h $(TREE_H) expr.h \ reload.h function.h $(GGC_H) langhooks.h $(TARGET_H) $(TM_P_H) gt-darwin.h \ config/darwin-sections.def - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/darwin.c + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/darwin.c darwin-c.o: $(srcdir)/config/darwin-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(CPPLIB_H) $(TREE_H) c-pragma.h $(C_TREE_H) toplev.h $(TM_P_H) \ incpath.h flags.h $(C_COMMON_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/darwin-c.c $(PREPROCESSOR_DEFINES) + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/darwin-c.c $(PREPROCESSOR_DEFINES) darwin-f.o: $(srcdir)/config/darwin-f.c $(CONFIG_H) $(SYSTEM_H) coretypes.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/darwin-f.c $(PREPROCESSOR_DEFINES) gt-darwin.h : s-gtype ; @true darwin-driver.o: $(srcdir)/config/darwin-driver.c \ $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/darwin-driver.c # How to build crt3.o diff --git a/gcc/config/x-darwin b/gcc/config/x-darwin index c2ffd7d5c89..b7b653d96b4 100644 --- a/gcc/config/x-darwin +++ b/gcc/config/x-darwin @@ -1,3 +1,3 @@ host-darwin.o : $(srcdir)/config/host-darwin.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h toplev.h config/host-darwin.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc/config/x-linux b/gcc/config/x-linux index e4aa040bceb..56907723135 100644 --- a/gcc/config/x-linux +++ b/gcc/config/x-linux @@ -1,4 +1,4 @@ host-linux.o : $(srcdir)/config/host-linux.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h hosthooks.h hosthooks-def.h $(HOOKS_H) - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/host-linux.c diff --git a/gcc/configure b/gcc/configure index 04775acf6e9..6609d5d8ace 100755 --- a/gcc/configure +++ b/gcc/configure @@ -458,7 +458,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn c_loose_warn strict_warn c_strict_warn warn_cflags warn_cxxflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CXXCPP objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' ac_subst_files='language_hooks' ac_pwd=`pwd` @@ -916,10 +916,22 @@ ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP ac_env_GMPLIBS_set=${GMPLIBS+set} ac_env_GMPLIBS_value=$GMPLIBS ac_cv_env_GMPLIBS_set=${GMPLIBS+set} @@ -1130,7 +1142,10 @@ Some influential environment variables: nonstandard directory <lib dir> CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> + CXX C++ compiler command + CXXFLAGS C++ compiler flags CPP C preprocessor + CXXCPP C++ preprocessor GMPLIBS How to link GMP GMPINC How to find GMP include files PPLLIBS How to link PPL @@ -3113,6 +3128,361 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then CC="$am_aux_dir/compile $CC" fi +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + @@ -7034,7 +7404,7 @@ fi loose_warn= save_CFLAGS="$CFLAGS" -for option in -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual; do +for option in -W -Wall -Wwrite-strings -Wcast-qual; do as_acx_Woption=`echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` echo "$as_me:$LINENO: checking whether $CC supports $option" >&5 @@ -7099,9 +7469,76 @@ fi done CFLAGS="$save_CFLAGS" +c_loose_warn= +save_CFLAGS="$CFLAGS" +for option in -Wstrict-prototypes -Wmissing-prototypes; do + as_acx_Woption=`echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` + + echo "$as_me:$LINENO: checking whether $CC supports $option" >&5 +echo $ECHO_N "checking whether $CC supports $option... $ECHO_C" >&6 +if eval "test \"\${$as_acx_Woption+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + CFLAGS="$option" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_acx_Woption=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_acx_Woption=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_acx_Woption'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_acx_Woption'}'`" >&6 + if test `eval echo '${'$as_acx_Woption'}'` = yes; then + c_loose_warn="$c_loose_warn${c_loose_warn:+ }$option" +fi + + done +CFLAGS="$save_CFLAGS" + strict_warn= save_CFLAGS="$CFLAGS" -for option in -Wold-style-definition -Wc++-compat -Wmissing-format-attribute; do +for option in -Wmissing-format-attribute; do as_acx_Woption=`echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` echo "$as_me:$LINENO: checking whether $CC supports $option" >&5 @@ -7166,6 +7603,73 @@ fi done CFLAGS="$save_CFLAGS" +c_strict_warn= +save_CFLAGS="$CFLAGS" +for option in -Wold-style-definition -Wc++-compat; do + as_acx_Woption=`echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` + + echo "$as_me:$LINENO: checking whether $CC supports $option" >&5 +echo $ECHO_N "checking whether $CC supports $option... $ECHO_C" >&6 +if eval "test \"\${$as_acx_Woption+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + CFLAGS="$option" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_acx_Woption=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_acx_Woption=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_acx_Woption'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_acx_Woption'}'`" >&6 + if test `eval echo '${'$as_acx_Woption'}'` = yes; then + c_strict_warn="$c_strict_warn${c_strict_warn:+ }$option" +fi + + done +CFLAGS="$save_CFLAGS" + if test "$GCC" = yes; then echo "$as_me:$LINENO: checking whether $CC supports -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings" >&5 echo $ECHO_N "checking whether $CC supports -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings... $ECHO_C" >&6 @@ -7249,11 +7753,14 @@ fi # Makefile has more goo to add other flags, so this variabl is used to # enables warnings only for GCC. warn_cflags= +warn_cxxflags= if test "x$GCC" = "xyes"; then warn_cflags='$(GCC_WARN_CFLAGS)' + warn_cxxflags='$(GCC_WARN_CXXFLAGS)' fi + # Enable expensive internal checks is_release= if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then @@ -14509,13 +15016,13 @@ if test "${lt_cv_nm_interface+set}" = set; then else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:14512: $ac_compile\"" >&5) + (eval echo "\"\$as_me:15019: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:14515: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:15022: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:14518: output\"" >&5) + (eval echo "\"\$as_me:15025: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -15672,7 +16179,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 15675 "configure"' > conftest.$ac_ext + echo '#line 16182 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -16471,6 +16978,600 @@ done +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +echo "$as_me: error: in \`$ac_pwd':" >&2;} +_lt_caught_CXX_error=yes; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + + + + + # Set options @@ -16971,11 +18072,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16974: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18075: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16978: \$? = $ac_status" >&5 + echo "$as_me:18079: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -17310,11 +18411,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17313: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18414: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17317: \$? = $ac_status" >&5 + echo "$as_me:18418: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -17415,11 +18516,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17418: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18519: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17422: \$? = $ac_status" >&5 + echo "$as_me:18523: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17470,11 +18571,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17473: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18574: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17477: \$? = $ac_status" >&5 + echo "$as_me:18578: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20282,7 +21383,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20285 "configure" +#line 21386 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20378,7 +21479,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20381 "configure" +#line 21482 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20586,6 +21687,2943 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:23498: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:23502: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6 + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:23597: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:23601: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:23649: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:23653: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +if test "${lt_cv_archive_cmds_need_lc_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc_CXX" >&6 + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then + lt_cv_shlibpath_overrides_runpath=yes +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + @@ -25463,6 +29501,9 @@ s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@GNATBIND@,$GNATBIND,;t t s,@ac_ct_GNATBIND@,$ac_ct_GNATBIND,;t t s,@GNATMAKE@,$GNATMAKE,;t t @@ -25472,8 +29513,11 @@ s,@OUTPUT_OPTION@,$OUTPUT_OPTION,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@loose_warn@,$loose_warn,;t t +s,@c_loose_warn@,$c_loose_warn,;t t s,@strict_warn@,$strict_warn,;t t +s,@c_strict_warn@,$c_strict_warn,;t t s,@warn_cflags@,$warn_cflags,;t t +s,@warn_cxxflags@,$warn_cxxflags,;t t s,@nocommon_flag@,$nocommon_flag,;t t s,@TREEBROWSER@,$TREEBROWSER,;t t s,@valgrind_path@,$valgrind_path,;t t @@ -25570,6 +29614,7 @@ s,@OTOOL@,$OTOOL,;t t s,@ac_ct_OTOOL@,$ac_ct_OTOOL,;t t s,@OTOOL64@,$OTOOL64,;t t s,@ac_ct_OTOOL64@,$ac_ct_OTOOL64,;t t +s,@CXXCPP@,$CXXCPP,;t t s,@objdir@,$objdir,;t t s,@enable_fast_install@,$enable_fast_install,;t t s,@gcc_cv_as@,$gcc_cv_as,;t t diff --git a/gcc/configure.ac b/gcc/configure.ac index 04ea19d340d..69a6f0de083 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -276,6 +276,7 @@ rm -f a.out a.exe b.out # Find the native compiler AC_PROG_CC AM_PROG_CC_C_O +AC_PROG_CXX ACX_PROG_GNAT([-I"$srcdir"/ada]) # autoconf is lame and doesn't give us any substitution variable for this. @@ -323,11 +324,14 @@ AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)]) # So, we only use -pedantic if we can disable those warnings. ACX_PROG_CC_WARNING_OPTS( - m4_quote(m4_do([-W -Wall -Wwrite-strings -Wstrict-prototypes ], - [-Wmissing-prototypes -Wcast-qual])), [loose_warn]) + m4_quote(m4_do([-W -Wall -Wwrite-strings -Wcast-qual])), [loose_warn]) ACX_PROG_CC_WARNING_OPTS( - m4_quote(m4_do([-Wold-style-definition -Wc++-compat ], - [-Wmissing-format-attribute])), [strict_warn]) + m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])), + [c_loose_warn]) +ACX_PROG_CC_WARNING_OPTS( + m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn]) +ACX_PROG_CC_WARNING_OPTS( + m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn]) ACX_PROG_CC_WARNING_ALMOST_PEDANTIC( m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], [-Wno-overlength-strings])), [strict_warn]) @@ -337,10 +341,13 @@ ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn]) # Makefile has more goo to add other flags, so this variabl is used to # enables warnings only for GCC. warn_cflags= +warn_cxxflags= if test "x$GCC" = "xyes"; then warn_cflags='$(GCC_WARN_CFLAGS)' + warn_cxxflags='$(GCC_WARN_CXXFLAGS)' fi AC_SUBST(warn_cflags) +AC_SUBST(warn_cxxflags) # Enable expensive internal checks is_release= diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 38aec6cf182..fb7218b8915 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -54,13 +54,13 @@ c++: cc1plus$(exeext) g++spec.o: $(srcdir)/cp/g++spec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CONFIG_H) (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ $(INCLUDES) $(srcdir)/cp/g++spec.c) # Create the compiler driver for g++. GXX_OBJS = $(GCC_OBJS) g++spec.o intl.o prefix.o version.o g++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(GXX_OBJS) $(EXTRA_GCC_OBJS) $(LIBS) # Create a version of the g++ driver which calls the cross-compiler. @@ -92,7 +92,7 @@ c++_OBJS = $(CXX_OBJS) dummy-checksum.o cc1plus-checksum.o cp/g++spec.o cp-warn = $(STRICT_WARN) cc1plus-dummy$(exeext): $(CXX_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(CXX_OBJS) dummy-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS) cc1plus-checksum.c : cc1plus-dummy$(exeext) build/genchecksum$(build_exeext) @@ -101,7 +101,7 @@ cc1plus-checksum.c : cc1plus-dummy$(exeext) build/genchecksum$(build_exeext) cc1plus-checksum.o : cc1plus-checksum.c cc1plus$(exeext): $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS) # Special build rules. @@ -253,7 +253,7 @@ cp/typeck2.o: cp/typeck2.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h output.h \ cp/typeck.o: cp/typeck.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) $(RTL_H) $(EXPR_H) \ toplev.h $(DIAGNOSTIC_H) convert.h $(C_COMMON_H) $(TARGET_H) cp/class.o: cp/class.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h $(RTL_H) \ - $(TARGET_H) convert.h $(CGRAPH_H) $(TREE_DUMP_H) + $(TARGET_H) convert.h $(CGRAPH_H) $(TREE_DUMP_H) gt-cp-class.h cp/call.o: cp/call.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) toplev.h $(RTL_H) \ $(EXPR_H) $(DIAGNOSTIC_H) intl.h gt-cp-call.h convert.h $(TARGET_H) langhooks.h cp/friend.o: cp/friend.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) $(RTL_H) toplev.h \ @@ -284,7 +284,8 @@ cp/repo.o: cp/repo.c $(CXX_TREE_H) $(TM_H) toplev.h $(DIAGNOSTIC_H) \ gt-cp-repo.h cp/semantics.o: cp/semantics.c $(CXX_TREE_H) $(TM_H) except.h toplev.h \ $(FLAGS_H) debug.h output.h $(RTL_H) $(TIMEVAR_H) $(EXPR_H) \ - $(TREE_INLINE_H) $(CGRAPH_H) $(TARGET_H) $(C_COMMON_H) $(GIMPLE_H) + $(TREE_INLINE_H) $(CGRAPH_H) $(TARGET_H) $(C_COMMON_H) $(GIMPLE_H) \ + gt-cp-semantics.h cp/dump.o: cp/dump.c $(CXX_TREE_H) $(TM_H) $(TREE_DUMP_H) cp/optimize.o: cp/optimize.c $(CXX_TREE_H) $(TM_H) rtl.h $(INTEGRATE_H) \ insn-config.h input.h $(PARAMS_H) debug.h $(TREE_INLINE_H) $(GIMPLE_H) \ diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 745c31facc2..35a9f6a5c16 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -131,7 +131,7 @@ static struct z_candidate * tourney (struct z_candidate *); static int equal_functions (tree, tree); static int joust (struct z_candidate *, struct z_candidate *, bool); static int compare_ics (conversion *, conversion *); -static tree build_over_call (struct z_candidate *, int, tsubst_flags_t); +static tree build_over_call (struct z_candidate *, int, int); static tree build_java_interface_fn_ref (tree, tree); #define convert_like(CONV, EXPR, COMPLAIN) \ convert_like_real ((CONV), (EXPR), NULL_TREE, 0, 0, \ @@ -142,10 +142,10 @@ static tree build_java_interface_fn_ref (tree, tree); /*issue_conversion_warnings=*/true, \ /*c_cast_p=*/false, (COMPLAIN)) static tree convert_like_real (conversion *, tree, tree, int, int, bool, - bool, tsubst_flags_t); + bool, int); static void op_error (enum tree_code, enum tree_code, tree, tree, tree, const char *); -static tree build_object_call (tree, tree, tsubst_flags_t); +static tree build_object_call (tree, tree, int); static tree resolve_args (tree); static struct z_candidate *build_user_type_conversion_1 (tree, tree, int); static void print_z_candidate (const char *, struct z_candidate *); @@ -706,7 +706,7 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p, if ((TYPE_PTRFN_P (to) || TYPE_PTRMEMFUNC_P (to)) && expr && type_unknown_p (expr)) { - tsubst_flags_t tflags = tf_conv; + int tflags = tf_conv; if (!(flags & LOOKUP_PROTECT)) tflags |= tf_no_access_control; expr = instantiate_type (to, expr, tflags); @@ -1195,7 +1195,7 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags) tree tfrom; bool related_p; bool compatible_p; - cp_lvalue_kind lvalue_p = clk_none; + int lvalue_p = clk_none; if (TREE_CODE (to) == FUNCTION_TYPE && expr && type_unknown_p (expr)) { @@ -2985,7 +2985,7 @@ perform_overload_resolution (tree fn, tree build_new_function_call (tree fn, tree args, bool koenig_p, - tsubst_flags_t complain) + int complain) { struct z_candidate *candidates, *cand; bool any_viable_p; @@ -3153,7 +3153,7 @@ build_operator_new_call (tree fnname, tree args, } static tree -build_object_call (tree obj, tree args, tsubst_flags_t complain) +build_object_call (tree obj, tree args, int complain) { struct z_candidate *candidates = 0, *cand; tree fns, convs, mem_args = NULL_TREE; @@ -3393,8 +3393,7 @@ conditional_conversion (tree e1, tree e2) arguments to the conditional expression. */ tree -build_conditional_expr (tree arg1, tree arg2, tree arg3, - tsubst_flags_t complain) +build_conditional_expr (tree arg1, tree arg2, tree arg3, int complain) { tree arg2_type; tree arg3_type; @@ -3889,7 +3888,7 @@ add_candidates (tree fns, tree args, tree build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3, - bool *overloaded_p, tsubst_flags_t complain) + bool *overloaded_p, int complain) { struct z_candidate *candidates = 0, *cand; tree arglist, fnname; @@ -4466,7 +4465,7 @@ build_temp (tree expr, tree type, int flags, else if (errorcount > savee) *diagnostic_kind = DK_ERROR; else - *diagnostic_kind = 0; + *diagnostic_kind = DK_UNSPECIFIED; return expr; } @@ -4509,7 +4508,7 @@ conversion_null_warnings (tree totype, tree expr, tree fn, int argnum) static tree convert_like_real (conversion *convs, tree expr, tree fn, int argnum, int inner, bool issue_conversion_warnings, - bool c_cast_p, tsubst_flags_t complain) + bool c_cast_p, int complain) { tree totype = convs->type; diagnostic_t diag_kind; @@ -4722,7 +4721,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, || TREE_CODE (expr) == VA_ARG_EXPR) { tree type = convs->u.next->type; - cp_lvalue_kind lvalue = real_lvalue_p (expr); + int lvalue = real_lvalue_p (expr); if (!CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (ref_type)) && !TYPE_REF_IS_RVALUE (ref_type)) @@ -5100,7 +5099,7 @@ magic_varargs_p (tree fn) bitmask of various LOOKUP_* flags which apply to the call itself. */ static tree -build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) +build_over_call (struct z_candidate *cand, int flags, int complain) { tree fn = cand->fn; tree args = cand->args; @@ -5583,7 +5582,7 @@ in_charge_arg_for_name (tree name) tree build_special_member_call (tree instance, tree name, tree args, - tree binfo, int flags, tsubst_flags_t complain) + tree binfo, int flags, int complain) { tree fns; /* The type of the subobject to be constructed or destroyed. */ @@ -5728,7 +5727,7 @@ name_as_c_string (tree name, tree type, bool *free_p) tree build_new_method_call (tree instance, tree fns, tree args, tree conversion_path, int flags, - tree *fn_p, tsubst_flags_t complain) + tree *fn_p, int complain) { struct z_candidate *candidates = 0, *cand; tree explicit_targs = NULL_TREE; @@ -6945,7 +6944,7 @@ can_convert_arg_bad (tree to, tree from, tree arg) doing a bad conversion, convert_like will complain. */ tree -perform_implicit_conversion (tree type, tree expr, tsubst_flags_t complain) +perform_implicit_conversion (tree type, tree expr, int complain) { conversion *conv; void *p; @@ -6994,7 +6993,7 @@ tree perform_direct_initialization_if_possible (tree type, tree expr, bool c_cast_p, - tsubst_flags_t complain) + int complain) { conversion *conv; void *p; diff --git a/gcc/cp/class.c b/gcc/cp/class.c index b8553effc03..d97869a22d0 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -4853,7 +4853,7 @@ layout_class_type (tree t, tree *virtuals_p) if (DECL_C_BIT_FIELD (field) && INT_CST_LT (TYPE_SIZE (type), DECL_SIZE (field))) { - integer_type_kind itk; + int itk; tree integer_type; bool was_unnamed_p = false; /* We must allocate the bits as if suitably aligned for the @@ -5943,7 +5943,7 @@ pop_lang_context (void) static tree resolve_address_of_overloaded_function (tree target_type, tree overload, - tsubst_flags_t flags, + int flags, bool template_only, tree explicit_targs, tree access_path) @@ -6239,9 +6239,9 @@ resolve_address_of_overloaded_function (tree target_type, function, or a pointer to member function. */ tree -instantiate_type (tree lhstype, tree rhs, tsubst_flags_t flags) +instantiate_type (tree lhstype, tree rhs, int flags) { - tsubst_flags_t flags_in = flags; + int flags_in = flags; tree access_path = NULL_TREE; flags &= ~tf_ptrmem_ok; diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index bb12988d1fa..466415752ea 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -653,7 +653,7 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) break; default: - ret = c_gimplify_expr (expr_p, pre_p, post_p); + ret = (enum gimplify_status) c_gimplify_expr (expr_p, pre_p, post_p); break; } diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index c8fa77c2099..c49a5286363 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -69,7 +69,7 @@ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; tree objcp_tsubst_copy_and_build (tree t ATTRIBUTE_UNUSED, tree args ATTRIBUTE_UNUSED, - tsubst_flags_t complain ATTRIBUTE_UNUSED, + int complain ATTRIBUTE_UNUSED, tree in_decl ATTRIBUTE_UNUSED, bool function_p ATTRIBUTE_UNUSED) { diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index f24107598aa..4a3dac12297 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -23,8 +23,7 @@ along with GCC; see the file COPYING3. If not see /* In cp/cp-lang.c and objcp/objcp-lang.c. */ -extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t, - tree, bool); +extern tree objcp_tsubst_copy_and_build (tree, tree, int, tree, bool); /* Lang hooks that are shared between C++ and ObjC++ are defined here. Hooks specific to C++ or ObjC++ go in cp/cp-lang.c and objcp/objcp-lang.c, diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index b0052c256f4..52a3791ddb5 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -4178,8 +4178,7 @@ extern bool pragma_java_exceptions; extern bool check_dtor_name (tree, tree); extern tree build_vfield_ref (tree, tree); -extern tree build_conditional_expr (tree, tree, tree, - tsubst_flags_t); +extern tree build_conditional_expr (tree, tree, tree, int); extern tree build_addr_func (tree); extern tree build_call_a (tree, int, tree*); extern tree build_call_n (tree, int, ...); @@ -4187,17 +4186,16 @@ extern bool null_ptr_cst_p (tree); extern bool sufficient_parms_p (const_tree); extern tree type_decays_to (tree); extern tree build_user_type_conversion (tree, tree, int); -extern tree build_new_function_call (tree, tree, bool, - tsubst_flags_t); +extern tree build_new_function_call (tree, tree, bool, int); extern tree build_operator_new_call (tree, tree, tree *, tree *, tree *); extern tree build_new_method_call (tree, tree, tree, tree, int, - tree *, tsubst_flags_t); + tree *, int); extern tree build_special_member_call (tree, tree, tree, tree, int, - tsubst_flags_t); + int); extern tree build_new_op (enum tree_code, int, tree, tree, tree, bool *, - tsubst_flags_t); + int); extern tree build_op_delete_call (enum tree_code, tree, tree, bool, tree, tree); extern bool can_convert (tree, tree); extern bool can_convert_arg (tree, tree, tree, int); @@ -4214,9 +4212,9 @@ extern tree set_up_extended_ref_temp (tree, tree, tree *, tree *); extern tree initialize_reference (tree, tree, tree, tree *); extern tree make_temporary_var_for_ref_to_temp (tree, tree); extern tree strip_top_quals (tree); -extern tree perform_implicit_conversion (tree, tree, tsubst_flags_t); +extern tree perform_implicit_conversion (tree, tree, int); extern tree perform_direct_initialization_if_possible (tree, tree, bool, - tsubst_flags_t); + int); extern tree in_charge_arg_for_name (tree); extern tree build_cxx_call (tree, int, tree *); extern bool is_std_init_list (tree); @@ -4251,7 +4249,7 @@ extern void pop_nested_class (void); extern int current_lang_depth (void); extern void push_lang_context (tree); extern void pop_lang_context (void); -extern tree instantiate_type (tree, tree, tsubst_flags_t); +extern tree instantiate_type (tree, tree, int); extern void print_class_statistics (void); extern void cxx_print_statistics (void); extern void cxx_print_xnode (FILE *, tree, int); @@ -4290,7 +4288,7 @@ extern tree ocp_convert (tree, tree, int, int); extern tree cp_convert (tree, tree); extern tree cp_convert_and_check (tree, tree); extern tree convert_to_void (tree, const char */*implicit context*/, - tsubst_flags_t); + int); extern tree convert_force (tree, tree, int); extern tree build_expr_type_conversion (int, tree, bool); extern tree type_promotes_to (tree); @@ -4321,8 +4319,9 @@ extern tree declare_local_label (tree); extern tree define_label (location_t, tree); extern void check_goto (tree); extern bool check_omp_return (void); -extern tree make_typename_type (tree, tree, enum tag_types, tsubst_flags_t); -extern tree make_unbound_class_template (tree, tree, tree, tsubst_flags_t); +extern tree make_typename_type (tree, tree, enum tag_types, + int); +extern tree make_unbound_class_template (tree, tree, tree, int); extern tree check_for_out_of_scope_variable (tree); extern tree build_library_fn_ptr (const char *, tree); extern tree build_cp_library_fn_ptr (const char *, tree); @@ -4476,8 +4475,7 @@ extern tree do_friend (tree, tree, tree, tree, enum overload_flags, bool); /* in init.c */ extern tree expand_member_init (tree); extern void emit_mem_initializers (tree); -extern tree build_aggr_init (tree, tree, int, - tsubst_flags_t); +extern tree build_aggr_init (tree, tree, int, int); extern int is_class_type (tree, int); extern tree get_type_value (tree); extern tree build_zero_init (tree, tree, bool); @@ -4485,9 +4483,9 @@ extern tree build_value_init (tree); extern tree build_value_init_noctor (tree); extern tree build_offset_ref (tree, tree, bool); extern tree build_new (tree, tree, tree, tree, int, - tsubst_flags_t); + int); extern tree build_vec_init (tree, tree, tree, bool, int, - tsubst_flags_t); + int); extern tree build_delete (tree, tree, special_function_kind, int, int); @@ -4561,18 +4559,18 @@ extern tree push_template_decl (tree); extern tree push_template_decl_real (tree, bool); extern bool redeclare_class_template (tree, tree); extern tree lookup_template_class (tree, tree, tree, tree, - int, tsubst_flags_t); + int, int); extern tree lookup_template_function (tree, tree); extern int uses_template_parms (tree); extern int uses_template_parms_level (tree, int); extern tree instantiate_class_template (tree); -extern tree instantiate_template (tree, tree, tsubst_flags_t); +extern tree instantiate_template (tree, tree, int); extern int fn_type_unification (tree, tree, tree, tree, tree, unification_kind_t, int); extern void mark_decl_instantiated (tree, int); extern int more_specialized_fn (tree, tree, int); extern void do_decl_instantiation (tree, tree); -extern void do_type_instantiation (tree, tree, tsubst_flags_t); +extern void do_type_instantiation (tree, tree, int); extern tree instantiate_decl (tree, int, bool); extern int comp_template_parms (const_tree, const_tree); extern bool uses_parameter_packs (tree); @@ -4589,7 +4587,7 @@ extern tree most_specialized_instantiation (tree); extern void print_candidates (tree); extern void instantiate_pending_templates (int); extern tree tsubst_default_argument (tree, tree, tree); -extern tree tsubst_copy_and_build (tree, tree, tsubst_flags_t, +extern tree tsubst_copy_and_build (tree, tree, int, tree, bool, bool); extern tree most_general_template (tree); extern tree get_mostly_instantiated_function_type (tree); @@ -4634,14 +4632,13 @@ extern tree build_typeid (tree); extern tree get_tinfo_decl (tree); extern tree get_typeid (tree); extern tree build_headof (tree); -extern tree build_dynamic_cast (tree, tree, tsubst_flags_t); +extern tree build_dynamic_cast (tree, tree, int); extern void emit_support_tinfos (void); extern bool emit_tinfo_decl (tree); /* in search.c */ extern bool accessible_base_p (tree, tree, bool); -extern tree lookup_base (tree, tree, base_access, - base_kind *); +extern tree lookup_base (tree, tree, int, base_kind *); extern tree dcast_base_hint (tree, tree); extern int accessible_p (tree, tree, bool); extern tree lookup_field_1 (tree, tree, bool); @@ -4765,8 +4762,7 @@ extern tree finish_stmt_expr_expr (tree, tree); extern tree finish_stmt_expr (tree, bool); extern tree stmt_expr_value_expr (tree); extern tree perform_koenig_lookup (tree, tree); -extern tree finish_call_expr (tree, tree, bool, bool, - tsubst_flags_t); +extern tree finish_call_expr (tree, tree, bool, bool, int); extern tree finish_increment_expr (tree, enum tree_code); extern tree finish_this_expr (void); extern tree finish_pseudo_destructor_expr (tree, tree, tree); @@ -4850,7 +4846,7 @@ extern tree canonical_type_variant (tree); extern tree copy_binfo (tree, tree, tree, tree *, int); extern int member_p (const_tree); -extern cp_lvalue_kind real_lvalue_p (tree); +extern int real_lvalue_p (tree); extern bool builtin_valid_in_constant_expr_p (const_tree); extern tree build_min (enum tree_code, tree, ...); extern tree build_min_nt (enum tree_code, ...); @@ -4891,7 +4887,7 @@ extern const struct attribute_spec cxx_attribute_table[]; extern tree make_ptrmem_cst (tree, tree); extern tree cp_build_type_attribute_variant (tree, tree); extern tree cp_build_reference_type (tree, bool); -extern tree cp_build_qualified_type_real (tree, int, tsubst_flags_t); +extern tree cp_build_qualified_type_real (tree, int, int); #define cp_build_qualified_type(TYPE, QUALS) \ cp_build_qualified_type_real ((TYPE), (QUALS), tf_warning_or_error) extern special_function_kind special_function_p (const_tree); @@ -4931,45 +4927,40 @@ extern tree cxx_sizeof_nowarn (tree); extern tree is_bitfield_expr_with_lowered_type (const_tree); extern tree unlowered_expr_type (const_tree); extern tree decay_conversion (tree); -extern tree build_class_member_access_expr (tree, tree, tree, bool, - tsubst_flags_t); -extern tree finish_class_member_access_expr (tree, tree, bool, - tsubst_flags_t); +extern tree build_class_member_access_expr (tree, tree, tree, bool, int); +extern tree finish_class_member_access_expr (tree, tree, bool, int); extern tree build_x_indirect_ref (tree, const char *, - tsubst_flags_t); -extern tree cp_build_indirect_ref (tree, const char *, - tsubst_flags_t); + int); +extern tree cp_build_indirect_ref (tree, const char *, int); extern tree build_array_ref (tree, tree, location_t); extern tree get_member_function_from_ptrfunc (tree *, tree); -extern tree cp_build_function_call (tree, tree, tsubst_flags_t); +extern tree cp_build_function_call (tree, tree, int); extern tree build_x_binary_op (enum tree_code, tree, enum tree_code, tree, enum tree_code, bool *, - tsubst_flags_t); -extern tree build_x_array_ref (tree, tree, tsubst_flags_t); -extern tree build_x_unary_op (enum tree_code, tree, - tsubst_flags_t); + int); +extern tree build_x_array_ref (tree, tree, int); +extern tree build_x_unary_op (enum tree_code, tree, int); extern tree cp_build_unary_op (enum tree_code, tree, int, - tsubst_flags_t); + int); extern tree unary_complex_lvalue (enum tree_code, tree); -extern tree build_x_conditional_expr (tree, tree, tree, - tsubst_flags_t); +extern tree build_x_conditional_expr (tree, tree, tree, int); extern tree build_x_compound_expr_from_list (tree, const char *); -extern tree build_x_compound_expr (tree, tree, tsubst_flags_t); +extern tree build_x_compound_expr (tree, tree, int); extern tree build_compound_expr (tree, tree); -extern tree cp_build_compound_expr (tree, tree, tsubst_flags_t); -extern tree build_static_cast (tree, tree, tsubst_flags_t); -extern tree build_reinterpret_cast (tree, tree, tsubst_flags_t); -extern tree build_const_cast (tree, tree, tsubst_flags_t); +extern tree cp_build_compound_expr (tree, tree, int); +extern tree build_static_cast (tree, tree, int); +extern tree build_reinterpret_cast (tree, tree, int); +extern tree build_const_cast (tree, tree, int); extern tree build_c_cast (tree, tree); -extern tree cp_build_c_cast (tree, tree, tsubst_flags_t); +extern tree cp_build_c_cast (tree, tree, int); extern tree build_x_modify_expr (tree, enum tree_code, tree, - tsubst_flags_t); + int); extern tree cp_build_modify_expr (tree, enum tree_code, tree, - tsubst_flags_t); + int); extern tree convert_for_initialization (tree, tree, tree, int, const char *, tree, int, - tsubst_flags_t); + int); extern int comp_ptr_ttypes (tree, tree); extern bool comp_ptr_ttypes_const (tree, tree); extern int ptr_reasonably_similar (const_tree, const_tree); @@ -4984,23 +4975,23 @@ extern void expand_ptrmemfunc_cst (tree, tree *, tree *); extern tree type_after_usual_arithmetic_conversions (tree, tree); extern tree common_pointer_type (tree, tree); extern tree composite_pointer_type (tree, tree, tree, tree, - const char*, tsubst_flags_t); + const char*, int); extern tree merge_types (tree, tree); extern tree check_return_expr (tree, bool *); extern tree cp_build_binary_op (location_t, enum tree_code, tree, tree, - tsubst_flags_t); + int); #define cxx_sizeof(T) cxx_sizeof_or_alignof_type (T, SIZEOF_EXPR, true) extern tree build_ptrmemfunc_access_expr (tree, tree); extern tree build_address (tree); extern tree build_nop (tree, tree); extern tree non_reference (tree); extern tree lookup_anon_field (tree, tree); -extern bool invalid_nonstatic_memfn_p (const_tree, tsubst_flags_t); +extern bool invalid_nonstatic_memfn_p (const_tree, int); extern tree convert_member_func_to_ptr (tree, tree); extern tree convert_ptrmem (tree, tree, bool, bool); extern int lvalue_or_else (tree, enum lvalue_use, - tsubst_flags_t); + int); extern int lvalue_p (tree); /* in typeck2.c */ @@ -5022,7 +5013,7 @@ extern tree digest_init (tree, tree); extern tree build_scoped_ref (tree, tree, tree *); extern tree build_x_arrow (tree); extern tree build_m_component_ref (tree, tree); -extern tree build_functional_cast (tree, tree, tsubst_flags_t); +extern tree build_functional_cast (tree, tree, int); extern tree add_exception_specifier (tree, tree, int); extern tree merge_exception_specifiers (tree, tree); diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index fed4ab2910c..f9f47c81684 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -783,7 +783,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags) IMPLICIT is tells us the context of an implicit void conversion. */ tree -convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain) +convert_to_void (tree expr, const char *implicit, int complain) { if (expr == error_mark_node || TREE_TYPE (expr) == error_mark_node) @@ -807,11 +807,12 @@ convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain) /* The two parts of a cond expr might be separate lvalues. */ tree op1 = TREE_OPERAND (expr,1); tree op2 = TREE_OPERAND (expr,2); + bool side_effects = TREE_SIDE_EFFECTS (op1) || TREE_SIDE_EFFECTS (op2); tree new_op1 = convert_to_void - (op1, (implicit && !TREE_SIDE_EFFECTS (op2) + (op1, (implicit && !side_effects ? "second operand of conditional" : NULL), complain); tree new_op2 = convert_to_void - (op2, (implicit && !TREE_SIDE_EFFECTS (op1) + (op2, (implicit && !side_effects ? "third operand of conditional" : NULL), complain); expr = build3 (COND_EXPR, TREE_TYPE (new_op1), diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index b16ae262bea..3ca5bc4e70d 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2945,7 +2945,7 @@ build_typename_type (tree context, tree name, tree fullname, tree make_typename_type (tree context, tree name, enum tag_types tag_type, - tsubst_flags_t complain) + int complain) { tree fullname; tree t; @@ -3065,7 +3065,7 @@ make_typename_type (tree context, tree name, enum tag_types tag_type, tree make_unbound_class_template (tree context, tree name, tree parm_list, - tsubst_flags_t complain) + int complain) { tree t; tree d; @@ -11013,7 +11013,7 @@ finish_enum (tree enumtype) int lowprec; int highprec; int precision; - integer_type_kind itk; + int itk; tree underlying_type = NULL_TREE; bool fixed_underlying_type_p = ENUM_UNDERLYING_TYPE (enumtype) != NULL_TREE; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 2be621da7c5..cded0235102 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1035,6 +1035,12 @@ is_late_template_attribute (tree attr, tree decl) if (is_attribute_p ("weak", name)) return true; + /* The unused attribute on a label must be applied at instantiation + time. */ + if (TREE_CODE (decl) == LABEL_DECL + && is_attribute_p ("unused", name)) + return true; + /* If any of the arguments are dependent expressions, we can't evaluate the attribute until instantiation time. */ for (arg = args; arg; arg = TREE_CHAIN (arg)) @@ -1858,7 +1864,7 @@ constrain_visibility (tree decl, int visibility) else if (visibility > DECL_VISIBILITY (decl) && !DECL_VISIBILITY_SPECIFIED (decl)) { - DECL_VISIBILITY (decl) = visibility; + DECL_VISIBILITY (decl) = (symbol_visibility) visibility; return true; } return false; diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 5eb8f28b4c9..6864ccb03c4 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2613,8 +2613,8 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec, const char *result; tree t = NULL; #define next_tree (t = va_arg (*text->args_ptr, tree)) -#define next_tcode va_arg (*text->args_ptr, enum tree_code) -#define next_lang va_arg (*text->args_ptr, enum languages) +#define next_tcode ((enum tree_code) va_arg (*text->args_ptr, int)) +#define next_lang ((enum languages) va_arg (*text->args_ptr, int)) #define next_int va_arg (*text->args_ptr, int) if (precision != 0 || wide) diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 8e3e4895264..0d8d6656148 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -39,8 +39,8 @@ along with GCC; see the file COPYING3. If not see static bool begin_init_stmts (tree *, tree *); static tree finish_init_stmts (bool, tree, tree); static void construct_virtual_base (tree, tree); -static void expand_aggr_init_1 (tree, tree, tree, tree, int, tsubst_flags_t); -static void expand_default_init (tree, tree, tree, tree, int, tsubst_flags_t); +static void expand_aggr_init_1 (tree, tree, tree, tree, int, int); +static void expand_default_init (tree, tree, tree, tree, int, int); static tree build_vec_delete_1 (tree, tree, tree, special_function_kind, int); static void perform_member_init (tree, tree); static tree build_builtin_delete_call (tree); @@ -1204,7 +1204,7 @@ expand_member_init (tree name) perform the initialization, but not both, as it would be ambiguous. */ tree -build_aggr_init (tree exp, tree init, int flags, tsubst_flags_t complain) +build_aggr_init (tree exp, tree init, int flags, int complain) { tree stmt_expr; tree compound_stmt; @@ -1274,7 +1274,7 @@ build_aggr_init (tree exp, tree init, int flags, tsubst_flags_t complain) static void expand_default_init (tree binfo, tree true_exp, tree exp, tree init, int flags, - tsubst_flags_t complain) + int complain) { tree type = TREE_TYPE (exp); tree ctor_name; @@ -1369,7 +1369,7 @@ expand_default_init (tree binfo, tree true_exp, tree exp, tree init, int flags, static void expand_aggr_init_1 (tree binfo, tree true_exp, tree exp, tree init, int flags, - tsubst_flags_t complain) + int complain) { tree type = TREE_TYPE (exp); @@ -1781,7 +1781,7 @@ avoid_placement_new_aliasing (tree t, tree placement) static tree build_new_1 (tree placement, tree type, tree nelts, tree init, - bool globally_qualified_p, tsubst_flags_t complain) + bool globally_qualified_p, int complain) { tree size, rval; /* True iff this is a call to "operator new[]" instead of just @@ -2302,7 +2302,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init, tree build_new (tree placement, tree type, tree nelts, tree init, - int use_global_new, tsubst_flags_t complain) + int use_global_new, int complain) { tree rval; tree orig_placement; @@ -2641,7 +2641,7 @@ get_temp_regvar (tree type, tree init) tree build_vec_init (tree base, tree maxindex, tree init, bool explicit_value_init_p, - int from_array, tsubst_flags_t complain) + int from_array, int complain) { tree rval; tree base2 = NULL_TREE; diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 26d6678d1d7..eb949389972 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -469,7 +469,8 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer, cp_token *token) else if (token->type == CPP_PRAGMA) { /* We smuggled the cpp_token->u.pragma value in an INTEGER_CST. */ - token->pragma_kind = TREE_INT_CST_LOW (token->u.value); + token->pragma_kind = ((enum pragma_kind) + TREE_INT_CST_LOW (token->u.value)); token->u.value = NULL_TREE; } } @@ -1272,7 +1273,7 @@ typedef struct cp_parser_expression_stack_entry /* Tree code for the binary operation we are parsing. */ enum tree_code tree_type; /* Precedence of the binary operation we are parsing. */ - int prec; + enum cp_parser_prec prec; } cp_parser_expression_stack_entry; /* The stack for storing partial expressions. We only need NUM_PREC_VALUES @@ -1670,16 +1671,16 @@ static void cp_parser_block_declaration static void cp_parser_simple_declaration (cp_parser *, bool); static void cp_parser_decl_specifier_seq - (cp_parser *, cp_parser_flags, cp_decl_specifier_seq *, int *); + (cp_parser *, int, cp_decl_specifier_seq *, int *); static tree cp_parser_storage_class_specifier_opt (cp_parser *); static tree cp_parser_function_specifier_opt (cp_parser *, cp_decl_specifier_seq *); static tree cp_parser_type_specifier - (cp_parser *, cp_parser_flags, cp_decl_specifier_seq *, bool, + (cp_parser *, int, cp_decl_specifier_seq *, bool, int *, bool *); static tree cp_parser_simple_type_specifier - (cp_parser *, cp_decl_specifier_seq *, cp_parser_flags); + (cp_parser *, cp_decl_specifier_seq *, int); static tree cp_parser_type_name (cp_parser *); static tree cp_parser_nonclass_name @@ -2151,11 +2152,11 @@ static void cp_parser_check_decl_spec (cp_decl_specifier_seq *decl_specs, location_t location) { - cp_decl_spec ds; + int ds; for (ds = ds_first; ds != ds_last; ++ds) { - unsigned count = decl_specs->specs[(int)ds]; + unsigned count = decl_specs->specs[ds]; if (count < 2) continue; /* The "long" specifier is a special case because of "long long". */ @@ -2186,7 +2187,7 @@ cp_parser_check_decl_spec (cp_decl_specifier_seq *decl_specs, "__complex", "__thread" }; - error ("%Hduplicate %qs", &location, decl_spec_names[(int)ds]); + error ("%Hduplicate %qs", &location, decl_spec_names[ds]); } } } @@ -6371,16 +6372,25 @@ cp_parser_question_colon_clause (cp_parser* parser, tree logical_or_expr) cp_lexer_consume_token (parser->lexer); if (cp_parser_allow_gnu_extensions_p (parser) && cp_lexer_next_token_is (parser->lexer, CPP_COLON)) - /* Implicit true clause. */ - expr = NULL_TREE; + { + /* Implicit true clause. */ + expr = NULL_TREE; + skip_evaluation += logical_or_expr == truthvalue_true_node; + } else - /* Parse the expression. */ - expr = cp_parser_expression (parser, /*cast_p=*/false, NULL); + { + /* Parse the expression. */ + skip_evaluation += logical_or_expr == truthvalue_false_node; + expr = cp_parser_expression (parser, /*cast_p=*/false, NULL); + skip_evaluation += ((logical_or_expr == truthvalue_true_node) + - (logical_or_expr == truthvalue_false_node)); + } /* The next token should be a `:'. */ cp_parser_require (parser, CPP_COLON, "%<:%>"); /* Parse the assignment-expression. */ assignment_expr = cp_parser_assignment_expression (parser, /*cast_p=*/false, NULL); + skip_evaluation -= logical_or_expr == truthvalue_true_node; /* Build the conditional-expression. */ return build_x_conditional_expr (logical_or_expr, @@ -7038,6 +7048,7 @@ static void cp_parser_label_for_labeled_statement (cp_parser* parser) { cp_token *token; + tree label = NULL_TREE; /* The next token should be an identifier. */ token = cp_lexer_peek_token (parser->lexer); @@ -7097,12 +7108,21 @@ cp_parser_label_for_labeled_statement (cp_parser* parser) default: /* Anything else must be an ordinary label. */ - finish_label_stmt (cp_parser_identifier (parser)); + label = finish_label_stmt (cp_parser_identifier (parser)); break; } /* Require the `:' token. */ cp_parser_require (parser, CPP_COLON, "%<:%>"); + + /* For an ordinary label, check for attributes. */ + if (label != NULL_TREE) + { + tree attrs = cp_parser_attributes_opt (parser); + + if (attrs != NULL_TREE) + cplus_decl_attributes (&label, attrs, 0); + } } /* Parse an expression-statement. @@ -8348,7 +8368,7 @@ cp_parser_simple_declaration (cp_parser* parser, static void cp_parser_decl_specifier_seq (cp_parser* parser, - cp_parser_flags flags, + int flags, cp_decl_specifier_seq *decl_specs, int* declares_class_or_enum) { @@ -10956,7 +10976,7 @@ cp_parser_explicit_specialization (cp_parser* parser) static tree cp_parser_type_specifier (cp_parser* parser, - cp_parser_flags flags, + int flags, cp_decl_specifier_seq *decl_specs, bool is_declaration, int* declares_class_or_enum, @@ -11135,7 +11155,7 @@ cp_parser_type_specifier (cp_parser* parser, static tree cp_parser_simple_type_specifier (cp_parser* parser, cp_decl_specifier_seq *decl_specs, - cp_parser_flags flags) + int flags) { tree type = NULL_TREE; cp_token *token; @@ -13309,182 +13329,184 @@ cp_parser_direct_declarator (cp_parser* parser, } else if (first && dcl_kind != CP_PARSER_DECLARATOR_ABSTRACT) { - tree qualifying_scope; - tree unqualified_name; - special_function_kind sfk; - bool abstract_ok; - bool pack_expansion_p = false; - cp_token *declarator_id_start_token; - - /* Parse a declarator-id */ - abstract_ok = (dcl_kind == CP_PARSER_DECLARATOR_EITHER); - if (abstract_ok) - { - cp_parser_parse_tentatively (parser); - - /* If we see an ellipsis, we should be looking at a - parameter pack. */ - if (token->type == CPP_ELLIPSIS) - { - /* Consume the `...' */ - cp_lexer_consume_token (parser->lexer); + { + tree qualifying_scope; + tree unqualified_name; + special_function_kind sfk; + bool abstract_ok; + bool pack_expansion_p = false; + cp_token *declarator_id_start_token; + + /* Parse a declarator-id */ + abstract_ok = (dcl_kind == CP_PARSER_DECLARATOR_EITHER); + if (abstract_ok) + { + cp_parser_parse_tentatively (parser); - pack_expansion_p = true; - } - } + /* If we see an ellipsis, we should be looking at a + parameter pack. */ + if (token->type == CPP_ELLIPSIS) + { + /* Consume the `...' */ + cp_lexer_consume_token (parser->lexer); - declarator_id_start_token = cp_lexer_peek_token (parser->lexer); - unqualified_name - = cp_parser_declarator_id (parser, /*optional_p=*/abstract_ok); - qualifying_scope = parser->scope; - if (abstract_ok) - { - bool okay = false; - - if (!unqualified_name && pack_expansion_p) - { - /* Check whether an error occurred. */ - okay = !cp_parser_error_occurred (parser); - - /* We already consumed the ellipsis to mark a - parameter pack, but we have no way to report it, - so abort the tentative parse. We will be exiting - immediately anyway. */ - cp_parser_abort_tentative_parse (parser); - } - else - okay = cp_parser_parse_definitely (parser); - - if (!okay) - unqualified_name = error_mark_node; - else if (unqualified_name - && (qualifying_scope - || (TREE_CODE (unqualified_name) - != IDENTIFIER_NODE))) - { - cp_parser_error (parser, "expected unqualified-id"); - unqualified_name = error_mark_node; - } - } + pack_expansion_p = true; + } + } - if (!unqualified_name) - return NULL; - if (unqualified_name == error_mark_node) - { - declarator = cp_error_declarator; - pack_expansion_p = false; - declarator->parameter_pack_p = false; - break; - } + declarator_id_start_token = cp_lexer_peek_token (parser->lexer); + unqualified_name + = cp_parser_declarator_id (parser, /*optional_p=*/abstract_ok); + qualifying_scope = parser->scope; + if (abstract_ok) + { + bool okay = false; - if (qualifying_scope && at_namespace_scope_p () - && TREE_CODE (qualifying_scope) == TYPENAME_TYPE) - { - /* In the declaration of a member of a template class - outside of the class itself, the SCOPE will sometimes - be a TYPENAME_TYPE. For example, given: - - template <typename T> - int S<T>::R::i = 3; - - the SCOPE will be a TYPENAME_TYPE for `S<T>::R'. In - this context, we must resolve S<T>::R to an ordinary - type, rather than a typename type. - - The reason we normally avoid resolving TYPENAME_TYPEs - is that a specialization of `S' might render - `S<T>::R' not a type. However, if `S' is - specialized, then this `i' will not be used, so there - is no harm in resolving the types here. */ - tree type; + if (!unqualified_name && pack_expansion_p) + { + /* Check whether an error occurred. */ + okay = !cp_parser_error_occurred (parser); + + /* We already consumed the ellipsis to mark a + parameter pack, but we have no way to report it, + so abort the tentative parse. We will be exiting + immediately anyway. */ + cp_parser_abort_tentative_parse (parser); + } + else + okay = cp_parser_parse_definitely (parser); - /* Resolve the TYPENAME_TYPE. */ - type = resolve_typename_type (qualifying_scope, - /*only_current_p=*/false); - /* If that failed, the declarator is invalid. */ - if (TREE_CODE (type) == TYPENAME_TYPE) - error ("%H%<%T::%E%> is not a type", - &declarator_id_start_token->location, - TYPE_CONTEXT (qualifying_scope), - TYPE_IDENTIFIER (qualifying_scope)); - qualifying_scope = type; - } + if (!okay) + unqualified_name = error_mark_node; + else if (unqualified_name + && (qualifying_scope + || (TREE_CODE (unqualified_name) + != IDENTIFIER_NODE))) + { + cp_parser_error (parser, "expected unqualified-id"); + unqualified_name = error_mark_node; + } + } - sfk = sfk_none; + if (!unqualified_name) + return NULL; + if (unqualified_name == error_mark_node) + { + declarator = cp_error_declarator; + pack_expansion_p = false; + declarator->parameter_pack_p = false; + break; + } - if (unqualified_name) - { - tree class_type; + if (qualifying_scope && at_namespace_scope_p () + && TREE_CODE (qualifying_scope) == TYPENAME_TYPE) + { + /* In the declaration of a member of a template class + outside of the class itself, the SCOPE will sometimes + be a TYPENAME_TYPE. For example, given: + + template <typename T> + int S<T>::R::i = 3; + + the SCOPE will be a TYPENAME_TYPE for `S<T>::R'. In + this context, we must resolve S<T>::R to an ordinary + type, rather than a typename type. + + The reason we normally avoid resolving TYPENAME_TYPEs + is that a specialization of `S' might render + `S<T>::R' not a type. However, if `S' is + specialized, then this `i' will not be used, so there + is no harm in resolving the types here. */ + tree type; + + /* Resolve the TYPENAME_TYPE. */ + type = resolve_typename_type (qualifying_scope, + /*only_current_p=*/false); + /* If that failed, the declarator is invalid. */ + if (TREE_CODE (type) == TYPENAME_TYPE) + error ("%H%<%T::%E%> is not a type", + &declarator_id_start_token->location, + TYPE_CONTEXT (qualifying_scope), + TYPE_IDENTIFIER (qualifying_scope)); + qualifying_scope = type; + } - if (qualifying_scope - && CLASS_TYPE_P (qualifying_scope)) - class_type = qualifying_scope; - else - class_type = current_class_type; + sfk = sfk_none; - if (TREE_CODE (unqualified_name) == TYPE_DECL) - { - tree name_type = TREE_TYPE (unqualified_name); - if (class_type && same_type_p (name_type, class_type)) - { - if (qualifying_scope - && CLASSTYPE_USE_TEMPLATE (name_type)) - { - error ("%Hinvalid use of constructor as a template", - &declarator_id_start_token->location); - inform (input_location, "use %<%T::%D%> instead of %<%T::%D%> to " - "name the constructor in a qualified name", - class_type, - DECL_NAME (TYPE_TI_TEMPLATE (class_type)), - class_type, name_type); - declarator = cp_error_declarator; - break; - } - else - unqualified_name = constructor_name (class_type); - } - else - { - /* We do not attempt to print the declarator - here because we do not have enough - information about its original syntactic - form. */ - cp_parser_error (parser, "invalid declarator"); - declarator = cp_error_declarator; - break; - } - } + if (unqualified_name) + { + tree class_type; - if (class_type) - { - if (TREE_CODE (unqualified_name) == BIT_NOT_EXPR) - sfk = sfk_destructor; - else if (IDENTIFIER_TYPENAME_P (unqualified_name)) - sfk = sfk_conversion; - else if (/* There's no way to declare a constructor - for an anonymous type, even if the type - got a name for linkage purposes. */ - !TYPE_WAS_ANONYMOUS (class_type) - && constructor_name_p (unqualified_name, - class_type)) - { - unqualified_name = constructor_name (class_type); - sfk = sfk_constructor; - } + if (qualifying_scope + && CLASS_TYPE_P (qualifying_scope)) + class_type = qualifying_scope; + else + class_type = current_class_type; - if (ctor_dtor_or_conv_p && sfk != sfk_none) - *ctor_dtor_or_conv_p = -1; - } - } - declarator = make_id_declarator (qualifying_scope, - unqualified_name, - sfk); - declarator->id_loc = token->location; - declarator->parameter_pack_p = pack_expansion_p; + if (TREE_CODE (unqualified_name) == TYPE_DECL) + { + tree name_type = TREE_TYPE (unqualified_name); + if (class_type && same_type_p (name_type, class_type)) + { + if (qualifying_scope + && CLASSTYPE_USE_TEMPLATE (name_type)) + { + error ("%Hinvalid use of constructor as a template", + &declarator_id_start_token->location); + inform (input_location, "use %<%T::%D%> instead " + "of %<%T::%D%> to " + "name the constructor in a qualified name", + class_type, + DECL_NAME (TYPE_TI_TEMPLATE (class_type)), + class_type, name_type); + declarator = cp_error_declarator; + break; + } + else + unqualified_name = constructor_name (class_type); + } + else + { + /* We do not attempt to print the declarator + here because we do not have enough + information about its original syntactic + form. */ + cp_parser_error (parser, "invalid declarator"); + declarator = cp_error_declarator; + break; + } + } - if (pack_expansion_p) - maybe_warn_variadic_templates (); + if (class_type) + { + if (TREE_CODE (unqualified_name) == BIT_NOT_EXPR) + sfk = sfk_destructor; + else if (IDENTIFIER_TYPENAME_P (unqualified_name)) + sfk = sfk_conversion; + else if (/* There's no way to declare a constructor + for an anonymous type, even if the type + got a name for linkage purposes. */ + !TYPE_WAS_ANONYMOUS (class_type) + && constructor_name_p (unqualified_name, + class_type)) + { + unqualified_name = constructor_name (class_type); + sfk = sfk_constructor; + } + if (ctor_dtor_or_conv_p && sfk != sfk_none) + *ctor_dtor_or_conv_p = -1; + } + } + declarator = make_id_declarator (qualifying_scope, + unqualified_name, + sfk); + declarator->id_loc = token->location; + declarator->parameter_pack_p = pack_expansion_p; + + if (pack_expansion_p) + maybe_warn_variadic_templates (); + } handle_declarator:; scope = get_scope_of_declarator (declarator); if (scope) @@ -13820,7 +13842,7 @@ cp_parser_type_specifier_seq (cp_parser* parser, cp_decl_specifier_seq *type_specifier_seq) { bool seen_type_specifier = false; - cp_parser_flags flags = CP_PARSER_FLAGS_OPTIONAL; + int flags = CP_PARSER_FLAGS_OPTIONAL; cp_token *start_token = NULL; /* Clear the TYPE_SPECIFIER_SEQ. */ @@ -20309,7 +20331,7 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind, decl = cp_parser_lookup_name_simple (parser, name, token->location); if (decl == error_mark_node) cp_parser_name_lookup_error (parser, name, decl, NULL, token->location); - else if (kind != 0) + else if (kind != OMP_CLAUSE_ERROR) { tree u = build_omp_clause (kind); OMP_CLAUSE_DECL (u) = decl; @@ -21016,7 +21038,7 @@ static void cp_parser_omp_flush (cp_parser *parser, cp_token *pragma_tok) { if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) - (void) cp_parser_omp_var_list (parser, 0, NULL); + (void) cp_parser_omp_var_list (parser, OMP_CLAUSE_ERROR, NULL); cp_parser_require_pragma_eol (parser, pragma_tok); finish_omp_flush (); @@ -21857,7 +21879,7 @@ cp_parser_omp_threadprivate (cp_parser *parser, cp_token *pragma_tok) { tree vars; - vars = cp_parser_omp_var_list (parser, 0, NULL); + vars = cp_parser_omp_var_list (parser, OMP_CLAUSE_ERROR, NULL); cp_parser_require_pragma_eol (parser, pragma_tok); finish_omp_threadprivate (vars); diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 0a45422c8d1..a8e66cad818 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -110,12 +110,11 @@ static void pop_tinst_level (void); static tree reopen_tinst_level (struct tinst_level *); static tree tsubst_initializer_list (tree, tree); static tree get_class_bindings (tree, tree, tree); -static tree coerce_template_parms (tree, tree, tree, tsubst_flags_t, - bool, bool); +static tree coerce_template_parms (tree, tree, tree, int, bool, bool); static void tsubst_enum (tree, tree, tree); static tree add_to_template_args (tree, tree); static tree add_outermost_template_args (tree, tree); -static bool check_instantiated_args (tree, tree, tsubst_flags_t); +static bool check_instantiated_args (tree, tree, int); static int maybe_adjust_types_for_deduction (unification_kind_t, tree*, tree*, tree); static int type_unification_real (tree, tree, tree, tree, @@ -123,8 +122,7 @@ static int type_unification_real (tree, tree, tree, tree, static void note_template_header (int); static tree convert_nontype_argument_function (tree, tree); static tree convert_nontype_argument (tree, tree); -static tree convert_template_argument (tree, tree, tree, - tsubst_flags_t, int, tree); +static tree convert_template_argument (tree, tree, tree, int, int, tree); static int for_each_template_parm (tree, tree_fn_t, void*, struct pointer_set_t*, bool); static tree expand_template_argument_pack (tree); @@ -133,7 +131,7 @@ static bool inline_needs_template_parms (tree); static void push_inline_template_parms_recursive (tree, int); static tree retrieve_local_specialization (tree); static void register_local_specialization (tree, tree); -static tree reduce_template_parm_level (tree, tree, int, tree, tsubst_flags_t); +static tree reduce_template_parm_level (tree, tree, int, tree, int); static int mark_template_parm (tree, void *); static int template_parm_this_level_p (tree, void *); static tree tsubst_friend_function (tree, tree); @@ -144,36 +142,35 @@ static int template_decl_level (tree); static int check_cv_quals_for_unify (int, tree, tree); static void template_parm_level_and_index (tree, int*, int*); static int unify_pack_expansion (tree, tree, tree, tree, int, bool, bool); -static tree tsubst_template_arg (tree, tree, tsubst_flags_t, tree); -static tree tsubst_template_args (tree, tree, tsubst_flags_t, tree); -static tree tsubst_template_parms (tree, tree, tsubst_flags_t); +static tree tsubst_template_arg (tree, tree, int, tree); +static tree tsubst_template_args (tree, tree, int, tree); +static tree tsubst_template_parms (tree, tree, int); static void regenerate_decl_from_template (tree, tree); static tree most_specialized_class (tree, tree); -static tree tsubst_aggr_type (tree, tree, tsubst_flags_t, tree, int); -static tree tsubst_arg_types (tree, tree, tsubst_flags_t, tree); -static tree tsubst_function_type (tree, tree, tsubst_flags_t, tree); +static tree tsubst_aggr_type (tree, tree, int, tree, int); +static tree tsubst_arg_types (tree, tree, int, tree); +static tree tsubst_function_type (tree, tree, int, tree); static bool check_specialization_scope (void); static tree process_partial_specialization (tree); static void set_current_access_from_decl (tree); static tree get_template_base (tree, tree, tree, tree); static tree try_class_unification (tree, tree, tree, tree); -static int coerce_template_template_parms (tree, tree, tsubst_flags_t, - tree, tree); +static int coerce_template_template_parms (tree, tree, int, tree, tree); static bool template_template_parm_bindings_ok_p (tree, tree); static int template_args_equal (tree, tree); static void tsubst_default_arguments (tree); static tree for_each_template_parm_r (tree *, int *, void *); static tree copy_default_args_to_explicit_spec_1 (tree, tree); static void copy_default_args_to_explicit_spec (tree); -static int invalid_nontype_parm_type_p (tree, tsubst_flags_t); +static int invalid_nontype_parm_type_p (tree, int); static int eq_local_specializations (const void *, const void *); static bool dependent_template_arg_p (tree); static bool any_template_arguments_need_structural_equality_p (tree); static bool dependent_type_p_r (tree); -static tree tsubst (tree, tree, tsubst_flags_t, tree); -static tree tsubst_expr (tree, tree, tsubst_flags_t, tree, bool); -static tree tsubst_copy (tree, tree, tsubst_flags_t, tree); -static tree tsubst_pack_expansion (tree, tree, tsubst_flags_t, tree); +static tree tsubst (tree, tree, int, tree); +static tree tsubst_expr (tree, tree, int, tree, bool); +static tree tsubst_copy (tree, tree, int, tree); +static tree tsubst_pack_expansion (tree, tree, int, tree); static tree tsubst_decl (tree, tree, tsubst_flags_t); /* Make the current scope suitable for access checking when we are @@ -2920,7 +2917,7 @@ canonical_type_parameter (tree type) static tree reduce_template_parm_level (tree index, tree type, int levels, tree args, - tsubst_flags_t complain) + int complain) { if (TEMPLATE_PARM_DESCENDANTS (index) == NULL_TREE || (TEMPLATE_PARM_LEVEL (TEMPLATE_PARM_DESCENDANTS (index)) @@ -3007,7 +3004,7 @@ process_template_parm (tree list, tree parm, bool is_non_type, The top-level cv-qualifiers on the template-parameter are ignored when determining its type. */ TREE_TYPE (parm) = TYPE_MAIN_VARIANT (TREE_TYPE (parm)); - if (invalid_nontype_parm_type_p (TREE_TYPE (parm), 1)) + if (invalid_nontype_parm_type_p (TREE_TYPE (parm), tf_error)) { err_parm_list = build_tree_list (defval, parm); TREE_VALUE (err_parm_list) = error_mark_node; @@ -4663,7 +4660,7 @@ convert_nontype_argument (tree type, tree expr) static int coerce_template_template_parm (tree parm, tree arg, - tsubst_flags_t complain, + int complain, tree in_decl, tree outer_args) { @@ -4741,7 +4738,7 @@ coerce_template_template_parm (tree parm, static int coerce_template_template_parms (tree parm_parms, tree arg_parms, - tsubst_flags_t complain, + int complain, tree in_decl, tree outer_args) { @@ -4920,7 +4917,7 @@ static tree convert_template_argument (tree parm, tree arg, tree args, - tsubst_flags_t complain, + int complain, int i, tree in_decl) { @@ -5130,7 +5127,7 @@ coerce_template_parameter_pack (tree parms, tree new_args, int* lost, tree in_decl, - tsubst_flags_t complain) + int complain) { tree parm = TREE_VEC_ELT (parms, parm_idx); int nargs = inner_args ? NUM_TMPL_ARGS (inner_args) : 0; @@ -5249,7 +5246,7 @@ static tree coerce_template_parms (tree parms, tree args, tree in_decl, - tsubst_flags_t complain, + int complain, bool require_all_args, bool use_default_args) { @@ -5598,7 +5595,7 @@ lookup_template_class (tree d1, tree in_decl, tree context, int entering_scope, - tsubst_flags_t complain) + int complain) { tree templ = NULL_TREE, parmlist; tree t; @@ -6859,7 +6856,7 @@ can_complete_type_without_circularity (tree type) static void apply_late_template_attributes (tree *decl_p, tree attributes, int attr_flags, - tree args, tsubst_flags_t complain, tree in_decl) + tree args, int complain, tree in_decl) { tree last_dep = NULL_TREE; tree t; @@ -7419,7 +7416,7 @@ instantiate_class_template (tree type) } static tree -tsubst_template_arg (tree t, tree args, tsubst_flags_t complain, tree in_decl) +tsubst_template_arg (tree t, tree args, int complain, tree in_decl) { tree r; @@ -7473,8 +7470,7 @@ make_fnparm_pack (tree spec_parm) (if only a partial substitution could be performed) or ERROR_MARK_NODE if there was an error. */ tree -tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, - tree in_decl) +tsubst_pack_expansion (tree t, tree args, int complain, tree in_decl) { tree pattern; tree pack, packs = NULL_TREE, unsubstituted_packs = NULL_TREE; @@ -7710,7 +7706,7 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, /* Substitute ARGS into the vector or list of template arguments T. */ static tree -tsubst_template_args (tree t, tree args, tsubst_flags_t complain, tree in_decl) +tsubst_template_args (tree t, tree args, int complain, tree in_decl) { tree orig_t = t; int len = TREE_VEC_LENGTH (t); @@ -7807,7 +7803,7 @@ tsubst_template_args (tree t, tree args, tsubst_flags_t complain, tree in_decl) result will be `template <int*, double, class V>'. */ static tree -tsubst_template_parms (tree parms, tree args, tsubst_flags_t complain) +tsubst_template_parms (tree parms, tree args, int complain) { tree r = NULL_TREE; tree* new_parms; @@ -7875,7 +7871,7 @@ tsubst_template_parms (tree parms, tree args, tsubst_flags_t complain) static tree tsubst_aggr_type (tree t, tree args, - tsubst_flags_t complain, + int complain, tree in_decl, int entering_scope) { @@ -8036,7 +8032,7 @@ tsubst_default_arguments (tree fn) control of COMPLAIN. */ static tree -tsubst_decl (tree t, tree args, tsubst_flags_t complain) +tsubst_decl (tree t, tree args, int complain) { location_t saved_loc; tree r = NULL_TREE; @@ -8781,7 +8777,7 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) static tree tsubst_arg_types (tree arg_types, tree args, - tsubst_flags_t complain, + int complain, tree in_decl) { tree remaining_arg_types; @@ -8887,7 +8883,7 @@ tsubst_arg_types (tree arg_types, static tree tsubst_function_type (tree t, tree args, - tsubst_flags_t complain, + int complain, tree in_decl) { tree return_type; @@ -8961,7 +8957,7 @@ tsubst_function_type (tree t, static tree tsubst_exception_specification (tree fntype, tree args, - tsubst_flags_t complain, + int complain, tree in_decl) { tree specs; @@ -9041,7 +9037,7 @@ tsubst_exception_specification (tree fntype, for expressions, use tsubst_expr or tsubst_copy. */ static tree -tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) +tsubst (tree t, tree args, int complain, tree in_decl) { tree type, r; @@ -9775,7 +9771,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) static tree tsubst_baselink (tree baselink, tree object_type, - tree args, tsubst_flags_t complain, tree in_decl) + tree args, int complain, tree in_decl) { tree name; tree qualifying_scope; @@ -9841,7 +9837,7 @@ tsubst_baselink (tree baselink, tree object_type, static tree tsubst_qualified_id (tree qualified_id, tree args, - tsubst_flags_t complain, tree in_decl, + int complain, tree in_decl, bool done, bool address_p) { tree expr; @@ -9956,7 +9952,7 @@ tsubst_qualified_id (tree qualified_id, tree args, tsubst_expr. */ static tree -tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl) +tsubst_copy (tree t, tree args, int complain, tree in_decl) { enum tree_code code; tree r; @@ -10389,8 +10385,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl) /* Like tsubst_copy, but specifically for OpenMP clauses. */ static tree -tsubst_omp_clauses (tree clauses, tree args, tsubst_flags_t complain, - tree in_decl) +tsubst_omp_clauses (tree clauses, tree args, int complain, tree in_decl) { tree new_clauses = NULL, nc, oc; @@ -10442,8 +10437,7 @@ tsubst_omp_clauses (tree clauses, tree args, tsubst_flags_t complain, /* Like tsubst_copy_and_build, but unshare TREE_LIST nodes. */ static tree -tsubst_copy_asm_operands (tree t, tree args, tsubst_flags_t complain, - tree in_decl) +tsubst_copy_asm_operands (tree t, tree args, int complain, tree in_decl) { #define RECUR(t) tsubst_copy_asm_operands (t, args, complain, in_decl) @@ -10478,7 +10472,7 @@ tsubst_copy_asm_operands (tree t, tree args, tsubst_flags_t complain, static void tsubst_omp_for_iterator (tree t, int i, tree declv, tree initv, tree condv, tree incrv, tree *clauses, - tree args, tsubst_flags_t complain, tree in_decl, + tree args, int complain, tree in_decl, bool integral_constant_expression_p) { #define RECUR(NODE) \ @@ -10618,7 +10612,7 @@ tsubst_omp_for_iterator (tree t, int i, tree declv, tree initv, processing. */ static tree -tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, +tsubst_expr (tree t, tree args, int complain, tree in_decl, bool integral_constant_expression_p) { #define RECUR(NODE) \ @@ -10827,7 +10821,14 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, break; case LABEL_EXPR: - finish_label_stmt (DECL_NAME (LABEL_EXPR_LABEL (t))); + { + tree decl = LABEL_EXPR_LABEL (t); + tree label; + + label = finish_label_stmt (DECL_NAME (decl)); + if (DECL_ATTRIBUTES (decl) != NULL_TREE) + cplus_decl_attributes (&label, DECL_ATTRIBUTES (decl), 0); + } break; case GOTO_EXPR: @@ -11061,7 +11062,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, static tree tsubst_non_call_postfix_expression (tree t, tree args, - tsubst_flags_t complain, + int complain, tree in_decl) { if (TREE_CODE (t) == SCOPE_REF) @@ -11081,7 +11082,7 @@ tsubst_non_call_postfix_expression (tree t, tree args, tree tsubst_copy_and_build (tree t, tree args, - tsubst_flags_t complain, + int complain, tree in_decl, bool function_p, bool integral_constant_expression_p) @@ -11862,7 +11863,7 @@ tsubst_copy_and_build (tree t, Emit an error under control of COMPLAIN, and return TRUE on error. */ static bool -check_instantiated_arg (tree tmpl, tree t, tsubst_flags_t complain) +check_instantiated_arg (tree tmpl, tree t, int complain) { if (ARGUMENT_PACK_P (t)) { @@ -11922,7 +11923,7 @@ check_instantiated_arg (tree tmpl, tree t, tsubst_flags_t complain) } static bool -check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain) +check_instantiated_args (tree tmpl, tree args, int complain) { int ix, len = DECL_NTPARMS (tmpl); bool result = false; @@ -11941,7 +11942,7 @@ check_instantiated_args (tree tmpl, tree args, tsubst_flags_t complain) the template arguments in TARG_PTR. */ tree -instantiate_template (tree tmpl, tree targ_ptr, tsubst_flags_t complain) +instantiate_template (tree tmpl, tree targ_ptr, int complain) { tree fndecl; tree gen_tmpl; @@ -13057,7 +13058,9 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms, match. */ if (resolve_overloaded_unification - (tparms, targs, parm, arg, strict, sub_strict) + (tparms, targs, parm, arg, + (unification_kind_t) strict, + sub_strict) != 0) return 1; skip_arg_p = true; @@ -13076,8 +13079,8 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms, if (!subr) arg_strict |= - maybe_adjust_types_for_deduction (strict, &parm, &arg, - arg_expr); + maybe_adjust_types_for_deduction ((unification_kind_t) strict, + &parm, &arg, arg_expr); } if (!skip_arg_p) @@ -14898,7 +14901,7 @@ instantiate_class_member (tree decl, int extern_p) since the standard is unclear (as detailed below). */ void -do_type_instantiation (tree t, tree storage, tsubst_flags_t complain) +do_type_instantiation (tree t, tree storage, int complain) { int extern_p = 0; int nomem_p = 0; @@ -15940,7 +15943,7 @@ current_instantiation (void) warning messages under control of COMPLAIN. */ static int -invalid_nontype_parm_type_p (tree type, tsubst_flags_t complain) +invalid_nontype_parm_type_p (tree type, int complain) { if (INTEGRAL_TYPE_P (type)) return 0; diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 1d5da671437..76c68bfe34f 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -104,7 +104,7 @@ static GTY (()) VEC(tinfo_s,gc) *tinfo_descs; static tree ifnonnull (tree, tree); static tree tinfo_name (tree); -static tree build_dynamic_cast_1 (tree, tree, tsubst_flags_t); +static tree build_dynamic_cast_1 (tree, tree, int); static tree throw_bad_cast (void); static tree throw_bad_typeid (void); static tree get_tinfo_decl_dynamic (tree); @@ -488,7 +488,7 @@ ifnonnull (tree test, tree result) paper. */ static tree -build_dynamic_cast_1 (tree type, tree expr, tsubst_flags_t complain) +build_dynamic_cast_1 (tree type, tree expr, int complain) { enum tree_code tc = TREE_CODE (type); tree exprtype = TREE_TYPE (expr); @@ -743,7 +743,7 @@ build_dynamic_cast_1 (tree type, tree expr, tsubst_flags_t complain) } tree -build_dynamic_cast (tree type, tree expr, tsubst_flags_t complain) +build_dynamic_cast (tree type, tree expr, int complain) { if (type == error_mark_node || expr == error_mark_node) return error_mark_node; diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 4f36e643268..cb54c9d8c30 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -189,7 +189,7 @@ accessible_base_p (tree t, tree base, bool consider_local_p) NULL_TREE is returned. */ tree -lookup_base (tree t, tree base, base_access access, base_kind *kind_ptr) +lookup_base (tree t, tree base, int access, base_kind *kind_ptr) { tree binfo; tree t_binfo; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 4b6cb50f615..7ff41670268 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1316,7 +1316,7 @@ finish_asm_stmt (int volatile_p, tree string, tree output_operands, return add_stmt (r); } -/* Finish a label with the indicated NAME. */ +/* Finish a label with the indicated NAME. Returns the new label. */ tree finish_label_stmt (tree name) @@ -1326,7 +1326,9 @@ finish_label_stmt (tree name) if (decl == error_mark_node) return error_mark_node; - return add_stmt (build_stmt (LABEL_EXPR, decl)); + add_stmt (build_stmt (LABEL_EXPR, decl)); + + return decl; } /* Finish a series of declarations for local labels. G++ allows users @@ -1840,7 +1842,7 @@ perform_koenig_lookup (tree fn, tree args) tree finish_call_expr (tree fn, tree args, bool disallow_virtual, bool koenig_p, - tsubst_flags_t complain) + int complain) { tree result; tree orig_fn; @@ -3602,7 +3604,7 @@ finish_omp_clauses (tree clauses) for (pc = &clauses, c = clauses; c ; c = *pc) { - enum tree_code c_kind = OMP_CLAUSE_CODE (c); + enum omp_clause_code c_kind = OMP_CLAUSE_CODE (c); bool remove = false; bool need_complete_non_reference = false; bool need_default_ctor = false; diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 2287f11f04b..441f16ce1cc 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -44,7 +44,7 @@ static tree build_cplus_array_type_1 (tree, tree); static int list_hash_eq (const void *, const void *); static hashval_t list_hash_pieces (tree, tree, tree); static hashval_t list_hash (const void *); -static cp_lvalue_kind lvalue_p_1 (tree, int); +static int lvalue_p_1 (tree, int); static tree build_target_expr (tree, tree); static tree count_trees_r (tree *, int *, void *); static tree verify_stmt_tree_r (tree *, int *, void *); @@ -58,12 +58,12 @@ static tree handle_init_priority_attribute (tree *, tree, tree, int, bool *); Otherwise, returns clk_none. If TREAT_CLASS_RVALUES_AS_LVALUES is nonzero, rvalues of class type are considered lvalues. */ -static cp_lvalue_kind +static int lvalue_p_1 (tree ref, int treat_class_rvalues_as_lvalues) { - cp_lvalue_kind op1_lvalue_kind = clk_none; - cp_lvalue_kind op2_lvalue_kind = clk_none; + int op1_lvalue_kind = clk_none; + int op2_lvalue_kind = clk_none; /* Expressions of reference type are sometimes wrapped in INDIRECT_REFs. INDIRECT_REFs are just internal compiler @@ -241,7 +241,7 @@ lvalue_p_1 (tree ref, [basic.lval]. This function should really be named lvalue_p; it computes the C++ definition of lvalue. */ -cp_lvalue_kind +int real_lvalue_p (tree ref) { return lvalue_p_1 (ref, @@ -748,7 +748,7 @@ c_build_qualified_type (tree type, int type_quals) tree cp_build_qualified_type_real (tree type, int type_quals, - tsubst_flags_t complain) + int complain) { tree result; int bad_quals = TYPE_UNQUALIFIED; diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index a6986f94b63..3b5a0a97bf1 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see static tree pfn_from_ptrmemfunc (tree); static tree delta_from_ptrmemfunc (tree); static tree convert_for_assignment (tree, tree, const char *, tree, int, - tsubst_flags_t); + int); static tree cp_pointer_int_sum (enum tree_code, tree, tree); static tree rationalize_conditional_expr (enum tree_code, tree, tsubst_flags_t); @@ -61,8 +61,7 @@ static void casts_away_constness_r (tree *, tree *); static bool casts_away_constness (tree, tree); static void maybe_warn_about_returning_address_of_local (tree); static tree lookup_destructor (tree, tree, tree); -static int convert_arguments (int, tree *, tree, tree, tree, int, - tsubst_flags_t); +static int convert_arguments (int, tree *, tree, tree, tree, int, int); /* Do `exp = require_complete_type (exp);' to make sure exp does not have an incomplete type. (That includes void types.) @@ -417,7 +416,7 @@ type_after_usual_arithmetic_conversions (tree t1, tree t2) static tree composite_pointer_type_r (tree t1, tree t2, const char* location, - tsubst_flags_t complain) + int complain) { tree pointee1; tree pointee2; @@ -492,7 +491,7 @@ composite_pointer_type_r (tree t1, tree t2, const char* location, tree composite_pointer_type (tree t1, tree t2, tree arg1, tree arg2, - const char* location, tsubst_flags_t complain) + const char* location, int complain) { tree class1; tree class2; @@ -1506,7 +1505,7 @@ cxx_sizeof_or_alignof_expr (tree e, enum tree_code op, bool complain) violates these rules. */ bool -invalid_nonstatic_memfn_p (const_tree expr, tsubst_flags_t complain) +invalid_nonstatic_memfn_p (const_tree expr, int complain) { if (DECL_NONSTATIC_MEMBER_FUNCTION_P (expr)) { @@ -1874,7 +1873,7 @@ lookup_anon_field (tree t, tree type) tree build_class_member_access_expr (tree object, tree member, tree access_path, bool preserve_reference, - tsubst_flags_t complain) + int complain) { tree object_type; tree member_scope; @@ -2222,7 +2221,7 @@ check_template_keyword (tree decl) tree finish_class_member_access_expr (tree object, tree name, bool template_p, - tsubst_flags_t complain) + int complain) { tree expr; tree object_type; @@ -2430,7 +2429,7 @@ build_ptrmemfunc_access_expr (tree ptrmem, tree member_name) tree build_x_indirect_ref (tree expr, const char *errorstring, - tsubst_flags_t complain) + int complain) { tree orig_expr = expr; tree rval; @@ -2462,8 +2461,7 @@ build_indirect_ref (location_t loc __attribute__ ((__unused__)), } tree -cp_build_indirect_ref (tree ptr, const char *errorstring, - tsubst_flags_t complain) +cp_build_indirect_ref (tree ptr, const char *errorstring, int complain) { tree pointer, type; @@ -2858,7 +2856,7 @@ build_function_call (tree function, tree params) } tree -cp_build_function_call (tree function, tree params, tsubst_flags_t complain) +cp_build_function_call (tree function, tree params, int complain) { tree fntype, fndecl; tree name = NULL_TREE; @@ -2976,7 +2974,7 @@ cp_build_function_call (tree function, tree params, tsubst_flags_t complain) static int convert_arguments (int nargs, tree *argarray, tree typelist, tree values, tree fndecl, int flags, - tsubst_flags_t complain) + int complain) { tree typetail, valtail; const char *called_thing = 0; @@ -3157,7 +3155,7 @@ convert_arguments (int nargs, tree *argarray, tree build_x_binary_op (enum tree_code code, tree arg1, enum tree_code arg1_code, tree arg2, enum tree_code arg2_code, bool *overloaded_p, - tsubst_flags_t complain) + int complain) { tree orig_arg1; tree orig_arg2; @@ -3201,7 +3199,7 @@ build_x_binary_op (enum tree_code code, tree arg1, enum tree_code arg1_code, /* Build and return an ARRAY_REF expression. */ tree -build_x_array_ref (tree arg1, tree arg2, tsubst_flags_t complain) +build_x_array_ref (tree arg1, tree arg2, int complain) { tree orig_arg1 = arg1; tree orig_arg2 = arg2; @@ -3257,7 +3255,7 @@ build_binary_op (location_t location, enum tree_code code, tree op0, tree op1, tree cp_build_binary_op (location_t location, enum tree_code code, tree orig_op0, tree orig_op1, - tsubst_flags_t complain) + int complain) { tree op0, op1; enum tree_code code0, code1; @@ -3502,13 +3500,14 @@ cp_build_binary_op (location_t location, { if (tree_int_cst_lt (op1, integer_zero_node)) { - if (complain & tf_warning) + if ((complain & tf_warning) && !skip_evaluation) warning (0, "right shift count is negative"); } else { if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0 - && (complain & tf_warning)) + && (complain & tf_warning) + && !skip_evaluation) warning (0, "right shift count >= width of type"); } } @@ -3529,12 +3528,12 @@ cp_build_binary_op (location_t location, { if (tree_int_cst_lt (op1, integer_zero_node)) { - if (complain & tf_warning) + if ((complain & tf_warning) && !skip_evaluation) warning (0, "left shift count is negative"); } else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0) { - if (complain & tf_warning) + if ((complain & tf_warning) && !skip_evaluation) warning (0, "left shift count >= width of type"); } } @@ -4083,7 +4082,7 @@ pointer_diff (tree op0, tree op1, tree ptrtype) and XARG is the operand. */ tree -build_x_unary_op (enum tree_code code, tree xarg, tsubst_flags_t complain) +build_x_unary_op (enum tree_code code, tree xarg, int complain) { tree orig_expr = xarg; tree exp; @@ -4236,7 +4235,7 @@ build_nop (tree type, tree expr) tree cp_build_unary_op (enum tree_code code, tree xarg, int noconvert, - tsubst_flags_t complain) + int complain) { /* No default_conversion here. It causes trouble for ADDR_EXPR. */ tree arg = xarg; @@ -4900,8 +4899,7 @@ cxx_mark_addressable (tree exp) /* Build and return a conditional expression IFEXP ? OP1 : OP2. */ tree -build_x_conditional_expr (tree ifexp, tree op1, tree op2, - tsubst_flags_t complain) +build_x_conditional_expr (tree ifexp, tree op1, tree op2, int complain) { tree orig_ifexp = ifexp; tree orig_op1 = op1; @@ -4954,7 +4952,7 @@ tree build_x_compound_expr_from_list (tree list, const char *msg) /* Handle overloading of the ',' operator when needed. */ tree -build_x_compound_expr (tree op1, tree op2, tsubst_flags_t complain) +build_x_compound_expr (tree op1, tree op2, int complain) { tree result; tree orig_op1 = op1; @@ -4991,7 +4989,7 @@ build_compound_expr (tree lhs, tree rhs) /* Build a compound expression. */ tree -cp_build_compound_expr (tree lhs, tree rhs, tsubst_flags_t complain) +cp_build_compound_expr (tree lhs, tree rhs, int complain) { lhs = convert_to_void (lhs, "left-hand operand of comma", complain); @@ -5131,7 +5129,7 @@ ignore_overflows (tree expr, tree orig) static tree build_static_cast_1 (tree type, tree expr, bool c_cast_p, - bool *valid_p, tsubst_flags_t complain) + bool *valid_p, int complain) { tree intype; tree result; @@ -5332,7 +5330,7 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p, /* Return an expression representing static_cast<TYPE>(EXPR). */ tree -build_static_cast (tree type, tree expr, tsubst_flags_t complain) +build_static_cast (tree type, tree expr, int complain) { tree result; bool valid_p; @@ -5407,7 +5405,7 @@ convert_member_func_to_ptr (tree type, tree expr) static tree build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p, - bool *valid_p, tsubst_flags_t complain) + bool *valid_p, int complain) { tree intype; @@ -5564,7 +5562,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p, } tree -build_reinterpret_cast (tree type, tree expr, tsubst_flags_t complain) +build_reinterpret_cast (tree type, tree expr, int complain) { if (type == error_mark_node || expr == error_mark_node) return error_mark_node; @@ -5701,7 +5699,7 @@ build_const_cast_1 (tree dst_type, tree expr, bool complain, } tree -build_const_cast (tree type, tree expr, tsubst_flags_t complain) +build_const_cast (tree type, tree expr, int complain) { if (type == error_mark_node || error_operand_p (expr)) return error_mark_node; @@ -5733,7 +5731,7 @@ build_c_cast (tree type, tree expr) TYPE of expression EXPR. */ tree -cp_build_c_cast (tree type, tree expr, tsubst_flags_t complain) +cp_build_c_cast (tree type, tree expr, int complain) { tree value = expr; tree result; @@ -5854,7 +5852,7 @@ build_modify_expr (location_t location ATTRIBUTE_UNUSED, tree cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, - tsubst_flags_t complain) + int complain) { tree result; tree newrhs = rhs; @@ -6155,7 +6153,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, tree build_x_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, - tsubst_flags_t complain) + int complain) { if (processing_template_decl) return build_min_nt (MODOP_EXPR, lhs, @@ -6518,7 +6516,7 @@ delta_from_ptrmemfunc (tree t) static tree convert_for_assignment (tree type, tree rhs, const char *errtype, tree fndecl, int parmnum, - tsubst_flags_t complain) + int complain) { tree rhstype; enum tree_code coder; @@ -6661,7 +6659,7 @@ convert_for_assignment (tree type, tree rhs, tree convert_for_initialization (tree exp, tree type, tree rhs, int flags, const char *errtype, tree fndecl, int parmnum, - tsubst_flags_t complain) + int complain) { enum tree_code codel = TREE_CODE (type); tree rhstype; @@ -7398,7 +7396,7 @@ non_reference (tree t) how the lvalue is being used and so selects the error message. */ int -lvalue_or_else (tree ref, enum lvalue_use use, tsubst_flags_t complain) +lvalue_or_else (tree ref, enum lvalue_use use, int complain) { int win = lvalue_p (ref); diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 747c964706c..a7a887393ae 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1430,7 +1430,7 @@ build_m_component_ref (tree datum, tree component) /* Return a tree node for the expression TYPENAME '(' PARMS ')'. */ tree -build_functional_cast (tree exp, tree parms, tsubst_flags_t complain) +build_functional_cast (tree exp, tree parms, int complain) { /* This is either a call to a constructor, or a C cast in C++'s `functional' notation. */ diff --git a/gcc/cse.c b/gcc/cse.c index 04f52fb7d77..6dedcdc8b72 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -517,6 +517,12 @@ static struct table_elt *free_element_chain; static int constant_pool_entries_cost; static int constant_pool_entries_regcost; +struct branch_path +{ + /* The basic block for this path entry. */ + basic_block bb; +}; + /* This data describes a block that will be processed by cse_extended_basic_block. */ @@ -527,11 +533,7 @@ struct cse_basic_block_data /* Size of current branch path, if any. */ int path_size; /* Current path, indicating which basic_blocks will be processed. */ - struct branch_path - { - /* The basic block for this path entry. */ - basic_block bb; - } *path; + struct branch_path *path; }; @@ -1463,7 +1465,8 @@ insert (rtx x, struct table_elt *classp, unsigned int hash, enum machine_mode mo struct table_elt *p, *next; for (p = classp; (next = p->next_same_value) && CHEAPER (next, elt); - p = next); + p = next) + ; /* Put it after P and before NEXT. */ elt->next_same_value = next; @@ -2329,14 +2332,14 @@ hash_rtx_cb (const_rtx x, enum machine_mode mode, goto repeat; } - hash += hash_rtx_cb (XEXP (x, i), 0, do_not_record_p, + hash += hash_rtx_cb (XEXP (x, i), VOIDmode, do_not_record_p, hash_arg_in_memory_p, have_reg_qty, cb); break; case 'E': for (j = 0; j < XVECLEN (x, i); j++) - hash += hash_rtx_cb (XVECEXP (x, i, j), 0, do_not_record_p, + hash += hash_rtx_cb (XVECEXP (x, i, j), VOIDmode, do_not_record_p, hash_arg_in_memory_p, have_reg_qty, cb); break; diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c index 1e004d1656c..c4c80e8de69 100644 --- a/gcc/dbgcnt.c +++ b/gcc/dbgcnt.c @@ -88,7 +88,7 @@ dbg_cnt_set_limit_by_name (const char *name, int len, int value) if (i < 0) return false; - dbg_cnt_set_limit_by_index (i, value); + dbg_cnt_set_limit_by_index ((enum debug_counter) i, value); return true; } diff --git a/gcc/dbxout.c b/gcc/dbxout.c index babba15f8a5..1f736b80a04 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -2809,7 +2809,7 @@ dbxout_symbol (tree decl, int local ATTRIBUTE_UNUSED) if (!decl_rtl) DBXOUT_DECR_NESTING_AND_RETURN (0); - decl_rtl = eliminate_regs (decl_rtl, 0, NULL_RTX); + decl_rtl = eliminate_regs (decl_rtl, VOIDmode, NULL_RTX); #ifdef LEAF_REG_REMAP if (current_function_uses_only_leaf_regs) leaf_renumber_regs_insn (decl_rtl); @@ -3314,8 +3314,9 @@ dbxout_parms (tree parms) /* Perform any necessary register eliminations on the parameter's rtl, so that the debugging output will be accurate. */ DECL_INCOMING_RTL (parms) - = eliminate_regs (DECL_INCOMING_RTL (parms), 0, NULL_RTX); - SET_DECL_RTL (parms, eliminate_regs (DECL_RTL (parms), 0, NULL_RTX)); + = eliminate_regs (DECL_INCOMING_RTL (parms), VOIDmode, NULL_RTX); + SET_DECL_RTL (parms, + eliminate_regs (DECL_RTL (parms), VOIDmode, NULL_RTX)); #ifdef LEAF_REG_REMAP if (current_function_uses_only_leaf_regs) { diff --git a/gcc/dce.c b/gcc/dce.c index f6a10d6197e..6e1ef1e81e4 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -1090,8 +1090,7 @@ run_fast_df_dce (void) /* If dce is able to delete something, it has to happen immediately. Otherwise there will be problems handling the eq_notes. */ - enum df_changeable_flags old_flags - = df_clear_flags (DF_DEFER_INSN_RESCAN + DF_NO_INSN_RESCAN); + int old_flags = df_clear_flags (DF_DEFER_INSN_RESCAN + DF_NO_INSN_RESCAN); df_in_progress = true; rest_of_handle_fast_dce (); diff --git a/gcc/df-core.c b/gcc/df-core.c index 7b83dce53f6..78779d4f8fd 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -474,10 +474,10 @@ df_add_problem (struct df_problem *problem) /* Set the MASK flags in the DFLOW problem. The old flags are returned. If a flag is not allowed to be changed this will fail if checking is enabled. */ -enum df_changeable_flags -df_set_flags (enum df_changeable_flags changeable_flags) +int +df_set_flags (int changeable_flags) { - enum df_changeable_flags old_flags = df->changeable_flags; + int old_flags = df->changeable_flags; df->changeable_flags |= changeable_flags; return old_flags; } @@ -486,10 +486,10 @@ df_set_flags (enum df_changeable_flags changeable_flags) /* Clear the MASK flags in the DFLOW problem. The old flags are returned. If a flag is not allowed to be changed this will fail if checking is enabled. */ -enum df_changeable_flags -df_clear_flags (enum df_changeable_flags changeable_flags) +int +df_clear_flags (int changeable_flags) { - enum df_changeable_flags old_flags = df->changeable_flags; + int old_flags = df->changeable_flags; df->changeable_flags &= ~changeable_flags; return old_flags; } @@ -766,7 +766,7 @@ struct rtl_opt_pass pass_df_initialize_opt = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -793,7 +793,7 @@ struct rtl_opt_pass pass_df_initialize_no_opt = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -842,7 +842,7 @@ struct rtl_opt_pass pass_df_finish = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/df-problems.c b/gcc/df-problems.c index c0f79d83020..5063a02a229 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -388,7 +388,7 @@ df_rd_bb_local_compute (unsigned int bb_index) if (!(df->changeable_flags & DF_NO_HARD_REGS)) df_rd_bb_local_compute_process_def (bb_info, df_get_artificial_defs (bb_index), - 0); + DF_REF_NONE); FOR_BB_INSNS_REVERSE (bb, insn) { @@ -398,7 +398,8 @@ df_rd_bb_local_compute (unsigned int bb_index) continue; df_rd_bb_local_compute_process_def (bb_info, - DF_INSN_UID_DEFS (uid), 0); + DF_INSN_UID_DEFS (uid), + DF_REF_NONE); /* This complex dance with the two bitmaps is required because instructions can assign twice to the same pseudo. This @@ -2121,10 +2122,11 @@ df_chain_create_bb (unsigned int bb_index) /* Now scan the uses and link them up with the defs that remain in the cpy vector. */ - df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), 0); + df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), DF_REF_NONE); if (df->changeable_flags & DF_EQ_NOTES) - df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), 0); + df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), + DF_REF_NONE); /* Since we are going forwards, process the defs second. This @@ -2152,7 +2154,7 @@ df_chain_create_bb (unsigned int bb_index) if (!(df->changeable_flags & DF_NO_HARD_REGS)) df_chain_create_bb_process_use (cpy, df_get_artificial_uses (bb->index), - 0); + DF_REF_NONE); BITMAP_FREE (cpy); } @@ -2325,10 +2327,10 @@ static struct df_problem problem_CHAIN = solution. */ void -df_chain_add_problem (enum df_chain_flags chain_flags) +df_chain_add_problem (unsigned int chain_flags) { df_add_problem (&problem_CHAIN); - df_chain->local_flags = (unsigned int)chain_flags; + df_chain->local_flags = chain_flags; df_chain->out_of_date_transfer_functions = BITMAP_ALLOC (NULL); } @@ -2491,7 +2493,7 @@ df_byte_lr_alloc (bitmap all_blocks ATTRIBUTE_UNUSED) unsigned int index = 0; unsigned int max_reg = max_reg_num(); struct df_byte_lr_problem_data *problem_data - = problem_data = XNEW (struct df_byte_lr_problem_data); + = XNEW (struct df_byte_lr_problem_data); df_byte_lr->problem_data = problem_data; @@ -3893,19 +3895,21 @@ df_simulate_one_insn_forwards (basic_block bb, rtx insn, bitmap live) for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) { switch (REG_NOTE_KIND (link)) + { case REG_DEAD: case REG_UNUSED: - { - rtx reg = XEXP (link, 0); - int regno = REGNO (reg); - if (regno < FIRST_PSEUDO_REGISTER) - { - int n = hard_regno_nregs[regno][GET_MODE (reg)]; - while (--n >= 0) - bitmap_clear_bit (live, regno + n); - } - else - bitmap_clear_bit (live, regno); + { + rtx reg = XEXP (link, 0); + int regno = REGNO (reg); + if (regno < FIRST_PSEUDO_REGISTER) + { + int n = hard_regno_nregs[regno][GET_MODE (reg)]; + while (--n >= 0) + bitmap_clear_bit (live, regno + n); + } + else + bitmap_clear_bit (live, regno); + } break; default: break; diff --git a/gcc/df-scan.c b/gcc/df-scan.c index d8ad4a06698..1cb349c92ab 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -100,24 +100,22 @@ static struct df_mw_hardreg * df_null_mw_rec[1]; static void df_ref_record (enum df_ref_class, struct df_collection_rec *, rtx, rtx *, basic_block, struct df_insn_info *, - enum df_ref_type, enum df_ref_flags, - int, int, enum machine_mode); + enum df_ref_type, int, int, int, + enum machine_mode); static void df_def_record_1 (struct df_collection_rec *, rtx, basic_block, struct df_insn_info *, - enum df_ref_flags); + int); static void df_defs_record (struct df_collection_rec *, rtx, - basic_block, struct df_insn_info *, - enum df_ref_flags); + basic_block, struct df_insn_info *, int); static void df_uses_record (enum df_ref_class, struct df_collection_rec *, rtx *, enum df_ref_type, basic_block, struct df_insn_info *, - enum df_ref_flags, - int, int, enum machine_mode); + int, int, int, enum machine_mode); static df_ref df_ref_create_structure (enum df_ref_class, struct df_collection_rec *, rtx, rtx *, basic_block, struct df_insn_info *, - enum df_ref_type, enum df_ref_flags, + enum df_ref_type, int, int, int, enum machine_mode); static void df_insn_refs_collect (struct df_collection_rec*, @@ -708,7 +706,7 @@ df_ref df_ref_create (rtx reg, rtx *loc, rtx insn, basic_block bb, enum df_ref_type ref_type, - enum df_ref_flags ref_flags, + int ref_flags, int width, int offset, enum machine_mode mode) { df_ref ref; @@ -2146,7 +2144,7 @@ df_notes_rescan (rtx insn) case REG_EQUAL: df_uses_record (DF_REF_REGULAR, &collection_rec, &XEXP (note, 0), DF_REF_REG_USE, - bb, insn_info, DF_REF_IN_NOTE, -1, -1, 0); + bb, insn_info, DF_REF_IN_NOTE, -1, -1, VOIDmode); default: break; } @@ -2691,8 +2689,8 @@ df_ref_create_structure (enum df_ref_class cl, rtx reg, rtx *loc, basic_block bb, struct df_insn_info *info, enum df_ref_type ref_type, - enum df_ref_flags ref_flags, - int width, int offset, enum machine_mode mode) + int ref_flags, int width, int offset, + enum machine_mode mode) { df_ref this_ref = NULL; int regno = REGNO (GET_CODE (reg) == SUBREG ? SUBREG_REG (reg) : reg); @@ -2789,8 +2787,8 @@ df_ref_record (enum df_ref_class cl, rtx reg, rtx *loc, basic_block bb, struct df_insn_info *insn_info, enum df_ref_type ref_type, - enum df_ref_flags ref_flags, - int width, int offset, enum machine_mode mode) + int ref_flags, int width, int offset, + enum machine_mode mode) { unsigned int regno; @@ -2878,13 +2876,13 @@ df_read_modify_subreg_p (rtx x) static void df_def_record_1 (struct df_collection_rec *collection_rec, rtx x, basic_block bb, struct df_insn_info *insn_info, - enum df_ref_flags flags) + int flags) { rtx *loc; rtx dst; int offset = -1; int width = -1; - enum machine_mode mode = 0; + enum machine_mode mode = VOIDmode; enum df_ref_class cl = DF_REF_REGULAR; /* We may recursively call ourselves on EXPR_LIST when dealing with PARALLEL @@ -2971,14 +2969,14 @@ df_def_record_1 (struct df_collection_rec *collection_rec, static void df_defs_record (struct df_collection_rec *collection_rec, rtx x, basic_block bb, struct df_insn_info *insn_info, - enum df_ref_flags flags) + int flags) { RTX_CODE code = GET_CODE (x); if (code == SET || code == CLOBBER) { /* Mark the single def within the pattern. */ - enum df_ref_flags clobber_flags = flags; + int clobber_flags = flags; clobber_flags |= (code == CLOBBER) ? DF_REF_MUST_CLOBBER : 0; df_def_record_1 (collection_rec, x, bb, insn_info, clobber_flags); } @@ -3009,8 +3007,7 @@ static void df_uses_record (enum df_ref_class cl, struct df_collection_rec *collection_rec, rtx *loc, enum df_ref_type ref_type, basic_block bb, struct df_insn_info *insn_info, - enum df_ref_flags flags, - int width, int offset, enum machine_mode mode) + int flags, int width, int offset, enum machine_mode mode) { RTX_CODE code; rtx x; @@ -3295,7 +3292,7 @@ df_get_conditional_uses (struct df_collection_rec *collection_rec) { int width = -1; int offset = -1; - enum machine_mode mode = 0; + enum machine_mode mode = VOIDmode; df_ref use; if (DF_REF_FLAGS_IS_SET (ref, DF_REF_SIGN_EXTRACT | DF_REF_ZERO_EXTRACT)) @@ -3322,7 +3319,7 @@ static void df_get_call_refs (struct df_collection_rec * collection_rec, basic_block bb, struct df_insn_info *insn_info, - enum df_ref_flags flags) + int flags) { rtx note; bitmap_iterator bi; @@ -3347,7 +3344,8 @@ df_get_call_refs (struct df_collection_rec * collection_rec, { if (GET_CODE (XEXP (note, 0)) == USE) df_uses_record (DF_REF_REGULAR, collection_rec, &XEXP (XEXP (note, 0), 0), - DF_REF_REG_USE, bb, insn_info, flags, -1, -1, 0); + DF_REF_REG_USE, bb, insn_info, flags, -1, -1, + VOIDmode); else if (GET_CODE (XEXP (note, 0)) == CLOBBER) { if (REG_P (XEXP (XEXP (note, 0), 0))) @@ -3359,7 +3357,8 @@ df_get_call_refs (struct df_collection_rec * collection_rec, } else df_uses_record (DF_REF_REGULAR, collection_rec, &XEXP (note, 0), - DF_REF_REG_USE, bb, insn_info, flags, -1, -1, 0); + DF_REF_REG_USE, bb, insn_info, flags, -1, -1, + VOIDmode); } } @@ -3367,7 +3366,7 @@ df_get_call_refs (struct df_collection_rec * collection_rec, df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[STACK_POINTER_REGNUM], NULL, bb, insn_info, DF_REF_REG_USE, DF_REF_CALL_STACK_USAGE | flags, - -1, -1, 0); + -1, -1, VOIDmode); /* Calls may also reference any of the global registers, so they are recorded as used. */ @@ -3375,9 +3374,11 @@ df_get_call_refs (struct df_collection_rec * collection_rec, if (global_regs[i]) { df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[i], - NULL, bb, insn_info, DF_REF_REG_USE, flags, -1, -1, 0); + NULL, bb, insn_info, DF_REF_REG_USE, flags, -1, -1, + VOIDmode); df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[i], - NULL, bb, insn_info, DF_REF_REG_DEF, flags, -1, -1, 0); + NULL, bb, insn_info, DF_REF_REG_DEF, flags, -1, -1, + VOIDmode); } is_sibling_call = SIBLING_CALL_P (insn_info->insn); @@ -3392,7 +3393,7 @@ df_get_call_refs (struct df_collection_rec * collection_rec, df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[ui], NULL, bb, insn_info, DF_REF_REG_DEF, DF_REF_MAY_CLOBBER | flags, - -1, -1, 0); + -1, -1, VOIDmode); } BITMAP_FREE (defs_generated); @@ -3430,19 +3431,19 @@ df_insn_refs_collect (struct df_collection_rec* collection_rec, case REG_EQUAL: df_uses_record (DF_REF_REGULAR, collection_rec, &XEXP (note, 0), DF_REF_REG_USE, - bb, insn_info, DF_REF_IN_NOTE, -1, -1, 0); + bb, insn_info, DF_REF_IN_NOTE, -1, -1, VOIDmode); break; case REG_NON_LOCAL_GOTO: /* The frame ptr is used by a non-local goto. */ df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[FRAME_POINTER_REGNUM], NULL, bb, insn_info, - DF_REF_REG_USE, 0, -1, -1, 0); + DF_REF_REG_USE, 0, -1, -1, VOIDmode); #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM df_ref_record (DF_REF_BASE, collection_rec, regno_reg_rtx[HARD_FRAME_POINTER_REGNUM], NULL, bb, insn_info, - DF_REF_REG_USE, 0, -1, -1, 0); + DF_REF_REG_USE, 0, -1, -1, VOIDmode); #endif break; default: @@ -3457,7 +3458,7 @@ df_insn_refs_collect (struct df_collection_rec* collection_rec, /* Record the register uses. */ df_uses_record (DF_REF_REGULAR, collection_rec, &PATTERN (insn_info->insn), DF_REF_REG_USE, bb, insn_info, 0, - -1, -1, 0); + -1, -1, VOIDmode); /* DF_REF_CONDITIONAL needs corresponding USES. */ if (is_cond_exec) @@ -3540,7 +3541,8 @@ df_bb_refs_collect (struct df_collection_rec *collection_rec, basic_block bb) if (regno == INVALID_REGNUM) break; df_ref_record (DF_REF_ARTIFICIAL, collection_rec, regno_reg_rtx[regno], NULL, - bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP, -1, -1, 0); + bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP, -1, -1, + VOIDmode); } } #endif @@ -3549,7 +3551,7 @@ df_bb_refs_collect (struct df_collection_rec *collection_rec, basic_block bb) non-local goto. */ if (bb->flags & BB_NON_LOCAL_GOTO_TARGET) df_ref_record (DF_REF_ARTIFICIAL, collection_rec, hard_frame_pointer_rtx, NULL, - bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP, -1, -1, 0); + bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP, -1, -1, VOIDmode); /* Add the artificial uses. */ if (bb->index >= NUM_FIXED_BLOCKS) @@ -3563,7 +3565,7 @@ df_bb_refs_collect (struct df_collection_rec *collection_rec, basic_block bb) EXECUTE_IF_SET_IN_BITMAP (au, 0, regno, bi) { df_ref_record (DF_REF_ARTIFICIAL, collection_rec, regno_reg_rtx[regno], NULL, - bb, NULL, DF_REF_REG_USE, 0, -1, -1, 0); + bb, NULL, DF_REF_REG_USE, 0, -1, -1, VOIDmode); } } @@ -3864,7 +3866,8 @@ df_entry_block_defs_collect (struct df_collection_rec *collection_rec, EXECUTE_IF_SET_IN_BITMAP (entry_block_defs, 0, i, bi) { df_ref_record (DF_REF_ARTIFICIAL, collection_rec, regno_reg_rtx[i], NULL, - ENTRY_BLOCK_PTR, NULL, DF_REF_REG_DEF, 0, -1, -1, 0); + ENTRY_BLOCK_PTR, NULL, DF_REF_REG_DEF, 0, -1, -1, + VOIDmode); } df_canonize_collection_rec (collection_rec); @@ -4025,7 +4028,7 @@ df_exit_block_uses_collect (struct df_collection_rec *collection_rec, bitmap exi EXECUTE_IF_SET_IN_BITMAP (exit_block_uses, 0, i, bi) df_ref_record (DF_REF_ARTIFICIAL, collection_rec, regno_reg_rtx[i], NULL, - EXIT_BLOCK_PTR, NULL, DF_REF_REG_USE, 0, -1, -1, 0); + EXIT_BLOCK_PTR, NULL, DF_REF_REG_USE, 0, -1, -1, VOIDmode); #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM /* It is deliberate that this is not put in the exit block uses but @@ -4035,7 +4038,7 @@ df_exit_block_uses_collect (struct df_collection_rec *collection_rec, bitmap exi && bb_has_eh_pred (EXIT_BLOCK_PTR) && fixed_regs[ARG_POINTER_REGNUM]) df_ref_record (DF_REF_ARTIFICIAL, collection_rec, regno_reg_rtx[ARG_POINTER_REGNUM], NULL, - EXIT_BLOCK_PTR, NULL, DF_REF_REG_USE, 0, -1, -1, 0); + EXIT_BLOCK_PTR, NULL, DF_REF_REG_USE, 0, -1, -1, VOIDmode); #endif df_canonize_collection_rec (collection_rec); @@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see #include "bitmap.h" #include "basic-block.h" #include "alloc-pool.h" +#include "timevar.h" struct dataflow; struct df; @@ -81,6 +82,8 @@ enum df_ref_type {DF_REF_REG_DEF, DF_REF_REG_USE, enum df_ref_flags { + DF_REF_NONE = 0, + /* This flag is set if this ref occurs inside of a conditional execution instruction. */ DF_REF_CONDITIONAL = 1 << 0, @@ -275,7 +278,7 @@ struct df_problem { struct df_problem *dependent_problem; /* The timevar id associated with this pass. */ - unsigned int tv_id; + timevar_id_t tv_id; /* True if the df_set_blocks should null out the basic block info if this block drops out of df->blocks_to_analyze. */ @@ -341,8 +344,7 @@ struct df_mw_hardreg accesses to 16-bit fields will usually be quicker. */ ENUM_BITFIELD(df_ref_type) type : 16; /* Used to see if the ref is read or write. */ - ENUM_BITFIELD(df_ref_flags) flags : 16; - /* Various flags. */ + int flags : 16; /* Various flags. */ unsigned int start_regno; /* First word of the multi word subreg. */ unsigned int end_regno; /* Last word of the multi word subreg. */ unsigned int mw_order; /* Same as df_ref.ref_order. */ @@ -360,8 +362,7 @@ struct df_base_ref ENUM_BITFIELD(df_ref_type) type : 8; /* Type of ref. */ - ENUM_BITFIELD(df_ref_flags) flags : 16; - /* Various flags. */ + int flags : 16; /* Various flags. */ rtx reg; /* The register referenced. */ struct df_link *chain; /* Head of def-use, use-def. */ /* Pointer to the insn info of the containing instruction. FIXME! @@ -602,8 +603,9 @@ struct df addresses. It is incremented whenever a ref is created. */ unsigned int ref_order; - /* Problem specific control information. */ - ENUM_BITFIELD (df_changeable_flags) changeable_flags : 8; + /* Problem specific control information. This is a bitmask of the + values defined in enum df_changeable_flags. */ + unsigned int changeable_flags : 8; /* If this is true, then only a subset of the blocks of the program is considered to compute the solutions of dataflow problems. */ @@ -878,8 +880,8 @@ extern struct df *df; /* Functions defined in df-core.c. */ extern void df_add_problem (struct df_problem *); -extern enum df_changeable_flags df_set_flags (enum df_changeable_flags); -extern enum df_changeable_flags df_clear_flags (enum df_changeable_flags); +extern int df_set_flags (int flags); +extern int df_clear_flags (int flags); extern void df_set_blocks (bitmap); extern void df_remove_problem (struct dataflow *); extern void df_finish_pass (bool); @@ -944,7 +946,7 @@ extern void df_lr_verify_transfer_functions (void); extern void df_live_verify_transfer_functions (void); extern void df_live_add_problem (void); extern void df_live_set_all_dirty (void); -extern void df_chain_add_problem (enum df_chain_flags); +extern void df_chain_add_problem (unsigned int); extern void df_byte_lr_add_problem (void); extern int df_byte_lr_get_regno_start (unsigned int); extern int df_byte_lr_get_regno_len (unsigned int); @@ -971,8 +973,8 @@ extern void df_grow_reg_info (void); extern void df_grow_insn_info (void); extern void df_scan_blocks (void); extern df_ref df_ref_create (rtx, rtx *, rtx,basic_block, - enum df_ref_type, enum df_ref_flags, - int, int, enum machine_mode); + enum df_ref_type, int, int, int, + enum machine_mode); extern void df_ref_remove (df_ref); extern struct df_insn_info * df_insn_create_insn_record (rtx); extern void df_insn_delete (basic_block, unsigned int); diff --git a/gcc/dominance.c b/gcc/dominance.c index b4dff4c6c16..e50fb8e9b3e 100644 --- a/gcc/dominance.c +++ b/gcc/dominance.c @@ -1321,7 +1321,12 @@ iterate_fix_dominators (enum cdi_direction dir, VEC (basic_block, heap) *bbs, } } for (y = 0; y < g->n_vertices; y++) - BITMAP_FREE (g->vertices[y].data); + { + /* Strange contortions for C++ compilation. */ + bitmap b = (bitmap) g->vertices[y].data; + BITMAP_FREE (b); + g->vertices[y].data = NULL; + } pointer_map_destroy (map); /* Find the dominator tree of G. */ diff --git a/gcc/double-int.c b/gcc/double-int.c index 7bcf88f2780..4423c7c1904 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -211,8 +211,9 @@ double_int_divmod (double_int a, double_int b, bool uns, unsigned code, { double_int ret; - div_and_round_double (code, uns, a.low, a.high, b.low, b.high, - &ret.low, &ret.high, &mod->low, &mod->high); + div_and_round_double ((enum tree_code) code, uns, a.low, a.high, + b.low, b.high, &ret.low, &ret.high, + &mod->low, &mod->high); return ret; } diff --git a/gcc/dse.c b/gcc/dse.c index a35f07bb113..ce3255e2ea1 100644 --- a/gcc/dse.c +++ b/gcc/dse.c @@ -244,7 +244,7 @@ struct store_info { /* A bitmap with one bit per byte. Cleared bit means the position is needed. Used if IS_LARGE is false. */ - bitmap bitmap; + bitmap bmap; /* Number of set bits (i.e. unneeded bytes) in BITMAP. If it is equal to END - BEGIN, the whole store is unused. */ @@ -791,7 +791,7 @@ free_store_info (insn_info_t insn_info) { store_info_t next = store_info->next; if (store_info->is_large) - BITMAP_FREE (store_info->positions_needed.large.bitmap); + BITMAP_FREE (store_info->positions_needed.large.bmap); if (store_info->cse_base) pool_free (cse_store_info_pool, store_info); else @@ -826,7 +826,7 @@ replace_inc_dec (rtx *r, void *d) case POST_INC: { rtx r1 = XEXP (x, 0); - rtx c = gen_int_mode (Pmode, data->size); + rtx c = gen_int_mode (data->size, Pmode); emit_insn_before (gen_rtx_SET (Pmode, r1, gen_rtx_PLUS (Pmode, r1, c)), data->insn); @@ -837,7 +837,7 @@ replace_inc_dec (rtx *r, void *d) case POST_DEC: { rtx r1 = XEXP (x, 0); - rtx c = gen_int_mode (Pmode, -data->size); + rtx c = gen_int_mode (-data->size, Pmode); emit_insn_before (gen_rtx_SET (Pmode, r1, gen_rtx_PLUS (Pmode, r1, c)), data->insn); @@ -1213,10 +1213,10 @@ set_position_unneeded (store_info_t s_info, int pos) { if (__builtin_expect (s_info->is_large, false)) { - if (!bitmap_bit_p (s_info->positions_needed.large.bitmap, pos)) + if (!bitmap_bit_p (s_info->positions_needed.large.bmap, pos)) { s_info->positions_needed.large.count++; - bitmap_set_bit (s_info->positions_needed.large.bitmap, pos); + bitmap_set_bit (s_info->positions_needed.large.bmap, pos); } } else @@ -1233,7 +1233,7 @@ set_all_positions_unneeded (store_info_t s_info) { int pos, end = s_info->end - s_info->begin; for (pos = 0; pos < end; pos++) - bitmap_set_bit (s_info->positions_needed.large.bitmap, pos); + bitmap_set_bit (s_info->positions_needed.large.bmap, pos); s_info->positions_needed.large.count = end; } else @@ -1263,7 +1263,7 @@ all_positions_needed_p (store_info_t s_info, int start, int width) { int end = start + width; while (start < end) - if (bitmap_bit_p (s_info->positions_needed.large.bitmap, start++)) + if (bitmap_bit_p (s_info->positions_needed.large.bmap, start++)) return false; return true; } @@ -1588,7 +1588,7 @@ record_store (rtx body, bb_info_t bb_info) { store_info->is_large = true; store_info->positions_needed.large.count = 0; - store_info->positions_needed.large.bitmap = BITMAP_ALLOC (NULL); + store_info->positions_needed.large.bmap = BITMAP_ALLOC (NULL); } else { @@ -2687,7 +2687,7 @@ dse_step1 (void) for (s_info = ptr->store_rec; s_info; s_info = s_info->next) if (s_info->is_large) { - BITMAP_FREE (s_info->positions_needed.large.bitmap); + BITMAP_FREE (s_info->positions_needed.large.bmap); s_info->is_large = false; } } diff --git a/gcc/dummy-checksum.c b/gcc/dummy-checksum.c index 81190a6ca15..d503105d6be 100644 --- a/gcc/dummy-checksum.c +++ b/gcc/dummy-checksum.c @@ -1 +1,4 @@ +#ifdef __cplusplus +extern +#endif const unsigned char executable_checksum[16] = { 0 }; diff --git a/gcc/dwarf2.h b/gcc/dwarf2.h index 44db03a8677..fe875be60a5 100644 --- a/gcc/dwarf2.h +++ b/gcc/dwarf2.h @@ -584,11 +584,11 @@ enum dwarf_type DW_ATE_HP_complex_float128 = 0x83, /* Complex floating-point (128 bit). */ DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */ DW_ATE_HP_imaginary_float80 = 0x85, - DW_ATE_HP_imaginary_float128 = 0x86 - }; + DW_ATE_HP_imaginary_float128 = 0x86, -#define DW_ATE_lo_user 0x80 -#define DW_ATE_hi_user 0xff + DW_ATE_lo_user = 0x80, + DW_ATE_hi_user = 0xff + }; /* Decimal sign encodings. */ enum dwarf_decimal_sign_encoding diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 9bf0803ce57..b3f0a58e64d 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -380,7 +380,7 @@ struct indirect_string_node GTY(()) { const char *str; unsigned int refcount; - unsigned int form; + enum dwarf_form form; char *label; }; @@ -3396,7 +3396,8 @@ struct dwarf_file_data GTY(()) /* We need some way to distinguish DW_OP_addr with a direct symbol relocation from DW_OP_addr with a dtp-relative symbol relocation. */ -#define INTERNAL_DW_OP_tls_addr (0x100 + DW_OP_addr) +#define INTERNAL_DW_OP_tls_addr \ + ((enum dwarf_location_atom) (0x100 + DW_OP_addr)) typedef struct dw_val_struct *dw_val_ref; @@ -3866,12 +3867,13 @@ new_reg_loc_descr (unsigned int reg, unsigned HOST_WIDE_INT offset) if (offset) { if (reg <= 31) - return new_loc_descr (DW_OP_breg0 + reg, offset, 0); + return new_loc_descr ((enum dwarf_location_atom) (DW_OP_breg0 + reg), + offset, 0); else return new_loc_descr (DW_OP_bregx, reg, offset); } else if (reg <= 31) - return new_loc_descr (DW_OP_reg0 + reg, 0, 0); + return new_loc_descr ((enum dwarf_location_atom) (DW_OP_reg0 + reg), 0, 0); else return new_loc_descr (DW_OP_regx, reg, 0); } @@ -4975,7 +4977,7 @@ static hashval_t debug_str_do_hash (const void *); static int debug_str_eq (const void *, const void *); static void add_AT_string (dw_die_ref, enum dwarf_attribute, const char *); static inline const char *AT_string (dw_attr_ref); -static int AT_string_form (dw_attr_ref); +static enum dwarf_form AT_string_form (dw_attr_ref); static void add_AT_die_ref (dw_die_ref, enum dwarf_attribute, dw_die_ref); static void add_AT_specification (dw_die_ref, dw_die_ref); static inline dw_die_ref AT_ref (dw_attr_ref); @@ -5969,7 +5971,7 @@ AT_string (dw_attr_ref a) /* Find out whether a string should be output inline in DIE or out-of-line in .debug_str section. */ -static int +static enum dwarf_form AT_string_form (dw_attr_ref a) { struct indirect_string_node *node; @@ -9759,13 +9761,13 @@ int_loc_descriptor (HOST_WIDE_INT i) if (i >= 0) { if (i <= 31) - op = DW_OP_lit0 + i; + op = (enum dwarf_location_atom) (DW_OP_lit0 + i); else if (i <= 0xff) op = DW_OP_const1u; else if (i <= 0xffff) op = DW_OP_const2u; else if (HOST_BITS_PER_WIDE_INT == 32 - || i <= 0xffffffff) + || i <= (HOST_WIDE_INT) 0xffffffff) op = DW_OP_const4u; else op = DW_OP_constu; @@ -9777,7 +9779,7 @@ int_loc_descriptor (HOST_WIDE_INT i) else if (i >= -0x8000) op = DW_OP_const2s; else if (HOST_BITS_PER_WIDE_INT == 32 - || i >= -0x80000000) + || i >= (HOST_WIDE_INT) -0x80000000) op = DW_OP_const4s; else op = DW_OP_consts; @@ -9852,7 +9854,8 @@ based_loc_descr (rtx reg, HOST_WIDE_INT offset, regno = dbx_reg_number (reg); if (regno <= 31) - result = new_loc_descr (DW_OP_breg0 + regno, offset, 0); + result = new_loc_descr ((enum dwarf_location_atom) (DW_OP_breg0 + regno), + offset, 0); else result = new_loc_descr (DW_OP_bregx, regno, offset); @@ -10380,8 +10383,8 @@ loc_descriptor_from_tree_1 (tree loc, int want_address) if (DECL_THREAD_LOCAL_P (loc)) { rtx rtl; - unsigned first_op; - unsigned second_op; + enum dwarf_location_atom first_op; + enum dwarf_location_atom second_op; if (targetm.have_tls) { @@ -12733,7 +12736,8 @@ add_calling_convention_attribute (dw_die_ref subr_die, tree decl) { enum dwarf_calling_convention value = DW_CC_normal; - value = targetm.dwarf_calling_convention (TREE_TYPE (decl)); + value = ((enum dwarf_calling_convention) + targetm.dwarf_calling_convention (TREE_TYPE (decl))); /* DWARF doesn't provide a way to identify a program's source-level entry point. DW_AT_calling_convention attributes are only meant diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index ca033824c0d..61dde733a0d 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2392,7 +2392,7 @@ struct rtl_opt_pass pass_unshare_all_rtl = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -4923,7 +4923,8 @@ push_to_sequence (rtx first) start_sequence (); - for (last = first; last && NEXT_INSN (last); last = NEXT_INSN (last)); + for (last = first; last && NEXT_INSN (last); last = NEXT_INSN (last)) + ; first_insn = first; last_insn = last; diff --git a/gcc/errors.h b/gcc/errors.h index 10d52c72d2d..5ed34e07df7 100644 --- a/gcc/errors.h +++ b/gcc/errors.h @@ -40,6 +40,13 @@ extern void internal_error (const char *, ...) ATTRIBUTE_NORETURN ATTRIBUTE_PRIN extern const char *trim_filename (const char *); extern int have_error; + +#ifdef __cplusplus +extern "C" { +#endif extern const char *progname; +#ifdef __cplusplus +} +#endif #endif /* ! GCC_ERRORS_H */ diff --git a/gcc/except.c b/gcc/except.c index 2913fc8f31f..52199c980c4 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -99,7 +99,7 @@ tree (*lang_eh_runtime_type) (tree); struct ehl_map_entry GTY(()) { rtx label; - struct eh_region *region; + struct eh_region_d *region; }; static GTY(()) int call_site_base; @@ -114,15 +114,27 @@ static int sjlj_fc_personality_ofs; static int sjlj_fc_lsda_ofs; static int sjlj_fc_jbuf_ofs; +/* Possible types of an exception region. */ +enum eh_region_type + { + ERT_UNKNOWN = 0, + ERT_CLEANUP, + ERT_TRY, + ERT_CATCH, + ERT_ALLOWED_EXCEPTIONS, + ERT_MUST_NOT_THROW, + ERT_THROW + }; + /* Describes one exception region. */ -struct eh_region GTY(()) +struct eh_region_d GTY(()) { /* The immediately surrounding region. */ - struct eh_region *outer; + struct eh_region_d *outer; /* The list of immediately contained regions. */ - struct eh_region *inner; - struct eh_region *next_peer; + struct eh_region_d *inner; + struct eh_region_d *next_peer; /* An identifier for this region. */ int region_number; @@ -132,31 +144,22 @@ struct eh_region GTY(()) bitmap aka; /* Each region does exactly one thing. */ - enum eh_region_type - { - ERT_UNKNOWN = 0, - ERT_CLEANUP, - ERT_TRY, - ERT_CATCH, - ERT_ALLOWED_EXCEPTIONS, - ERT_MUST_NOT_THROW, - ERT_THROW - } type; + enum eh_region_type type; /* Holds the action to perform based on the preceding type. */ union eh_region_u { /* A list of catch blocks, a surrounding try block, and the label for continuing after a catch. */ struct eh_region_u_try { - struct eh_region *eh_catch; - struct eh_region *last_catch; + struct eh_region_d *eh_catch; + struct eh_region_d *last_catch; } GTY ((tag ("ERT_TRY"))) eh_try; /* The list through the catch handlers, the list of type objects matched, and the list of associated filters. */ struct eh_region_u_catch { - struct eh_region *next_catch; - struct eh_region *prev_catch; + struct eh_region_d *next_catch; + struct eh_region_d *prev_catch; tree type_list; tree filter_list; } GTY ((tag ("ERT_CATCH"))) eh_catch; @@ -176,7 +179,7 @@ struct eh_region GTY(()) /* Retain the cleanup expression even after expansion so that we can match up fixup regions. */ struct eh_region_u_cleanup { - struct eh_region *prev_try; + struct eh_region_d *prev_try; } GTY ((tag ("ERT_CLEANUP"))) cleanup; } GTY ((desc ("%0.type"))) u; @@ -198,9 +201,9 @@ struct eh_region GTY(()) unsigned may_contain_throw : 1; }; -typedef struct eh_region *eh_region; +typedef struct eh_region_d *eh_region; -struct call_site_record GTY(()) +struct call_site_record_d GTY(()) { rtx landing_pad; int action; @@ -213,7 +216,7 @@ DEF_VEC_ALLOC_P(eh_region, gc); struct eh_status GTY(()) { /* The tree of all regions for this function. */ - struct eh_region *region_tree; + struct eh_region_d *region_tree; /* The same information as an indexable array. */ VEC(eh_region,gc) *region_array; @@ -251,9 +254,9 @@ static void sjlj_build_landing_pads (void); static hashval_t ehl_hash (const void *); static int ehl_eq (const void *, const void *); -static void add_ehl_entry (rtx, struct eh_region *); +static void add_ehl_entry (rtx, struct eh_region_d *); static void remove_exception_handler_label (rtx); -static void remove_eh_handler (struct eh_region *); +static void remove_eh_handler (struct eh_region_d *); static int for_each_eh_label_1 (void **, void *); /* The return value of reachable_next_level. */ @@ -270,13 +273,13 @@ enum reachable_code }; struct reachable_info; -static enum reachable_code reachable_next_level (struct eh_region *, tree, +static enum reachable_code reachable_next_level (struct eh_region_d *, tree, struct reachable_info *); static int action_record_eq (const void *, const void *); static hashval_t action_record_hash (const void *); static int add_action_record (htab_t, int, int); -static int collect_one_action_chain (htab_t, struct eh_region *); +static int collect_one_action_chain (htab_t, struct eh_region_d *); static int add_call_site (rtx, int); static void push_uleb128 (varray_type *, unsigned int); @@ -416,17 +419,17 @@ init_eh_for_function (void) These are used from tree-eh.c when processing exception related nodes during tree optimization. */ -static struct eh_region * -gen_eh_region (enum eh_region_type type, struct eh_region *outer) +static struct eh_region_d * +gen_eh_region (enum eh_region_type type, struct eh_region_d *outer) { - struct eh_region *new_eh; + struct eh_region_d *new_eh; #ifdef ENABLE_CHECKING gcc_assert (doing_eh (0)); #endif /* Insert a new blank region as a leaf in the tree. */ - new_eh = GGC_CNEW (struct eh_region); + new_eh = GGC_CNEW (struct eh_region_d); new_eh->type = type; new_eh->outer = outer; if (outer) @@ -445,24 +448,24 @@ gen_eh_region (enum eh_region_type type, struct eh_region *outer) return new_eh; } -struct eh_region * -gen_eh_region_cleanup (struct eh_region *outer, struct eh_region *prev_try) +struct eh_region_d * +gen_eh_region_cleanup (struct eh_region_d *outer, struct eh_region_d *prev_try) { - struct eh_region *cleanup = gen_eh_region (ERT_CLEANUP, outer); + struct eh_region_d *cleanup = gen_eh_region (ERT_CLEANUP, outer); cleanup->u.cleanup.prev_try = prev_try; return cleanup; } -struct eh_region * -gen_eh_region_try (struct eh_region *outer) +struct eh_region_d * +gen_eh_region_try (struct eh_region_d *outer) { return gen_eh_region (ERT_TRY, outer); } -struct eh_region * -gen_eh_region_catch (struct eh_region *t, tree type_or_list) +struct eh_region_d * +gen_eh_region_catch (struct eh_region_d *t, tree type_or_list) { - struct eh_region *c, *l; + struct eh_region_d *c, *l; tree type_list, type_node; /* Ensure to always end up with a type list to normalize further @@ -491,10 +494,10 @@ gen_eh_region_catch (struct eh_region *t, tree type_or_list) return c; } -struct eh_region * -gen_eh_region_allowed (struct eh_region *outer, tree allowed) +struct eh_region_d * +gen_eh_region_allowed (struct eh_region_d *outer, tree allowed) { - struct eh_region *region = gen_eh_region (ERT_ALLOWED_EXCEPTIONS, outer); + struct eh_region_d *region = gen_eh_region (ERT_ALLOWED_EXCEPTIONS, outer); region->u.allowed.type_list = allowed; for (; allowed ; allowed = TREE_CHAIN (allowed)) @@ -503,32 +506,32 @@ gen_eh_region_allowed (struct eh_region *outer, tree allowed) return region; } -struct eh_region * -gen_eh_region_must_not_throw (struct eh_region *outer) +struct eh_region_d * +gen_eh_region_must_not_throw (struct eh_region_d *outer) { return gen_eh_region (ERT_MUST_NOT_THROW, outer); } int -get_eh_region_number (struct eh_region *region) +get_eh_region_number (struct eh_region_d *region) { return region->region_number; } bool -get_eh_region_may_contain_throw (struct eh_region *region) +get_eh_region_may_contain_throw (struct eh_region_d *region) { return region->may_contain_throw; } tree -get_eh_region_tree_label (struct eh_region *region) +get_eh_region_tree_label (struct eh_region_d *region) { return region->tree_label; } void -set_eh_region_tree_label (struct eh_region *region, tree lab) +set_eh_region_tree_label (struct eh_region_d *region, tree lab) { region->tree_label = lab; } @@ -537,7 +540,7 @@ void expand_resx_expr (tree exp) { int region_nr = TREE_INT_CST_LOW (TREE_OPERAND (exp, 0)); - struct eh_region *reg = VEC_index (eh_region, + struct eh_region_d *reg = VEC_index (eh_region, cfun->eh->region_array, region_nr); gcc_assert (!reg->resume); @@ -550,7 +553,7 @@ expand_resx_expr (tree exp) call to a function which itself may contain a throw. */ void -note_eh_region_may_contain_throw (struct eh_region *region) +note_eh_region_may_contain_throw (struct eh_region_d *region) { while (region && !region->may_contain_throw) { @@ -589,7 +592,7 @@ get_exception_filter (void) void collect_eh_region_array (void) { - struct eh_region *i; + struct eh_region_d *i; i = cfun->eh->region_tree; if (! i) @@ -629,7 +632,7 @@ remove_unreachable_regions (rtx insns) { int i, *uid_region_num; bool *reachable; - struct eh_region *r; + struct eh_region_d *r; rtx insn; uid_region_num = XCNEWVEC (int, get_max_uid ()); @@ -682,7 +685,7 @@ remove_unreachable_regions (rtx insns) { /* TRY regions are reachable if any of its CATCH regions are reachable. */ - struct eh_region *c; + struct eh_region_d *c; for (c = r->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch) if (reachable[c->region_number]) { @@ -719,7 +722,7 @@ convert_from_eh_region_ranges (void) we allocated earlier. */ for (i = 1; i <= n; ++i) { - struct eh_region *region; + struct eh_region_d *region; region = VEC_index (eh_region, cfun->eh->region_array, i); if (region && region->tree_label) @@ -730,7 +733,7 @@ convert_from_eh_region_ranges (void) } static void -add_ehl_entry (rtx label, struct eh_region *region) +add_ehl_entry (rtx label, struct eh_region_d *region) { struct ehl_map_entry **slot, *entry; @@ -773,7 +776,7 @@ find_exception_handler_labels (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *region; + struct eh_region_d *region; rtx lab; region = VEC_index (eh_region, cfun->eh->region_array, i); @@ -803,7 +806,7 @@ current_function_has_exception_handlers (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *region; + struct eh_region_d *region; region = VEC_index (eh_region, cfun->eh->region_array, i); if (region @@ -847,7 +850,7 @@ duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset) { eh_region ret, n; - ret = n = GGC_NEW (struct eh_region); + ret = n = GGC_NEW (struct eh_region_d); *n = *old; n->outer = outer; @@ -1023,7 +1026,7 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, bool eh_region_outer_p (struct function *ifun, int region_a, int region_b) { - struct eh_region *rp_a, *rp_b; + struct eh_region_d *rp_a, *rp_b; gcc_assert (ifun->eh->last_region_number > 0); gcc_assert (ifun->eh->region_tree); @@ -1050,7 +1053,7 @@ eh_region_outer_p (struct function *ifun, int region_a, int region_b) int eh_region_outermost (struct function *ifun, int region_a, int region_b) { - struct eh_region *rp_a, *rp_b; + struct eh_region_d *rp_a, *rp_b; sbitmap b_outer; gcc_assert (ifun->eh->last_region_number > 0); @@ -1277,7 +1280,7 @@ assign_filter_values (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *r; + struct eh_region_d *r; r = VEC_index (eh_region, cfun->eh->region_array, i); @@ -1372,7 +1375,7 @@ build_post_landing_pads (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *region; + struct eh_region_d *region; rtx seq; region = VEC_index (eh_region, cfun->eh->region_array, i); @@ -1399,7 +1402,7 @@ build_post_landing_pads (void) switch statement generation code in expand_end_case. Rapid prototyping sez a sequence of ifs. */ { - struct eh_region *c; + struct eh_region_d *c; for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch) { if (c->u.eh_catch.type_list == NULL) @@ -1492,8 +1495,8 @@ connect_post_landing_pads (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *region; - struct eh_region *outer; + struct eh_region_d *region; + struct eh_region_d *outer; rtx seq; rtx barrier; @@ -1569,7 +1572,7 @@ dw2_build_landing_pads (void) for (i = cfun->eh->last_region_number; i > 0; --i) { - struct eh_region *region; + struct eh_region_d *region; rtx seq; basic_block bb; edge e; @@ -1634,7 +1637,7 @@ sjlj_find_directly_reachable_regions (struct sjlj_lp_info *lp_info) for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) { - struct eh_region *region; + struct eh_region_d *region; enum reachable_code rc; tree type_thrown; rtx note; @@ -1688,7 +1691,7 @@ sjlj_assign_call_site_values (rtx dispatch_label, struct sjlj_lp_info *lp_info) for (i = cfun->eh->last_region_number; i > 0; --i) if (lp_info[i].directly_reachable) { - struct eh_region *r = VEC_index (eh_region, cfun->eh->region_array, i); + struct eh_region_d *r = VEC_index (eh_region, cfun->eh->region_array, i); r->landing_pad = dispatch_label; lp_info[i].action_index = collect_one_action_chain (ar_hash, r); @@ -1745,7 +1748,7 @@ sjlj_mark_call_sites (struct sjlj_lp_info *lp_info) for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) { - struct eh_region *region; + struct eh_region_d *region; int this_call_site; rtx note, before, p; @@ -1991,14 +1994,14 @@ sjlj_emit_dispatch_table (rtx dispatch_label, struct sjlj_lp_info *lp_info) emit_cmp_and_jump_insns (dispatch, GEN_INT (lp_info[i].dispatch_index), EQ, NULL_RTX, TYPE_MODE (integer_type_node), 0, - ((struct eh_region *)VEC_index (eh_region, cfun->eh->region_array, i)) + ((struct eh_region_d *)VEC_index (eh_region, cfun->eh->region_array, i)) ->post_landing_pad); } seq = get_insns (); end_sequence (); - before = (((struct eh_region *)VEC_index (eh_region, cfun->eh->region_array, first_reachable)) + before = (((struct eh_region_d *)VEC_index (eh_region, cfun->eh->region_array, first_reachable)) ->post_landing_pad); bb = emit_to_new_bb_before (seq, before); @@ -2145,9 +2148,9 @@ remove_exception_handler_label (rtx label) /* Splice REGION from the region tree etc. */ static void -remove_eh_handler (struct eh_region *region) +remove_eh_handler (struct eh_region_d *region) { - struct eh_region **pp, **pp_start, *p, *outer, *inner; + struct eh_region_d **pp, **pp_start, *p, *outer, *inner; rtx lab; /* For the benefit of efficiently handling REG_EH_REGION notes, @@ -2206,7 +2209,7 @@ remove_eh_handler (struct eh_region *region) if (region->type == ERT_CATCH) { - struct eh_region *eh_try, *next, *prev; + struct eh_region_d *eh_try, *next, *prev; for (eh_try = region->next_peer; eh_try->type == ERT_CATCH; @@ -2240,7 +2243,7 @@ void maybe_remove_eh_handler (rtx label) { struct ehl_map_entry **slot, tmp; - struct eh_region *region; + struct eh_region_d *region; /* ??? After generating landing pads, it's not so simple to determine if the region data is completely unused. One must examine the @@ -2294,12 +2297,12 @@ for_each_eh_label_1 (void **pentry, void *data) /* Invoke CALLBACK for every exception region in the current function. */ void -for_each_eh_region (void (*callback) (struct eh_region *)) +for_each_eh_region (void (*callback) (struct eh_region_d *)) { int i, n = cfun->eh->last_region_number; for (i = 1; i <= n; ++i) { - struct eh_region *region; + struct eh_region_d *region; region = VEC_index (eh_region, cfun->eh->region_array, i); if (region) @@ -2314,7 +2317,7 @@ struct reachable_info { tree types_caught; tree types_allowed; - void (*callback) (struct eh_region *, void *); + void (*callback) (struct eh_region_d *, void *); void *callback_data; bool saw_any_handlers; }; @@ -2354,7 +2357,7 @@ check_handled (tree handled, tree type) static void add_reachable_handler (struct reachable_info *info, - struct eh_region *lp_region, struct eh_region *region) + struct eh_region_d *lp_region, struct eh_region_d *region) { if (! info) return; @@ -2373,7 +2376,7 @@ add_reachable_handler (struct reachable_info *info, and caught/allowed type information between invocations. */ static enum reachable_code -reachable_next_level (struct eh_region *region, tree type_thrown, +reachable_next_level (struct eh_region_d *region, tree type_thrown, struct reachable_info *info) { switch (region->type) @@ -2387,7 +2390,7 @@ reachable_next_level (struct eh_region *region, tree type_thrown, case ERT_TRY: { - struct eh_region *c; + struct eh_region_d *c; enum reachable_code ret = RNL_NOT_CAUGHT; for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch) @@ -2540,11 +2543,11 @@ reachable_next_level (struct eh_region *region, tree type_thrown, void foreach_reachable_handler (int region_number, bool is_resx, - void (*callback) (struct eh_region *, void *), + void (*callback) (struct eh_region_d *, void *), void *callback_data) { struct reachable_info info; - struct eh_region *region; + struct eh_region_d *region; tree type_thrown; memset (&info, 0, sizeof (info)); @@ -2587,7 +2590,7 @@ foreach_reachable_handler (int region_number, bool is_resx, reached by a given insn. */ static void -arh_to_landing_pad (struct eh_region *region, void *data) +arh_to_landing_pad (struct eh_region_d *region, void *data) { rtx *p_handlers = (rtx *) data; if (! *p_handlers) @@ -2595,7 +2598,7 @@ arh_to_landing_pad (struct eh_region *region, void *data) } static void -arh_to_label (struct eh_region *region, void *data) +arh_to_label (struct eh_region_d *region, void *data) { rtx *p_handlers = (rtx *) data; *p_handlers = alloc_INSN_LIST (region->label, *p_handlers); @@ -2637,7 +2640,7 @@ reachable_handlers (rtx insn) bool can_throw_internal_1 (int region_number, bool is_resx) { - struct eh_region *region; + struct eh_region_d *region; tree type_thrown; region = VEC_index (eh_region, cfun->eh->region_array, region_number); @@ -2697,7 +2700,7 @@ can_throw_internal (const_rtx insn) bool can_throw_external_1 (int region_number, bool is_resx) { - struct eh_region *region; + struct eh_region_d *region; tree type_thrown; region = VEC_index (eh_region, cfun->eh->region_array, region_number); @@ -2818,7 +2821,7 @@ struct rtl_opt_pass pass_set_nothrow_function_flags = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3078,9 +3081,9 @@ add_action_record (htab_t ar_hash, int filter, int next) } static int -collect_one_action_chain (htab_t ar_hash, struct eh_region *region) +collect_one_action_chain (htab_t ar_hash, struct eh_region_d *region) { - struct eh_region *c; + struct eh_region_d *c; int next; /* If we've reached the top of the region chain, then we have @@ -3193,7 +3196,7 @@ add_call_site (rtx landing_pad, int action) { call_site_record record; - record = GGC_NEW (struct call_site_record); + record = GGC_NEW (struct call_site_record_d); record->landing_pad = landing_pad; record->action = action; @@ -3227,7 +3230,7 @@ convert_to_eh_region_ranges (void) for (iter = get_insns (); iter ; iter = NEXT_INSN (iter)) if (INSN_P (iter)) { - struct eh_region *region; + struct eh_region_d *region; int this_action; rtx this_landing_pad; @@ -3271,7 +3274,7 @@ convert_to_eh_region_ranges (void) landing pads. Collect the landing pad for this region. */ if (this_action >= 0) { - struct eh_region *o; + struct eh_region_d *o; for (o = region; ! o->landing_pad ; o = o->outer) continue; this_landing_pad = o->landing_pad; @@ -3340,7 +3343,7 @@ struct rtl_opt_pass pass_convert_to_eh_region_ranges = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3394,7 +3397,7 @@ dw2_size_of_call_site_table (void) for (i = 0; i < n; ++i) { - struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + call_site_record cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); size += size_of_uleb128 (cs->action); } @@ -3410,7 +3413,7 @@ sjlj_size_of_call_site_table (void) for (i = 0; i < n; ++i) { - struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + call_site_record cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); size += size_of_uleb128 (INTVAL (cs->landing_pad)); size += size_of_uleb128 (cs->action); } @@ -3427,7 +3430,7 @@ dw2_output_call_site_table (void) for (i = 0; i < n; ++i) { - struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + call_site_record cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); char reg_start_lab[32]; char reg_end_lab[32]; char landing_pad_lab[32]; @@ -3481,7 +3484,7 @@ sjlj_output_call_site_table (void) for (i = 0; i < n; ++i) { - struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + call_site_record cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); dw2_asm_output_data_uleb128 (INTVAL (cs->landing_pad), "region %d landing pad", i); @@ -3798,7 +3801,7 @@ get_eh_throw_stmt_table (struct function *fun) void dump_eh_tree (FILE *out, struct function *fun) { - struct eh_region *i; + struct eh_region_d *i; int depth = 0; static const char * const type_name[] = {"unknown", "cleanup", "try", "catch", "allowed_exceptions", "must_not_throw", @@ -3844,7 +3847,7 @@ dump_eh_tree (FILE *out, struct function *fun) void verify_eh_tree (struct function *fun) { - struct eh_region *i, *outer = NULL; + struct eh_region_d *i, *outer = NULL; bool err = false; int nvisited = 0; int count = 0; diff --git a/gcc/except.h b/gcc/except.h index 9f83a9948f8..b48e3859e5b 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -27,21 +27,21 @@ struct function; struct eh_status; /* Internal structure describing a region. */ -struct eh_region; +struct eh_region_d; /* Test: is exception handling turned on? */ extern int doing_eh (int); /* Note that the current EH region (if any) may contain a throw, or a call to a function which itself may contain a throw. */ -extern void note_eh_region_may_contain_throw (struct eh_region *); +extern void note_eh_region_may_contain_throw (struct eh_region_d *); /* Invokes CALLBACK for every exception handler label. Only used by old loop hackery; should not be used by new code. */ extern void for_each_eh_label (void (*) (rtx)); /* Invokes CALLBACK for every exception region in the current function. */ -extern void for_each_eh_region (void (*) (struct eh_region *)); +extern void for_each_eh_region (void (*) (struct eh_region_d *)); /* Determine if the given INSN can throw an exception. */ extern bool can_throw_internal_1 (int, bool); @@ -86,19 +86,19 @@ extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, extern void sjlj_emit_function_exit_after (rtx); extern void default_init_unwind_resume_libfunc (void); -extern struct eh_region *gen_eh_region_cleanup (struct eh_region *, - struct eh_region *); -extern struct eh_region *gen_eh_region_try (struct eh_region *); -extern struct eh_region *gen_eh_region_catch (struct eh_region *, tree); -extern struct eh_region *gen_eh_region_allowed (struct eh_region *, tree); -extern struct eh_region *gen_eh_region_must_not_throw (struct eh_region *); -extern int get_eh_region_number (struct eh_region *); -extern bool get_eh_region_may_contain_throw (struct eh_region *); -extern tree get_eh_region_tree_label (struct eh_region *); -extern void set_eh_region_tree_label (struct eh_region *, tree); +extern struct eh_region_d *gen_eh_region_cleanup (struct eh_region_d *, + struct eh_region_d *); +extern struct eh_region_d *gen_eh_region_try (struct eh_region_d *); +extern struct eh_region_d *gen_eh_region_catch (struct eh_region_d *, tree); +extern struct eh_region_d *gen_eh_region_allowed (struct eh_region_d *, tree); +extern struct eh_region_d *gen_eh_region_must_not_throw (struct eh_region_d *); +extern int get_eh_region_number (struct eh_region_d *); +extern bool get_eh_region_may_contain_throw (struct eh_region_d *); +extern tree get_eh_region_tree_label (struct eh_region_d *); +extern void set_eh_region_tree_label (struct eh_region_d *, tree); extern void foreach_reachable_handler (int, bool, - void (*) (struct eh_region *, void *), + void (*) (struct eh_region_d *, void *), void *); extern void collect_eh_region_array (void); diff --git a/gcc/expmed.c b/gcc/expmed.c index da0db3b8347..6447170f572 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -208,7 +208,7 @@ init_expmed (void) for (speed = 0; speed < 2; speed++) { crtl->maybe_hot_insn_p = speed; - zero_cost[speed] = rtx_cost (const0_rtx, 0, speed); + zero_cost[speed] = rtx_cost (const0_rtx, SET, speed); for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT); mode != VOIDmode; diff --git a/gcc/expr.c b/gcc/expr.c index 0e8e0eeee5c..2357c3e8913 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -268,7 +268,7 @@ init_expr_target (void) reg = gen_rtx_REG (VOIDmode, -1); insn = rtx_alloc (INSN); - pat = gen_rtx_SET (0, NULL_RTX, NULL_RTX); + pat = gen_rtx_SET (VOIDmode, NULL_RTX, NULL_RTX); PATTERN (insn) = pat; for (mode = VOIDmode; (int) mode < NUM_MACHINE_MODES; @@ -8495,7 +8495,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, || mode != ptr_mode) { expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - subtarget, &op0, &op1, 0); + subtarget, &op0, &op1, EXPAND_NORMAL); if (op0 == const0_rtx) return op1; if (op1 == const0_rtx) @@ -8667,11 +8667,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, if (TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (subexp0, 0)))) expand_operands (TREE_OPERAND (subexp0, 0), TREE_OPERAND (subexp1, 0), - NULL_RTX, &op0, &op1, 0); + NULL_RTX, &op0, &op1, EXPAND_NORMAL); else expand_operands (TREE_OPERAND (subexp0, 0), TREE_OPERAND (subexp1, 0), - NULL_RTX, &op1, &op0, 0); + NULL_RTX, &op1, &op0, EXPAND_NORMAL); goto binop3; } @@ -8748,7 +8748,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, } } expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - subtarget, &op0, &op1, 0); + subtarget, &op0, &op1, EXPAND_NORMAL); return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp)); case TRUNC_DIV_EXPR: @@ -8768,7 +8768,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, then if the divisor is constant can optimize the case where some terms of the dividend have coeffs divisible by it. */ expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - subtarget, &op0, &op1, 0); + subtarget, &op0, &op1, EXPAND_NORMAL); return expand_divmod (0, code, mode, op0, op1, target, unsignedp); case RDIV_EXPR: @@ -8781,7 +8781,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, if (modifier == EXPAND_STACK_PARM) target = 0; expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - subtarget, &op0, &op1, 0); + subtarget, &op0, &op1, EXPAND_NORMAL); return expand_divmod (1, code, mode, op0, op1, target, unsignedp); case FIXED_CONVERT_EXPR: @@ -8858,7 +8858,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, && REGNO (target) < FIRST_PSEUDO_REGISTER)) target = gen_reg_rtx (mode); expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - target, &op0, &op1, 0); + target, &op0, &op1, EXPAND_NORMAL); /* First try to do it with a special MIN or MAX instruction. If that does not win, use a conditional jump to select the proper @@ -9366,7 +9366,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, tree oprnd0 = TREE_OPERAND (exp, 0); tree oprnd1 = TREE_OPERAND (exp, 1); - expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, 0); + expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); target = expand_widen_pattern_expr (exp, op0, NULL_RTX, op1, target, unsignedp); return target; @@ -9387,7 +9387,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, case VEC_EXTRACT_ODD_EXPR: { expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - NULL_RTX, &op0, &op1, 0); + NULL_RTX, &op0, &op1, EXPAND_NORMAL); this_optab = optab_for_tree_code (code, type, optab_default); temp = expand_binop (mode, this_optab, op0, op1, target, unsignedp, OPTAB_WIDEN); @@ -9399,7 +9399,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, case VEC_INTERLEAVE_LOW_EXPR: { expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - NULL_RTX, &op0, &op1, 0); + NULL_RTX, &op0, &op1, EXPAND_NORMAL); this_optab = optab_for_tree_code (code, type, optab_default); temp = expand_binop (mode, this_optab, op0, op1, target, unsignedp, OPTAB_WIDEN); @@ -9447,7 +9447,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, tree oprnd0 = TREE_OPERAND (exp, 0); tree oprnd1 = TREE_OPERAND (exp, 1); - expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, 0); + expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); target = expand_widen_pattern_expr (exp, op0, op1, NULL_RTX, target, unsignedp); gcc_assert (target); @@ -9468,7 +9468,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, /* Here to do an ordinary binary operator. */ binop: expand_operands (TREE_OPERAND (exp, 0), TREE_OPERAND (exp, 1), - subtarget, &op0, &op1, 0); + subtarget, &op0, &op1, EXPAND_NORMAL); binop2: this_optab = optab_for_tree_code (code, type, optab_default); binop3: @@ -9882,7 +9882,7 @@ do_store_flag (tree exp, rtx target, enum machine_mode mode, int only_cheap) || GET_MODE (subtarget) != operand_mode) subtarget = 0; - expand_operands (arg0, arg1, subtarget, &op0, &op1, 0); + expand_operands (arg0, arg1, subtarget, &op0, &op1, EXPAND_NORMAL); if (target == 0) target = gen_reg_rtx (mode); diff --git a/gcc/final.c b/gcc/final.c index 1735a73207d..6f3fe26ffbf 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -801,7 +801,7 @@ struct rtl_opt_pass pass_compute_alignments = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c index d0670e6f061..d63d35ab750 100644 --- a/gcc/fixed-value.c +++ b/gcc/fixed-value.c @@ -784,7 +784,7 @@ bool fixed_compare (int icode, const FIXED_VALUE_TYPE *op0, const FIXED_VALUE_TYPE *op1) { - enum tree_code code = icode; + enum tree_code code = (enum tree_code) icode; gcc_assert (op0->mode == op1->mode); switch (code) diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h index 69db190e8f1..e40c39823d4 100644 --- a/gcc/fixed-value.h +++ b/gcc/fixed-value.h @@ -26,8 +26,8 @@ along with GCC; see the file COPYING3. If not see struct fixed_value GTY(()) { - double_int data; /* Store data up to 2 wide integers. */ - unsigned int mode; /* Use machine mode to know IBIT and FBIT. */ + double_int data; /* Store data up to 2 wide integers. */ + enum machine_mode mode; /* Use machine mode to know IBIT and FBIT. */ }; #define FIXED_VALUE_TYPE struct fixed_value diff --git a/gcc/fold-const.c b/gcc/fold-const.c index e38850fd5df..932bf53974c 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -964,7 +964,7 @@ fold_undefer_overflow_warnings (bool issue, const_gimple stmt, int code) if (fold_deferred_overflow_warning != NULL && code != 0 && code < (int) fold_deferred_overflow_code) - fold_deferred_overflow_code = code; + fold_deferred_overflow_code = (enum warn_strict_overflow_code) code; return; } @@ -2914,7 +2914,7 @@ combine_comparisons (enum tree_code code, enum tree_code lcode, bool honor_nans = HONOR_NANS (TYPE_MODE (TREE_TYPE (ll_arg))); enum comparison_code lcompcode = comparison_to_compcode (lcode); enum comparison_code rcompcode = comparison_to_compcode (rcode); - enum comparison_code compcode; + int compcode; switch (code) { @@ -2980,8 +2980,11 @@ combine_comparisons (enum tree_code code, enum tree_code lcode, else if (compcode == COMPCODE_FALSE) return constant_boolean_node (false, truth_type); else - return fold_build2 (compcode_to_comparison (compcode), - truth_type, ll_arg, lr_arg); + { + enum comparison_code cc = (enum comparison_code) compcode; + return fold_build2 (compcode_to_comparison (cc), + truth_type, ll_arg, lr_arg); + } } /* Return nonzero if two operands (typically of the same tree node) @@ -8277,13 +8280,14 @@ fold_unary (enum tree_code code, tree type, tree op0) /* Not if the conversion is to the sub-type. */ && TREE_TYPE (type) != TREE_TYPE (op0)) { - tree and = op0; - tree and0 = TREE_OPERAND (and, 0), and1 = TREE_OPERAND (and, 1); + tree and_expr = op0; + tree and0 = TREE_OPERAND (and_expr, 0); + tree and1 = TREE_OPERAND (and_expr, 1); int change = 0; - if (TYPE_UNSIGNED (TREE_TYPE (and)) + if (TYPE_UNSIGNED (TREE_TYPE (and_expr)) || (TYPE_PRECISION (type) - <= TYPE_PRECISION (TREE_TYPE (and)))) + <= TYPE_PRECISION (TREE_TYPE (and_expr)))) change = 1; else if (TYPE_PRECISION (TREE_TYPE (and1)) <= HOST_BITS_PER_WIDE_INT diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in index 1600d18b36a..46462796c07 100644 --- a/gcc/fortran/Make-lang.in +++ b/gcc/fortran/Make-lang.in @@ -80,13 +80,13 @@ fortran: f951$(exeext) gfortranspec.o: $(srcdir)/fortran/gfortranspec.c $(SYSTEM_H) $(TM_H) $(GCC_H) \ $(CONFIG_H) coretypes.h intl.h (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ $(INCLUDES) $(srcdir)/fortran/gfortranspec.c) # Create the compiler driver gfortran. GFORTRAN_D_OBJS = $(GCC_OBJS) gfortranspec.o version.o prefix.o intl.o gfortran$(exeext): $(GFORTRAN_D_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(GFORTRAN_D_OBJS) $(EXTRA_GCC_OBJS) $(LIBS) # Create a version of the gfortran driver which calls the cross-compiler. @@ -97,7 +97,7 @@ gfortran-cross$(exeext): gfortran$(exeext) # The compiler itself is called f951. f951$(exeext): $(F95_OBJS) \ $(BACKEND) $(LIBDEPS) attribs.o - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(F95_OBJS) $(BACKEND) $(LIBS) attribs.o $(BACKENDLIBS) gt-fortran-trans.h : s-gtype; @true @@ -337,5 +337,5 @@ fortran/resolve.o: fortran/dependency.h fortran/data.h fortran/target-memory.h fortran/data.o: fortran/data.h fortran/options.o: $(PARAMS_H) $(TARGET_H) fortran/cpp.h fortran/cpp.o: fortran/cpp.c $(BASEVER) incpath.h incpath.o - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) -DBASEVER=$(BASEVER_s) \ + $(CXX) -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) -DBASEVER=$(BASEVER_s) \ $< $(OUTPUT_OPTION) diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c index d45d0c15b78..11b115bfbba 100644 --- a/gcc/fortran/cpp.c +++ b/gcc/fortran/cpp.c @@ -66,7 +66,7 @@ typedef struct gfc_cpp_macro_queue } gfc_cpp_macro_queue; static gfc_cpp_macro_queue *cpp_define_queue, *cpp_undefine_queue; -struct +struct gfc_cpp_option_data { /* Argument of -cpp, implied by SPEC; if NULL, preprocessing disabled. */ diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index f6677fe42e0..67758a9b3b3 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1435,7 +1435,7 @@ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init, gfc_constructor *ctor = c->initializer->value.constructor; bool first = true; - int first_len; + int first_len = 0; has_ts = (c->initializer->ts.cl && c->initializer->ts.cl->length_from_typespec); @@ -2804,7 +2804,7 @@ match_attr_spec (void) locus start, seen_at[NUM_DECL]; int seen[NUM_DECL]; - decl_types d; + int d; const char *attr; match m; gfc_try t; @@ -4516,7 +4516,7 @@ static bool add_global_entry (const char *name, int sub) { gfc_gsymbol *s; - unsigned int type; + enum gfc_symbol_type type; s = gfc_get_gsymbol(name); type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION; @@ -6519,7 +6519,7 @@ gfc_match_derived_decl (void) is the case. Since there is no bounds-checking for Cray Pointees, this will be okay. */ -gfc_try +match gfc_mod_pointee_as (gfc_array_spec *as) { as->cray_pointee = true; /* This will be useful to know later. */ diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index 32c97d06b73..9f313431d66 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -1955,7 +1955,7 @@ show_namespace (gfc_namespace *ns) { gfc_interface *intr; gfc_namespace *save; - gfc_intrinsic_op op; + int op; gfc_equiv *eq; int i; @@ -2005,7 +2005,7 @@ show_namespace (gfc_namespace *ns) show_indent (); fprintf (dumpfile, "Operator interfaces for %s:", - gfc_op2string (op)); + gfc_op2string ((gfc_intrinsic_op) op)); for (; intr; intr = intr->next) fprintf (dumpfile, " %s", intr->sym->name); diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 8795bee3c91..956e5346683 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -922,29 +922,34 @@ enum /* Because a symbol can belong to multiple namelists, they must be linked externally to the symbol itself. */ + +enum omp_sched_kind +{ + OMP_SCHED_NONE, + OMP_SCHED_STATIC, + OMP_SCHED_DYNAMIC, + OMP_SCHED_GUIDED, + OMP_SCHED_RUNTIME, + OMP_SCHED_AUTO +}; + +enum omp_sharing +{ + OMP_DEFAULT_UNKNOWN, + OMP_DEFAULT_NONE, + OMP_DEFAULT_PRIVATE, + OMP_DEFAULT_SHARED, + OMP_DEFAULT_FIRSTPRIVATE +}; + typedef struct gfc_omp_clauses { struct gfc_expr *if_expr; struct gfc_expr *num_threads; gfc_namelist *lists[OMP_LIST_NUM]; - enum - { - OMP_SCHED_NONE, - OMP_SCHED_STATIC, - OMP_SCHED_DYNAMIC, - OMP_SCHED_GUIDED, - OMP_SCHED_RUNTIME, - OMP_SCHED_AUTO - } sched_kind; + enum omp_sched_kind sched_kind; struct gfc_expr *chunk_size; - enum - { - OMP_DEFAULT_UNKNOWN, - OMP_DEFAULT_NONE, - OMP_DEFAULT_PRIVATE, - OMP_DEFAULT_SHARED, - OMP_DEFAULT_FIRSTPRIVATE - } default_sharing; + enum omp_sharing default_sharing; int collapse; bool nowait, ordered, untied; } @@ -1314,6 +1319,12 @@ extern gfc_namespace *gfc_current_ns; this to detect collisions already when parsing. TODO: Extend to verify procedure calls. */ +enum gfc_symbol_type +{ + GSYM_UNKNOWN=1, GSYM_PROGRAM, GSYM_FUNCTION, GSYM_SUBROUTINE, + GSYM_MODULE, GSYM_COMMON, GSYM_BLOCK_DATA +}; + typedef struct gfc_gsymbol { BBT_HEADER(gfc_gsymbol); @@ -1322,8 +1333,7 @@ typedef struct gfc_gsymbol const char *sym_name; const char *mod_name; const char *binding_label; - enum { GSYM_UNKNOWN=1, GSYM_PROGRAM, GSYM_FUNCTION, GSYM_SUBROUTINE, - GSYM_MODULE, GSYM_COMMON, GSYM_BLOCK_DATA } type; + enum gfc_symbol_type type; int defined, used; locus where; @@ -1347,6 +1357,12 @@ extern gfc_interface_info current_interface; /* Array reference. */ + +enum gfc_array_ref_dimen_type +{ + DIMEN_ELEMENT = 1, DIMEN_RANGE, DIMEN_VECTOR, DIMEN_UNKNOWN +}; + typedef struct gfc_array_ref { ar_type type; @@ -1358,9 +1374,7 @@ typedef struct gfc_array_ref struct gfc_expr *start[GFC_MAX_DIMENSIONS], *end[GFC_MAX_DIMENSIONS], *stride[GFC_MAX_DIMENSIONS]; - enum - { DIMEN_ELEMENT = 1, DIMEN_RANGE, DIMEN_VECTOR, DIMEN_UNKNOWN } - dimen_type[GFC_MAX_DIMENSIONS]; + enum gfc_array_ref_dimen_type dimen_type[GFC_MAX_DIMENSIONS]; struct gfc_expr *offset; } @@ -2257,7 +2271,7 @@ gfc_try gfc_add_optional (symbol_attribute *, locus *); gfc_try gfc_add_pointer (symbol_attribute *, locus *); gfc_try gfc_add_cray_pointer (symbol_attribute *, locus *); gfc_try gfc_add_cray_pointee (symbol_attribute *, locus *); -gfc_try gfc_mod_pointee_as (gfc_array_spec *); +match gfc_mod_pointee_as (gfc_array_spec *); gfc_try gfc_add_protected (symbol_attribute *, const char *, locus *); gfc_try gfc_add_result (symbol_attribute *, const char *, locus *); gfc_try gfc_add_save (symbol_attribute *, const char *, locus *); diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 88638070d3c..b0527e20e85 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1276,7 +1276,7 @@ gfc_check_interfaces (gfc_namespace *ns) { gfc_namespace *old_ns, *ns2; char interface_name[100]; - gfc_intrinsic_op i; + int iloop; old_ns = gfc_current_ns; gfc_current_ns = ns; @@ -1285,8 +1285,10 @@ gfc_check_interfaces (gfc_namespace *ns) gfc_traverse_user_op (ns, check_uop_interfaces); - for (i = GFC_INTRINSIC_BEGIN; i != GFC_INTRINSIC_END; i++) + for (iloop = GFC_INTRINSIC_BEGIN; iloop != GFC_INTRINSIC_END; iloop++) { + gfc_intrinsic_op i = (gfc_intrinsic_op) iloop; + if (i == INTRINSIC_USER) continue; diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index d5a9f54a76a..7eb1dfb3be2 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -119,6 +119,16 @@ fixup_t; /* Structure for holding extra info needed for pointers being read. */ +enum rsym_state +{ + UNUSED, NEEDED, USED +}; + +enum wsym_state +{ + UNREFERENCED = 0, NEEDS_WRITE, WRITTEN +}; + typedef struct pointer_info { BBT_HEADER (pointer_info); @@ -138,9 +148,7 @@ typedef struct pointer_info { gfc_symbol *sym; char true_name[GFC_MAX_SYMBOL_LEN + 1], module[GFC_MAX_SYMBOL_LEN + 1]; - enum - { UNUSED, NEEDED, USED } - state; + enum rsym_state state; int ns, referenced, renamed; module_locus where; fixup_t *stfixup; @@ -152,9 +160,7 @@ typedef struct pointer_info struct { gfc_symbol *sym; - enum - { UNREFERENCED = 0, NEEDS_WRITE, WRITTEN } - state; + enum wsym_state state; } wsym; } @@ -2161,7 +2167,7 @@ mio_array_ref (gfc_array_ref *ar) for (i = 0; i < ar->dimen; i++) { require_atom (ATOM_INTEGER); - ar->dimen_type[i] = atom_int; + ar->dimen_type[i] = (enum gfc_array_ref_dimen_type) atom_int; } } @@ -3452,7 +3458,7 @@ mio_symbol (gfc_symbol *sym) else { mio_integer (&intmod); - sym->from_intmod = intmod; + sym->from_intmod = (intmod_id) intmod; } mio_integer (&(sym->intmod_sym_id)); @@ -3996,7 +4002,7 @@ read_module (void) module_locus operator_interfaces, user_operators; const char *p; char name[GFC_MAX_SYMBOL_LEN + 1]; - gfc_intrinsic_op i; + int i; int ambiguous, j, nuse, symbol; pointer_info *info, *q; gfc_use_rename *u; @@ -4204,7 +4210,7 @@ read_module (void) if (only_flag) { - u = find_use_operator (i); + u = find_use_operator ((gfc_intrinsic_op) i); if (u == NULL) { @@ -4656,7 +4662,7 @@ write_symtree (gfc_symtree *st) static void write_module (void) { - gfc_intrinsic_op i; + int i; /* Write the operator interfaces. */ mio_lparen (); @@ -4976,9 +4982,12 @@ import_iso_c_binding_module (void) for (u = gfc_rename_list; u; u = u->next) { - i = get_c_kind (u->use_name, c_interop_kinds_table); + iso_c_binding_symbol is; + + is = (iso_c_binding_symbol) get_c_kind (u->use_name, + c_interop_kinds_table); - if (i == ISOCBINDING_INVALID || i == ISOCBINDING_LAST) + if (is == ISOCBINDING_INVALID || is == ISOCBINDING_LAST) { gfc_error ("Symbol '%s' referenced at %L does not exist in " "intrinsic module ISO_C_BINDING.", u->use_name, @@ -4986,7 +4995,7 @@ import_iso_c_binding_module (void) continue; } - generate_isocbinding_symbol (iso_c_module_name, i, u->local_name); + generate_isocbinding_symbol (iso_c_module_name, is, u->local_name); } } else @@ -5003,7 +5012,9 @@ import_iso_c_binding_module (void) break; } } - generate_isocbinding_symbol (iso_c_module_name, i, local_name); + generate_isocbinding_symbol (iso_c_module_name, + (iso_c_binding_symbol) i, + local_name); } for (u = gfc_rename_list; u; u = u->next) diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 64272e2a51e..dfdc538a01e 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -1572,13 +1572,15 @@ unexpected_statement (gfc_statement st) */ +enum state_order +{ + ORDER_START, ORDER_USE, ORDER_IMPORT, ORDER_IMPLICIT_NONE, + ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC +}; + typedef struct { - enum - { ORDER_START, ORDER_USE, ORDER_IMPORT, ORDER_IMPLICIT_NONE, - ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC - } - state; + enum state_order state; gfc_statement last_statement; locus where; } diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 47f0a7abc8f..6b0ec109208 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1590,7 +1590,7 @@ static void resolve_global_procedure (gfc_symbol *sym, locus *where, int sub) { gfc_gsymbol * gsym; - unsigned int type; + enum gfc_symbol_type type; type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION; @@ -4302,7 +4302,8 @@ check_host_association (gfc_expr *e) gfc_symtree *st; int n; gfc_ref *ref; - gfc_actual_arglist *arg, *tail; + gfc_actual_arglist *arg; + gfc_actual_arglist *tail = NULL; bool retval = e->expr_type == EXPR_FUNCTION; /* If the expression is the result of substitution in diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index ca9d0a3fe53..3a609871493 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -2179,7 +2179,7 @@ gfc_get_namespace (gfc_namespace *parent, int parent_types) { gfc_namespace *ns; gfc_typespec *ts; - gfc_intrinsic_op in; + int in; int i; ns = XCNEW (gfc_namespace); @@ -3034,7 +3034,7 @@ void gfc_free_namespace (gfc_namespace *ns) { gfc_namespace *p, *q; - gfc_intrinsic_op i; + int i; if (ns == NULL) return; diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index c0ffc14b720..4bd711d4845 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -93,9 +93,11 @@ gfc_intrinsic_map_t; except for atan2. */ #define DEFINE_MATH_BUILTIN(ID, NAME, ARGTYPE) \ { GFC_ISYM_ ## ID, BUILT_IN_ ## ID ## F, BUILT_IN_ ## ID, \ - BUILT_IN_ ## ID ## L, BUILT_IN_ ## ID ## L, 0, 0, 0, 0, true, \ - false, true, NAME, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, \ - NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE}, + BUILT_IN_ ## ID ## L, BUILT_IN_ ## ID ## L, (enum built_in_function) 0, \ + (enum built_in_function) 0, (enum built_in_function) 0, \ + (enum built_in_function) 0, true, false, true, NAME, NULL_TREE, \ + NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, \ + NULL_TREE}, #define DEFINE_MATH_BUILTIN_C(ID, NAME, ARGTYPE) \ { GFC_ISYM_ ## ID, BUILT_IN_ ## ID ## F, BUILT_IN_ ## ID, \ @@ -1489,7 +1491,7 @@ gfc_conv_intrinsic_ttynam (gfc_se * se, gfc_expr * expr) /* TODO: Mismatching types can occur when specific names are used. These should be handled during resolution. */ static void -gfc_conv_intrinsic_minmax (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_minmax (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree tmp; tree mvar; @@ -1725,7 +1727,7 @@ gfc_conv_intrinsic_funcall (gfc_se * se, gfc_expr * expr) } */ static void -gfc_conv_intrinsic_anyall (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_anyall (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree resvar; stmtblock_t block; @@ -1880,7 +1882,7 @@ gfc_conv_intrinsic_count (gfc_se * se, gfc_expr * expr) /* Inline implementation of the sum and product intrinsics. */ static void -gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree resvar; tree type; @@ -2107,7 +2109,7 @@ gfc_conv_intrinsic_dot_product (gfc_se * se, gfc_expr * expr) static void -gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, enum tree_code op) { stmtblock_t body; stmtblock_t block; @@ -2311,7 +2313,7 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op) } static void -gfc_conv_intrinsic_minmaxval (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_minmaxval (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree limit; tree type; @@ -2483,7 +2485,7 @@ gfc_conv_intrinsic_btest (gfc_se * se, gfc_expr * expr) /* Generate code to perform the specified operation. */ static void -gfc_conv_intrinsic_bitop (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_bitop (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree args[2]; @@ -2508,7 +2510,7 @@ gfc_conv_intrinsic_singlebitop (gfc_se * se, gfc_expr * expr, int set) tree args[2]; tree type; tree tmp; - int op; + enum tree_code op; gfc_conv_intrinsic_function_args (se, expr, args, 2); type = TREE_TYPE (args[0]); @@ -3583,7 +3585,7 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr) /* Intrinsic string comparison functions. */ static void -gfc_conv_intrinsic_strcmp (gfc_se * se, gfc_expr * expr, int op) +gfc_conv_intrinsic_strcmp (gfc_se * se, gfc_expr * expr, enum tree_code op) { tree args[4]; diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index b5749ec89ac..045c613b957 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -107,7 +107,7 @@ static GTY(()) gfc_st_parameter_field st_parameter_field[] = { #name, mask, IOPARM_ptype_##param_type, IOPARM_type_##type, NULL, NULL }, #include "ioparm.def" #undef IOPARM - { NULL, 0, 0, 0, NULL, NULL } + { NULL, 0, (enum ioparam_type) 0, (enum iofield_type) 0, NULL, NULL } }; /* Library I/O subroutines */ @@ -155,7 +155,7 @@ static stmtblock_t *dt_post_end_block; static void gfc_build_st_parameter (enum ioparam_type ptype, tree *types) { - enum iofield type; + int type; gfc_st_parameter_field *p; char name[64]; size_t len; @@ -281,7 +281,7 @@ gfc_build_io_library_fndecls (void) tree gfc_intio_type_node; tree parm_type, dt_parm_type; HOST_WIDE_INT pad_size; - enum ioparam_type ptype; + int ptype; types[IOPARM_type_int4] = gfc_int4_type_node = gfc_get_int_type (4); types[IOPARM_type_intio] = gfc_intio_type_node @@ -304,7 +304,7 @@ gfc_build_io_library_fndecls (void) TYPE_ALIGN (gfc_get_int_type (gfc_intio_kind))); for (ptype = IOPARM_ptype_common; ptype < IOPARM_ptype_num; ptype++) - gfc_build_st_parameter (ptype, types); + gfc_build_st_parameter ((enum ioparam_type) ptype, types); /* Define the transfer functions. */ diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 717859c5360..47262642ae3 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -252,13 +252,16 @@ void init_c_interop_kinds (void) void gfc_init_kinds (void) { - enum machine_mode mode; + int mode_loop; int i_index, r_index, kind; bool saw_i4 = false, saw_i8 = false; bool saw_r4 = false, saw_r8 = false, saw_r16 = false; - for (i_index = 0, mode = MIN_MODE_INT; mode <= MAX_MODE_INT; mode++) + for (i_index = 0, mode_loop = MIN_MODE_INT; + mode_loop <= MAX_MODE_INT; + mode_loop++) { + enum machine_mode mode = (enum machine_mode) mode_loop; int kind, bitsize; if (!targetm.scalar_mode_supported_p (mode)) @@ -307,8 +310,11 @@ gfc_init_kinds (void) /* Set the maximum integer kind. Used with at least BOZ constants. */ gfc_max_integer_kind = gfc_integer_kinds[i_index - 1].kind; - for (r_index = 0, mode = MIN_MODE_FLOAT; mode <= MAX_MODE_FLOAT; mode++) + for (r_index = 0, mode_loop = MIN_MODE_FLOAT; + mode_loop <= MAX_MODE_FLOAT; + mode_loop++) { + enum machine_mode mode = (enum machine_mode) mode_loop; const struct real_format *fmt = REAL_MODE_FORMAT (mode); int kind; diff --git a/gcc/function.c b/gcc/function.c index e8d99015e4d..2ffcda47121 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1813,7 +1813,7 @@ struct rtl_opt_pass pass_instantiate_virtual_regs = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -4223,7 +4223,7 @@ struct rtl_opt_pass pass_init_function = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -5397,7 +5397,7 @@ struct rtl_opt_pass pass_leaf_regs = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -5632,7 +5632,7 @@ struct rtl_opt_pass pass_match_asm_constraints = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/function.h b/gcc/function.h index 31d223a3d39..35ffb1df469 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -137,7 +137,7 @@ struct expr_status GTY(()) rtx x_forced_labels; }; -typedef struct call_site_record *call_site_record; +typedef struct call_site_record_d *call_site_record; DEF_VEC_P(call_site_record); DEF_VEC_ALLOC_P(call_site_record, gc); @@ -175,12 +175,12 @@ struct rtl_eh GTY(()) struct gimple_df; struct temp_slot; typedef struct temp_slot *temp_slot_p; -struct call_site_record; +struct call_site_record_d; DEF_VEC_P(temp_slot_p); DEF_VEC_ALLOC_P(temp_slot_p,gc); -struct ipa_opt_pass; -typedef struct ipa_opt_pass *ipa_opt_pass; +struct ipa_opt_pass_d; +typedef struct ipa_opt_pass_d *ipa_opt_pass; DEF_VEC_P(ipa_opt_pass); DEF_VEC_ALLOC_P(ipa_opt_pass,heap); diff --git a/gcc/fwprop.c b/gcc/fwprop.c index 2f78cd49f82..7f68f8efdff 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -694,7 +694,7 @@ update_df (rtx insn, rtx *loc, df_ref *use_rec, enum df_ref_type type, df_ref orig_use = use, new_use; int width = -1; int offset = -1; - enum machine_mode mode = 0; + enum machine_mode mode = VOIDmode; rtx *new_loc = find_occurrence (loc, DF_REF_REG (orig_use)); use_rec++; diff --git a/gcc/gcc.c b/gcc/gcc.c index ee953660e5c..673dd778c37 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -3606,10 +3606,11 @@ process_command (int argc, const char **argv) } /* Convert new-style -- options to old-style. */ - translate_options (&argc, (const char *const **) &argv); + translate_options (&argc, CONST_CAST (const char *const **, &argv)); /* Do language-specific adjustment/addition of flags. */ - lang_specific_driver (&argc, (const char *const **) &argv, &added_libraries); + lang_specific_driver (&argc, CONST_CAST (const char *const **, &argv), + &added_libraries); /* Scan argv twice. Here, the first time, just count how many switches there will be in their vector, and how many input files in theirs. @@ -6337,7 +6338,7 @@ main (int argc, char **argv) Make a table of specified input files (infiles, n_infiles). Decode switches that are handled locally. */ - process_command (argc, (const char **) argv); + process_command (argc, CONST_CAST (const char **, argv)); /* Initialize the vector of specs to just the default. This means one element containing 0s, as a terminator. */ diff --git a/gcc/gcov.c b/gcc/gcov.c index 61ac7ed6974..cd70dbee2b8 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -1091,7 +1091,6 @@ read_count_file (void) ; else if (gcov_read_unsigned () != fn->checksum) { - mismatch:; fnotice (stderr, "%s:profile mismatch for '%s'\n", da_file_name, fn->name); goto cleanup; @@ -1100,7 +1099,11 @@ read_count_file (void) else if (tag == GCOV_TAG_FOR_COUNTER (GCOV_COUNTER_ARCS) && fn) { if (length != GCOV_TAG_COUNTER_LENGTH (fn->num_counts)) - goto mismatch; + { + fnotice (stderr, "%s:profile mismatch for '%s'\n", + da_file_name, fn->name); + goto cleanup; + } if (!fn->counts) fn->counts = XCNEWVEC (gcov_type, fn->num_counts); diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index 794a8db1bb1..564909c5286 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -1637,6 +1637,9 @@ write_length_unit_log (void) for (length_unit_log = 0; length_or & 1; length_or >>= 1) length_unit_log++; } + puts ("#ifdef __cplusplus"); + puts ("extern"); + puts ("#endif"); printf ("const int length_unit_log = %u;\n", length_unit_log); } diff --git a/gcc/genautomata.c b/gcc/genautomata.c index d314b8f221c..793bcb4bb17 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -1789,7 +1789,7 @@ insert_automaton_decl (decl_t automaton_decl) { void **entry_ptr; - entry_ptr = htab_find_slot (automaton_decl_table, automaton_decl, 1); + entry_ptr = htab_find_slot (automaton_decl_table, automaton_decl, INSERT); if (*entry_ptr == NULL) *entry_ptr = (void *) automaton_decl; return (decl_t) *entry_ptr; @@ -1888,7 +1888,7 @@ insert_insn_decl (decl_t insn_decl) { void **entry_ptr; - entry_ptr = htab_find_slot (insn_decl_table, insn_decl, 1); + entry_ptr = htab_find_slot (insn_decl_table, insn_decl, INSERT); if (*entry_ptr == NULL) *entry_ptr = (void *) insn_decl; return (decl_t) *entry_ptr; @@ -1989,7 +1989,7 @@ insert_decl (decl_t decl) { void **entry_ptr; - entry_ptr = htab_find_slot (decl_table, decl, 1); + entry_ptr = htab_find_slot (decl_table, decl, INSERT); if (*entry_ptr == NULL) *entry_ptr = (void *) decl; return (decl_t) *entry_ptr; @@ -3722,7 +3722,7 @@ insert_state (state_t state) { void **entry_ptr; - entry_ptr = htab_find_slot (state_table, (void *) state, 1); + entry_ptr = htab_find_slot (state_table, (void *) state, INSERT); if (*entry_ptr == NULL) *entry_ptr = (void *) state; return (state_t) *entry_ptr; @@ -4078,7 +4078,7 @@ automata_list_finish (void) if (current_automata_list == NULL) return NULL; entry_ptr = htab_find_slot (automata_list_table, - (void *) current_automata_list, 1); + (void *) current_automata_list, INSERT); if (*entry_ptr == NULL) *entry_ptr = (void *) current_automata_list; else diff --git a/gcc/genchecksum.c b/gcc/genchecksum.c index ebcd34a29d3..bf9965be8de 100644 --- a/gcc/genchecksum.c +++ b/gcc/genchecksum.c @@ -56,6 +56,9 @@ dosum (const char *file) exit (1); } + puts ("#ifdef __cplusplus"); + puts ("extern"); + puts ("#endif"); fputs ("const unsigned char executable_checksum[16] = { ", stdout); for (i = 0; i < 16; i++) printf ("%#02x%s", result[i], i == 15 ? " };\n" : ", "); diff --git a/gcc/gengtype.c b/gcc/gengtype.c index 02923a952d9..fa9604aeaf8 100644 --- a/gcc/gengtype.c +++ b/gcc/gengtype.c @@ -964,6 +964,9 @@ write_rtx_next (void) int i; oprintf (f, "\n/* Used to implement the RTX_NEXT macro. */\n"); + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const unsigned char rtx_next[NUM_RTX_CODE] = {\n"); for (i = 0; i < NUM_RTX_CODE; i++) if (rtx_next_new[i] == -1) @@ -3026,9 +3029,14 @@ finish_root_table (struct flist *flp, const char *pfx, const char *lastname, { size_t fnum; for (fnum = 0; fnum < num_lang_dirs; fnum++) - oprintf (base_files [fnum], - "const struct %s * const %s[] = {\n", - tname, name); + { + oprintf (base_files[fnum], "#ifdef __cplusplus\n"); + oprintf (base_files[fnum], "extern\n"); + oprintf (base_files[fnum], "#endif\n"); + oprintf (base_files [fnum], + "const struct %s * const %s[] = {\n", + tname, name); + } } @@ -3358,6 +3366,9 @@ write_roots (pair_p variables) { fli->started_p = 1; + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const struct ggc_root_tab gt_ggc_r_"); put_mangled_filename (f, v->line.file); oprintf (f, "[] = {\n"); @@ -3392,6 +3403,9 @@ write_roots (pair_p variables) { fli->started_p = 1; + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const struct ggc_root_tab gt_ggc_rd_"); put_mangled_filename (f, v->line.file); oprintf (f, "[] = {\n"); @@ -3436,6 +3450,9 @@ write_roots (pair_p variables) { fli->started_p = 1; + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const struct ggc_cache_tab gt_ggc_rc_"); put_mangled_filename (f, v->line.file); oprintf (f, "[] = {\n"); @@ -3472,6 +3489,9 @@ write_roots (pair_p variables) { fli->started_p = 1; + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const struct ggc_root_tab gt_pch_rc_"); put_mangled_filename (f, v->line.file); oprintf (f, "[] = {\n"); @@ -3508,6 +3528,9 @@ write_roots (pair_p variables) { fli->started_p = 1; + oprintf (f, "#ifdef __cplusplus\n"); + oprintf (f, "extern\n"); + oprintf (f, "#endif\n"); oprintf (f, "const struct ggc_root_tab gt_pch_rs_"); put_mangled_filename (f, v->line.file); oprintf (f, "[] = {\n"); diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 01177c6de8f..62d421d39c6 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -378,7 +378,7 @@ process_define_predicate (rtx desc) for (i = 0; i < NUM_RTX_CODE; i++) if (codes[i] != N) - add_predicate_code (pred, i); + add_predicate_code (pred, (enum rtx_code) i); add_predicate (pred); } diff --git a/gcc/gensupport.c b/gcc/gensupport.c index 0851596585b..119a126eef4 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -1401,7 +1401,7 @@ init_predicate_table (void) if (std_preds[i].allows_const_p) for (j = 0; j < NUM_RTX_CODE; j++) if (GET_RTX_CLASS (j) == RTX_CONST_OBJ) - add_predicate_code (pred, j); + add_predicate_code (pred, (enum rtx_code) j); add_predicate (pred); } diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index 0afe0d815dd..2f13144eda2 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -2063,12 +2063,14 @@ ggc_print_statistics (void) #endif } +struct ggc_pch_ondisk +{ + unsigned totals[NUM_ORDERS]; +}; + struct ggc_pch_data { - struct ggc_pch_ondisk - { - unsigned totals[NUM_ORDERS]; - } d; + struct ggc_pch_ondisk d; size_t base[NUM_ORDERS]; size_t written[NUM_ORDERS]; }; @@ -2158,7 +2160,7 @@ ggc_pch_write_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED, size_t size, bool is_string ATTRIBUTE_UNUSED) { unsigned order; - static const char emptyBytes[256]; + static const char emptyBytes[256] = { 0 }; if (size < NUM_SIZE_LOOKUP) order = size_lookup[size]; diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index fecc667f6b9..117c7b0c502 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -209,7 +209,7 @@ struct gimple_opt_pass pass_lower_cf = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ PROP_gimple_lcf, /* properties_provided */ 0, /* properties_destroyed */ @@ -829,7 +829,7 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi) /* Build 'goto CONT_LABEL' and insert. */ g = gimple_build_goto (cont_label); - gsi_insert_before (gsi, g, TSI_SAME_STMT); + gsi_insert_before (gsi, g, GSI_SAME_STMT); /* Build 'NEXT_LABEL:' and insert. */ g = gimple_build_label (next_label); @@ -950,7 +950,7 @@ struct gimple_opt_pass pass_mark_used_blocks = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/gimple.c b/gcc/gimple.c index 90de9b3ebc5..7641dc5da28 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -45,6 +45,9 @@ const char *const gimple_code_name[] = { operands vector the size of the structure minus the size of the 1 element tree array at the end (see gimple_ops). */ #define DEFGSCODE(SYM, NAME, STRUCT) (sizeof (STRUCT) - sizeof (tree)), +#ifdef __cplusplus +extern +#endif const size_t gimple_ops_offset_[] = { #include "gimple.def" }; @@ -271,7 +274,7 @@ gimple_build_with_ops_stat (enum gimple_code code, enum tree_code subcode, gimple gimple_build_return (tree retval) { - gimple s = gimple_build_with_ops (GIMPLE_RETURN, 0, 1); + gimple s = gimple_build_with_ops (GIMPLE_RETURN, ERROR_MARK, 1); if (retval) gimple_return_set_retval (s, retval); return s; @@ -284,7 +287,7 @@ gimple_build_return (tree retval) static inline gimple gimple_build_call_1 (tree fn, unsigned nargs) { - gimple s = gimple_build_with_ops (GIMPLE_CALL, 0, nargs + 3); + gimple s = gimple_build_with_ops (GIMPLE_CALL, ERROR_MARK, nargs + 3); if (TREE_CODE (fn) == FUNCTION_DECL) fn = build_fold_addr_expr (fn); gimple_set_op (s, 1, fn); @@ -451,7 +454,7 @@ gimple_build_assign_with_ops_stat (enum tree_code subcode, tree lhs, tree op1, This function returns the newly created GIMPLE_ASSIGN tuple. */ -inline gimple +gimple gimplify_assign (tree dst, tree src, gimple_seq *seq_p) { tree t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src); @@ -544,7 +547,7 @@ gimple_cond_set_condition_from_tree (gimple stmt, tree cond) gimple gimple_build_label (tree label) { - gimple p = gimple_build_with_ops (GIMPLE_LABEL, 0, 1); + gimple p = gimple_build_with_ops (GIMPLE_LABEL, ERROR_MARK, 1); gimple_label_set_label (p, label); return p; } @@ -554,7 +557,7 @@ gimple_build_label (tree label) gimple gimple_build_goto (tree dest) { - gimple p = gimple_build_with_ops (GIMPLE_GOTO, 0, 1); + gimple p = gimple_build_with_ops (GIMPLE_GOTO, ERROR_MARK, 1); gimple_goto_set_dest (p, dest); return p; } @@ -600,7 +603,8 @@ gimple_build_asm_1 (const char *string, unsigned ninputs, unsigned noutputs, gimple p; int size = strlen (string); - p = gimple_build_with_ops (GIMPLE_ASM, 0, ninputs + noutputs + nclobbers); + p = gimple_build_with_ops (GIMPLE_ASM, ERROR_MARK, + ninputs + noutputs + nclobbers); p->gimple_asm.ni = ninputs; p->gimple_asm.no = noutputs; @@ -776,7 +780,7 @@ static inline gimple gimple_build_switch_1 (unsigned nlabels, tree index, tree default_label) { /* nlabels + 1 default label + 1 index. */ - gimple p = gimple_build_with_ops (GIMPLE_SWITCH, 0, nlabels + 1 + 1); + gimple p = gimple_build_with_ops (GIMPLE_SWITCH, ERROR_MARK, nlabels + 1 + 1); gimple_switch_set_index (p, index); gimple_switch_set_default_label (p, default_label); return p; @@ -1046,7 +1050,7 @@ gimple_build_omp_single (gimple_seq body, tree clauses) gimple gimple_build_cdt (tree type, tree ptr) { - gimple p = gimple_build_with_ops (GIMPLE_CHANGE_DYNAMIC_TYPE, 0, 2); + gimple p = gimple_build_with_ops (GIMPLE_CHANGE_DYNAMIC_TYPE, ERROR_MARK, 2); gimple_cdt_set_new_type (p, type); gimple_cdt_set_location (p, ptr); @@ -1117,6 +1121,41 @@ gimple_check_failed (const_gimple gs, const char *file, int line, : "", function, trim_filename (file), line); } + +/* Similar to gimple_check_failed, except that instead of specifying a + dozen codes, use the knowledge that they're all sequential. */ + +void +gimple_range_check_failed (const_gimple gs, const char *file, int line, + const char *function, enum gimple_code c1, + enum gimple_code c2) +{ + char *buffer; + unsigned length = 0; + int c; + + for (c = c1; c <= c2; ++c) + length += 4 + strlen (gimple_code_name[c]); + + length += strlen ("expected "); + buffer = XALLOCAVAR (char, length); + length = 0; + + for (c = c1; c <= c2; ++c) + { + const char *prefix = length ? " or " : "expected "; + + strcpy (buffer + length, prefix); + length += strlen (prefix); + strcpy (buffer + length, gimple_code_name[c]); + length += strlen (gimple_code_name[c]); + } + + internal_error ("gimple check: %s, have %s in %s, at %s:%d", + buffer, gimple_code_name[gimple_code (gs)], + function, trim_filename (file), line); +} + #endif /* ENABLE_GIMPLE_CHECKING */ diff --git a/gcc/gimple.h b/gcc/gimple.h index df9bccdc3cd..b485c703c67 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -65,7 +65,7 @@ extern void gimple_check_failed (const_gimple, const char *, int, \ const_gimple __gs = (GS); \ if (gimple_code (__gs) != (CODE)) \ gimple_check_failed (__gs, __FILE__, __LINE__, __FUNCTION__, \ - (CODE), 0); \ + (CODE), ERROR_MARK); \ } while (0) #else /* not ENABLE_GIMPLE_CHECKING */ #define GIMPLE_CHECK(GS, CODE) (void)0 @@ -972,7 +972,7 @@ struct gimplify_ctx }; extern enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *, - bool (*) (tree), fallback_t); + bool (*) (tree), int); extern void gimplify_type_sizes (tree, gimple_seq *); extern void gimplify_one_sizepos (tree *, gimple_seq *); extern bool gimplify_stmt (tree *, gimple_seq *); @@ -2245,7 +2245,7 @@ static inline enum tree_code gimple_cond_code (const_gimple gs) { GIMPLE_CHECK (gs, GIMPLE_COND); - return gs->gsbase.subcode; + return (enum tree_code) gs->gsbase.subcode; } diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 8ed42636642..89e0f60e658 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1942,7 +1942,7 @@ gimplify_var_or_parm_decl (tree *expr_p) static enum gimplify_status gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, - fallback_t fallback) + int fallback) { tree *p; VEC(tree,heap) *stack; @@ -2819,7 +2819,7 @@ generic_expr_could_trap_p (tree expr) *EXPR_P should be stored. */ static enum gimplify_status -gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, fallback_t fallback) +gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, int fallback) { tree expr = *expr_p; tree tmp, type, arm1, arm2; @@ -5790,7 +5790,7 @@ static enum gimplify_status gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) { tree for_stmt, decl, var, t; - enum gimplify_status ret = GS_OK; + enum gimplify_status ret = GS_ALL_DONE; gimple gfor; gimple_seq for_body, for_pre_body; int i; @@ -5812,6 +5812,8 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) == TREE_VEC_LENGTH (OMP_FOR_INCR (for_stmt))); for (i = 0; i < TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)); i++) { + enum gimplify_status gs; + t = TREE_VEC_ELT (OMP_FOR_INIT (for_stmt), i); gcc_assert (TREE_CODE (t) == MODIFY_EXPR); decl = TREE_OPERAND (t, 0); @@ -5840,8 +5842,9 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) else var = decl; - ret |= gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, - is_gimple_val, fb_rvalue); + gs = gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, + is_gimple_val, fb_rvalue); + ret = MIN (ret, gs); if (ret == GS_ERROR) return ret; @@ -5850,8 +5853,9 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) gcc_assert (COMPARISON_CLASS_P (t)); gcc_assert (TREE_OPERAND (t, 0) == decl); - ret |= gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, - is_gimple_val, fb_rvalue); + gs = gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, + is_gimple_val, fb_rvalue); + ret = MIN (ret, gs); /* Handle OMP_FOR_INCR. */ t = TREE_VEC_ELT (OMP_FOR_INCR (for_stmt), i); @@ -5898,8 +5902,9 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) gcc_unreachable (); } - ret |= gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, - is_gimple_val, fb_rvalue); + gs = gimplify_expr (&TREE_OPERAND (t, 1), &for_pre_body, NULL, + is_gimple_val, fb_rvalue); + ret = MIN (ret, gs); break; default: @@ -6190,7 +6195,7 @@ gimplify_omp_atomic (tree *expr_p, gimple_seq *pre_p) enum gimplify_status gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, - bool (*gimple_test_f) (tree), fallback_t fallback) + bool (*gimple_test_f) (tree), int fallback) { tree tmp; gimple_seq internal_pre = NULL; @@ -6288,7 +6293,8 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, } /* Do any language-specific gimplification. */ - ret = lang_hooks.gimplify_expr (expr_p, pre_p, post_p); + ret = ((enum gimplify_status) + lang_hooks.gimplify_expr (expr_p, pre_p, post_p)); if (ret == GS_OK) { if (*expr_p == NULL_TREE) diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 09dc233c253..88d2492e453 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1897,7 +1897,7 @@ reemit_notes (rtx insn) { if (REG_NOTE_KIND (note) == REG_SAVE_NOTE) { - enum insn_note note_type = INTVAL (XEXP (note, 0)); + enum insn_note note_type = (enum insn_note) INTVAL (XEXP (note, 0)); last = emit_note_before (note_type, last); remove_note (insn, note); @@ -2131,7 +2131,8 @@ max_issue (struct ready_list *ready, int privileged_n, state_t state, { n = privileged_n; /* Try to find issued privileged insn. */ - while (n && !ready_try[--n]); + while (n && !ready_try[--n]) + ; } if (/* If all insns are equally good... */ @@ -3906,12 +3907,10 @@ sched_create_recovery_edges (basic_block first_bb, basic_block rec, /* Rewritten from cfgrtl.c. */ if (flag_reorder_blocks_and_partition && targetm.have_named_sections) - /* We don't need the same note for the check because - any_condjump_p (check) == true. */ { - REG_NOTES (jump) = gen_rtx_EXPR_LIST (REG_CROSSING_JUMP, - NULL_RTX, - REG_NOTES (jump)); + /* We don't need the same note for the check because + any_condjump_p (check) == true. */ + add_reg_note (jump, REG_CROSSING_JUMP, NULL_RTX); } edge_flags = EDGE_CROSSING; } @@ -4723,8 +4722,6 @@ check_cfg (rtx head, rtx tail) #endif /* ENABLE_CHECKING */ -const struct sched_scan_info_def *sched_scan_info; - /* Extend per basic block data structures. */ static void extend_bb (void) diff --git a/gcc/hooks.c b/gcc/hooks.c index 78e0ad22177..2be0df9152d 100644 --- a/gcc/hooks.c +++ b/gcc/hooks.c @@ -49,13 +49,6 @@ hook_bool_void_true (void) return true; } -/* Generic hook that takes no arguments and returns NO_REGS. */ -int -hook_int_void_no_regs (void) -{ - return NO_REGS; -} - /* Generic hook that takes (bool) and returns false. */ bool hook_bool_bool_false (bool a ATTRIBUTE_UNUSED) diff --git a/gcc/hooks.h b/gcc/hooks.h index b47a6d980af..1228da93728 100644 --- a/gcc/hooks.h +++ b/gcc/hooks.h @@ -62,7 +62,6 @@ extern int hook_int_const_tree_const_tree_1 (const_tree, const_tree); extern int hook_int_rtx_0 (rtx); extern int hook_int_rtx_bool_0 (rtx, bool); extern int hook_int_size_t_constcharptr_int_0 (size_t, const char *, int); -extern int hook_int_void_no_regs (void); extern tree hook_tree_tree_tree_null (tree, tree); extern tree hook_tree_tree_tree_tree_null (tree, tree, tree); diff --git a/gcc/init-regs.c b/gcc/init-regs.c index 791b9266bec..c6ad17bcfbe 100644 --- a/gcc/init-regs.c +++ b/gcc/init-regs.c @@ -148,7 +148,7 @@ struct rtl_opt_pass pass_initialize_regs = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/integrate.c b/gcc/integrate.c index 1fc0737c822..0a2416f2b1f 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -308,7 +308,7 @@ struct rtl_opt_pass pass_initial_value_sets = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index f6864bb43fa..3f326bce1da 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -1368,7 +1368,7 @@ cgraph_gate_cp (void) return flag_ipa_cp; } -struct ipa_opt_pass pass_ipa_cp = +struct ipa_opt_pass_d pass_ipa_cp = { { IPA_PASS, diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index d725f219a5c..9fb2bb817df 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1750,7 +1750,7 @@ inline_transform (struct cgraph_node *node) return todo | execute_fixup_cfg (); } -struct ipa_opt_pass pass_ipa_inline = +struct ipa_opt_pass_d pass_ipa_inline = { { IPA_PASS, diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index c8db7d2bcd6..b2cbd0fae57 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -891,7 +891,7 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs, /* We must check range due to calls with variable number of arguments: */ if (dst->value.formal_id >= (unsigned) ipa_get_cs_argument_count (top)) { - dst->type = IPA_BOTTOM; + dst->type = IPA_UNKNOWN; continue; } diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index f21638f383e..1b16940a41e 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -910,7 +910,7 @@ gate_pure_const (void) && !(errorcount || sorrycount)); } -struct ipa_opt_pass pass_ipa_pure_const = +struct ipa_opt_pass_d pass_ipa_pure_const = { { IPA_PASS, diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index a9afd457a73..5f9fe8800ba 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -1257,7 +1257,7 @@ gate_reference (void) && !(errorcount || sorrycount)); } -struct ipa_opt_pass pass_ipa_reference = +struct ipa_opt_pass_d pass_ipa_reference = { { IPA_PASS, diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c index ab70c98e9b9..99299fc584f 100644 --- a/gcc/ipa-struct-reorg.c +++ b/gcc/ipa-struct-reorg.c @@ -1261,7 +1261,8 @@ create_general_new_stmt (struct access_site *acc, tree new_type) if (is_gimple_assign (new_stmt)) { lhs = gimple_assign_lhs (new_stmt); - + rhs = NULL_TREE; + if (TREE_CODE (lhs) == SSA_NAME) lhs = SSA_NAME_VAR (lhs); if (gimple_assign_rhs_code (new_stmt) == SSA_NAME) diff --git a/gcc/ira-build.c b/gcc/ira-build.c index eb1cdf5b17b..9e1f6bfa185 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -2275,14 +2275,14 @@ setup_min_max_conflict_allocno_ids (void) ira_allocno_t a; live_range_min = (int *) ira_allocate (sizeof (int) * ira_allocnos_num); - cover_class = -1; + cover_class = LIM_REG_CLASSES; first_not_finished = -1; for (i = 0; i < ira_allocnos_num; i++) { a = ira_conflict_id_allocno_map[i]; if (a == NULL) continue; - if (cover_class < 0 + if (cover_class == LIM_REG_CLASSES || (flag_ira_algorithm != IRA_ALGORITHM_PRIORITY && cover_class != (int) ALLOCNO_COVER_CLASS (a))) { @@ -2311,14 +2311,14 @@ setup_min_max_conflict_allocno_ids (void) ALLOCNO_MIN (a) = min; } last_lived = (int *) ira_allocate (sizeof (int) * ira_max_point); - cover_class = -1; + cover_class = LIM_REG_CLASSES; filled_area_start = -1; for (i = ira_allocnos_num - 1; i >= 0; i--) { a = ira_conflict_id_allocno_map[i]; if (a == NULL) continue; - if (cover_class < 0 + if (cover_class == LIM_REG_CLASSES || (flag_ira_algorithm != IRA_ALGORITHM_PRIORITY && cover_class != (int) ALLOCNO_COVER_CLASS (a))) { @@ -2394,7 +2394,8 @@ static ira_allocno_t *regno_top_level_allocno_map; static bool copy_info_to_removed_store_destinations (int regno) { - ira_allocno_t a, parent_a; + ira_allocno_t a; + ira_allocno_t parent_a = NULL; ira_loop_tree_node_t parent; allocno_live_range_t r; bool merged_p; diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 397affd4b1f..c10dca0d608 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -686,7 +686,8 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, rclass = cost_classes[k]; if (TEST_HARD_REG_BIT (reg_class_contents[rclass], regno) && (reg_class_size[rclass] - == (unsigned) CLASS_MAX_NREGS (rclass, mode))) + == (unsigned) CLASS_MAX_NREGS ((enum reg_class) rclass, + mode))) { if (reg_class_size[rclass] == 1) op_costs[i]->cost[k] = -frequency; diff --git a/gcc/ira.c b/gcc/ira.c index 3742f0f35c1..8118988e76e 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -504,7 +504,7 @@ static void setup_class_subset_and_memory_move_costs (void) { int cl, cl2; - enum machine_mode mode; + int mode; HARD_REG_SET temp_hard_regset2; for (mode = 0; mode < MAX_MACHINE_MODE; mode++) @@ -515,8 +515,12 @@ setup_class_subset_and_memory_move_costs (void) if (cl != (int) NO_REGS) for (mode = 0; mode < MAX_MACHINE_MODE; mode++) { - ira_memory_move_cost[mode][cl][0] = MEMORY_MOVE_COST (mode, cl, 0); - ira_memory_move_cost[mode][cl][1] = MEMORY_MOVE_COST (mode, cl, 1); + ira_memory_move_cost[mode][cl][0] = + MEMORY_MOVE_COST ((enum machine_mode) mode, + (enum reg_class) cl, 0); + ira_memory_move_cost[mode][cl][1] = + MEMORY_MOVE_COST ((enum machine_mode) mode, + (enum reg_class) cl, 1); /* Costs for NO_REGS are used in cost calculation on the 1st pass when the preferred register classes are not known yet. In this case we take the best scenario. */ @@ -727,7 +731,7 @@ setup_cover_and_important_classes (void) { int i, j, n; bool set_p, eq_p; - enum reg_class cl; + int cl; const enum reg_class *cover_classes; HARD_REG_SET temp_hard_regset2; static enum reg_class classes[LIM_REG_CLASSES + 1]; @@ -741,7 +745,7 @@ setup_cover_and_important_classes (void) else { for (i = 0; (cl = cover_classes[i]) != LIM_REG_CLASSES; i++) - classes[i] = cl; + classes[i] = (enum reg_class) cl; classes[i] = LIM_REG_CLASSES; } @@ -776,7 +780,7 @@ setup_cover_and_important_classes (void) break; } if (j >= i) - classes[n++] = i; + classes[n++] = (enum reg_class) i; } classes[n] = LIM_REG_CLASSES; } @@ -786,12 +790,13 @@ setup_cover_and_important_classes (void) { for (j = 0; j < i; j++) if (flag_ira_algorithm != IRA_ALGORITHM_PRIORITY - && reg_classes_intersect_p (cl, classes[j])) + && reg_classes_intersect_p ((enum reg_class) cl, classes[j])) gcc_unreachable (); COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl]); AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs); if (! hard_reg_set_empty_p (temp_hard_regset)) - ira_reg_class_cover[ira_reg_class_cover_size++] = cl; + ira_reg_class_cover[ira_reg_class_cover_size++] = + (enum reg_class) cl; } ira_important_classes_num = 0; for (cl = 0; cl < N_REG_CLASSES; cl++) @@ -824,7 +829,8 @@ setup_cover_and_important_classes (void) if (set_p && ! eq_p) { ira_important_class_nums[cl] = ira_important_classes_num; - ira_important_classes[ira_important_classes_num++] = cl; + ira_important_classes[ira_important_classes_num++] = + (enum reg_class) cl; } } } @@ -839,8 +845,8 @@ enum reg_class ira_class_translate[N_REG_CLASSES]; static void setup_class_translate (void) { - enum reg_class cl, cover_class, best_class, *cl_ptr; - enum machine_mode mode; + int cl, mode; + enum reg_class cover_class, best_class, *cl_ptr; int i, cost, min_cost, best_cost; for (cl = 0; cl < N_REG_CLASSES; cl++) @@ -981,8 +987,9 @@ setup_reg_class_relations (void) if (cl3 == LIM_REG_CLASSES) break; if (reg_class_subset_p (ira_reg_class_intersect[cl1][cl2], - cl3)) - ira_reg_class_intersect[cl1][cl2] = cl3; + (enum reg_class) cl3)) + ira_reg_class_intersect[cl1][cl2] = + (enum reg_class) cl3; } ira_reg_class_union[cl1][cl2] = reg_class_subunion[cl1][cl2]; continue; @@ -1134,13 +1141,14 @@ static void setup_reg_class_nregs (void) { int m; - enum reg_class cl; + int cl; ira_max_nregs = -1; for (cl = 0; cl < N_REG_CLASSES; cl++) for (m = 0; m < MAX_MACHINE_MODE; m++) { - ira_reg_class_nregs[cl][m] = CLASS_MAX_NREGS (cl, m); + ira_reg_class_nregs[cl][m] = CLASS_MAX_NREGS ((enum reg_class) cl, + (enum machine_mode) m); if (ira_max_nregs < ira_reg_class_nregs[cl][m]) ira_max_nregs = ira_reg_class_nregs[cl][m]; } @@ -1169,7 +1177,7 @@ setup_prohibited_class_mode_regs (void) for (k = ira_class_hard_regs_num[cl] - 1; k >= 0; k--) { hard_regno = ira_class_hard_regs[cl][k]; - if (! HARD_REGNO_MODE_OK (hard_regno, j)) + if (! HARD_REGNO_MODE_OK (hard_regno, (enum machine_mode) j)) SET_HARD_REG_BIT (prohibited_class_mode_regs[cl][j], hard_regno); } @@ -1223,7 +1231,7 @@ ira_init_register_move_cost (enum machine_mode mode) void ira_init_once (void) { - enum machine_mode mode; + int mode; for (mode = 0; mode < MAX_MACHINE_MODE; mode++) { @@ -1239,7 +1247,7 @@ ira_init_once (void) static void free_register_move_costs (void) { - enum machine_mode mode; + int mode; for (mode = 0; mode < MAX_MACHINE_MODE; mode++) { @@ -1306,12 +1314,12 @@ setup_prohibited_mode_move_regs (void) SET_HARD_REG_SET (ira_prohibited_mode_move_regs[i]); for (j = 0; j < FIRST_PSEUDO_REGISTER; j++) { - if (! HARD_REGNO_MODE_OK (j, i)) + if (! HARD_REGNO_MODE_OK (j, (enum machine_mode) i)) continue; SET_REGNO (test_reg1, j); - PUT_MODE (test_reg1, i); + PUT_MODE (test_reg1, (enum machine_mode) i); SET_REGNO (test_reg2, j); - PUT_MODE (test_reg2, i); + PUT_MODE (test_reg2, (enum machine_mode) i); INSN_CODE (move_insn) = -1; recog_memoized (move_insn); if (INSN_CODE (move_insn) < 0) @@ -3320,7 +3328,7 @@ struct rtl_opt_pass pass_ira = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/java/ChangeLog.cxx b/gcc/java/ChangeLog.cxx new file mode 100644 index 00000000000..764adbd84ca --- /dev/null +++ b/gcc/java/ChangeLog.cxx @@ -0,0 +1,33 @@ +2008-07-04 Tom Tromey <tromey@redhat.com> + + * mangle.c (emit_compression_string): Insert newline. + * builtins.c (java_builtins): Cast initializers. + * Make-lang.in (jvspec.o): Use ALL_CXXFLAGS. + ($(GCJ)$(exeext)): Likewise. + (jc1$(exeext)): Likewise. + (jcf-dump$(exeext)): Likewise. + (jvgenmain$(exeext)): Likewise. + (java/jcf-io.o): Likewise. + (java/jcf-path.o): Likewise. + +2008-07-03 Tom Tromey <tromey@redhat.com> + + * verify.h: Don't use 'extern "C"'. + * jcf-parse.c (handle_constant): Cast to cpool_tag. + * verify-impl.c (check_class_constant): Initialize with void_type, + not 0. + (check_constant): Likewise. + (check_wide_constant): Likewise. + (verify_instructions_0) <op_newarray>: Cast 'atype' to type_val. + * Make-lang.in (jvspec.o): Use $(CXX). + ($(GCJ)$(exeext)): Likewise. + (jc1$(exeext)): Likewise. + (jcf-dump$(exeext)): Likewise. + (jvgenmain$(exeext)): Likewise. + (java/jcf-io.o): Likewise. + (java/jcf-path.o): Likewise. + +Local Variables: +mode: change-log +change-log-default-name: "ChangeLog.cxx" +End: diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in index 605f7e3434c..ab7d8b7a793 100644 --- a/gcc/java/Make-lang.in +++ b/gcc/java/Make-lang.in @@ -59,13 +59,13 @@ JAVA_TARGET_INDEPENDENT_BIN_TOOLS = jcf-dump jvspec.o: $(srcdir)/java/jvspec.c $(SYSTEM_H) coretypes.h $(TM_H) \ $(GCC_H) $(CONFIG_H) java/jcf.h java/javaop.h (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ + $(CXX) -x c++ -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ $(INCLUDES) $(srcdir)/java/jvspec.c $(OUTPUT_OPTION)) # Create the compiler driver for $(GCJ). $(GCJ)$(exeext): $(GCC_OBJS) jvspec.o java/jcf-path.o version.o \ prefix.o intl.o $(LIBDEPS) $(EXTRA_GCC_OBJS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) jvspec.o \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) jvspec.o \ java/jcf-path.o prefix.o intl.o \ version.o $(EXTRA_GCC_OBJS) $(LIBS) @@ -100,17 +100,17 @@ jvspec.o-warn = -Wno-error jc1$(exeext): $(JAVA_OBJS) $(BACKEND) $(LIBDEPS) attribs.o rm -f $@ - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(JAVA_OBJS) $(BACKEND) $(ZLIB) $(LIBICONV) $(LIBS) attribs.o $(BACKENDLIBS) jcf-dump$(exeext): $(JCFDUMP_OBJS) $(LIBDEPS) rm -f $@ - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JCFDUMP_OBJS) \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(JCFDUMP_OBJS) \ $(CPPLIBS) $(ZLIB) $(LDEXP_LIB) $(LIBS) jvgenmain$(exeext): $(JVGENMAIN_OBJS) $(LIBDEPS) rm -f $@ - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JVGENMAIN_OBJS) $(LIBS) + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ $(JVGENMAIN_OBJS) $(LIBS) # # Build hooks: @@ -305,13 +305,13 @@ java/java-gimplify.o: java/java-gimplify.c $(CONFIG_H) $(SYSTEM_H) \ # jcf-io.o needs $(ZLIBINC) added to cflags. java/jcf-io.o: java/jcf-io.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(JAVA_TREE_H) java/zipfile.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ZLIBINC) \ - $(srcdir)/java/jcf-io.c $(OUTPUT_OPTION) + $(CXX) -x c++ -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) \ + $(INCLUDES) $(ZLIBINC) $(srcdir)/java/jcf-io.c $(OUTPUT_OPTION) # jcf-path.o needs a -D. java/jcf-path.o: java/jcf-path.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ java/jcf.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(CXX) -xc++ -c $(ALL_CXXFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DLIBGCJ_ZIP_FILE='"$(datadir)/java/libgcj-$(version).jar"' \ -DDEFAULT_TARGET_VERSION=\"$(version)\" \ $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c index c9f9f4a2a79..7e8cac44cf0 100644 --- a/gcc/java/builtins.c +++ b/gcc/java/builtins.c @@ -82,9 +82,9 @@ struct builtin_record GTY(()) static GTY(()) struct builtin_record java_builtins[] = { - { { "java.lang.Math" }, { "min" }, min_builtin, 0 }, - { { "java.lang.Math" }, { "max" }, max_builtin, 0 }, - { { "java.lang.Math" }, { "abs" }, abs_builtin, 0 }, + { { "java.lang.Math" }, { "min" }, min_builtin, (built_in_function) 0 }, + { { "java.lang.Math" }, { "max" }, max_builtin, (built_in_function) 0 }, + { { "java.lang.Math" }, { "abs" }, abs_builtin, (built_in_function) 0 }, { { "java.lang.Math" }, { "acos" }, NULL, BUILT_IN_ACOS }, { { "java.lang.Math" }, { "asin" }, NULL, BUILT_IN_ASIN }, { { "java.lang.Math" }, { "atan" }, NULL, BUILT_IN_ATAN }, @@ -98,31 +98,48 @@ static GTY(()) struct builtin_record java_builtins[] = { { "java.lang.Math" }, { "sin" }, NULL, BUILT_IN_SIN }, { { "java.lang.Math" }, { "sqrt" }, NULL, BUILT_IN_SQRT }, { { "java.lang.Math" }, { "tan" }, NULL, BUILT_IN_TAN }, - { { "java.lang.Float" }, { "intBitsToFloat" }, convert_real, 0 }, - { { "java.lang.Double" }, { "longBitsToDouble" }, convert_real, 0 }, - { { "java.lang.Float" }, { "floatToRawIntBits" }, convert_real, 0 }, - { { "java.lang.Double" }, { "doubleToRawLongBits" }, convert_real, 0 }, - { { "sun.misc.Unsafe" }, { "putInt" }, putObject_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putLong" }, putObject_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putObject" }, putObject_builtin, 0}, + { { "java.lang.Float" }, { "intBitsToFloat" }, convert_real, + (built_in_function) 0 }, + { { "java.lang.Double" }, { "longBitsToDouble" }, convert_real, + (built_in_function) 0 }, + { { "java.lang.Float" }, { "floatToRawIntBits" }, convert_real, + (built_in_function) 0 }, + { { "java.lang.Double" }, { "doubleToRawLongBits" }, convert_real, + (built_in_function) 0 }, + { { "sun.misc.Unsafe" }, { "putInt" }, + putObject_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putLong" }, + putObject_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putObject" }, + putObject_builtin, (built_in_function) 0}, { { "sun.misc.Unsafe" }, { "compareAndSwapInt" }, - compareAndSwapInt_builtin, 0}, + compareAndSwapInt_builtin, (built_in_function) 0}, { { "sun.misc.Unsafe" }, { "compareAndSwapLong" }, - compareAndSwapLong_builtin, 0}, + compareAndSwapLong_builtin, (built_in_function) 0}, { { "sun.misc.Unsafe" }, { "compareAndSwapObject" }, - compareAndSwapObject_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putOrderedInt" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putOrderedLong" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putOrderedObject" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putIntVolatile" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putLongVolatile" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "putObjectVolatile" }, putVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "getObjectVolatile" }, getVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "getIntVolatile" }, getVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "getLongVolatile" }, getVolatile_builtin, 0}, - { { "sun.misc.Unsafe" }, { "getLong" }, getVolatile_builtin, 0}, + compareAndSwapObject_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putOrderedInt" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putOrderedLong" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putOrderedObject" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putIntVolatile" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putLongVolatile" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "putObjectVolatile" }, + putVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "getObjectVolatile" }, + getVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "getIntVolatile" }, + getVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "getLongVolatile" }, + getVolatile_builtin, (built_in_function) 0}, + { { "sun.misc.Unsafe" }, { "getLong" }, + getVolatile_builtin, (built_in_function) 0}, { { "java.util.concurrent.atomic.AtomicLong" }, { "VMSupportsCS8" }, - VMSupportsCS8_builtin, 0}, + VMSupportsCS8_builtin, (built_in_function) 0}, { { NULL }, { NULL }, NULL, END_BUILTINS } }; diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c index b968214e509..e50b6a6f656 100644 --- a/gcc/java/jcf-io.c +++ b/gcc/java/jcf-io.c @@ -399,9 +399,8 @@ find_class (const char *classname, int classname_length, JCF *jcf) /* Remember that this class could not be found so that we do not have to look again. */ - *(const void **)htab_find_slot_with_hash (memoized_class_lookups, - classname, hash, INSERT) - = classname; + *htab_find_slot_with_hash (memoized_class_lookups, classname, hash, INSERT) + = CONST_CAST (char *, classname); return NULL; found: diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index 42b53c824d7..f5d7c24af5f 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -507,7 +507,7 @@ handle_constant (JCF *jcf, int index, enum cpool_tag purpose) if (! CPOOL_INDEX_IN_RANGE (&jcf->cpool, index)) error ("<constant pool index %d not in range>", index); - kind = JPOOL_TAG (jcf, index); + kind = (cpool_tag) JPOOL_TAG (jcf, index); if ((kind & ~CONSTANT_ResolvedFlag) != purpose) { diff --git a/gcc/java/mangle.c b/gcc/java/mangle.c index 61594d9b5ed..7132946ff16 100644 --- a/gcc/java/mangle.c +++ b/gcc/java/mangle.c @@ -702,7 +702,8 @@ emit_compression_string (int i) unsigned HOST_WIDE_INT n; unsigned HOST_WIDE_INT m=1; /* How many digits for I in base 36? */ - for (n = i; n >= 36; n /= 36, m *=36); + for (n = i; n >= 36; n /= 36, m *=36) + ; /* Write the digits out */ while (m > 0) { diff --git a/gcc/java/verify-impl.c b/gcc/java/verify-impl.c index 2e69359913c..65db1c805c7 100644 --- a/gcc/java/verify-impl.c +++ b/gcc/java/verify-impl.c @@ -1947,7 +1947,7 @@ check_pool_index (int index) static type check_class_constant (int index) { - type t = { 0, 0, 0 }; + type t = { void_type, 0, 0 }; vfy_constants *pool; check_pool_index (index); @@ -1964,7 +1964,7 @@ check_class_constant (int index) static type check_constant (int index) { - type t = { 0, 0, 0 }; + type t = { void_type, 0, 0 }; vfy_constants *pool; check_pool_index (index); @@ -1988,7 +1988,7 @@ check_constant (int index) static type check_wide_constant (int index) { - type t = { 0, 0, 0 }; + type t = { void_type, 0, 0 }; vfy_constants *pool; check_pool_index (index); @@ -3031,7 +3031,7 @@ verify_instructions_0 (void) if (atype < boolean_type || atype > long_type) verify_fail_pc ("type not primitive", vfr->start_PC); pop_type (int_type); - init_type_from_class (&t, construct_primitive_array_type (atype)); + init_type_from_class (&t, construct_primitive_array_type ((type_val) atype)); push_type_t (t); } break; diff --git a/gcc/java/verify.h b/gcc/java/verify.h index 21fe67254fb..809ce9f2403 100644 --- a/gcc/java/verify.h +++ b/gcc/java/verify.h @@ -1,5 +1,5 @@ /* Declarations to interface gcj with bytecode verifier. - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of GCC. @@ -26,11 +26,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #ifndef GCC_VERIFY_H #define GCC_VERIFY_H -#ifdef __cplusplus -extern "C" -{ -#endif - #include "system.h" #include "coretypes.h" #include "jcf.h" @@ -155,8 +150,4 @@ typedef enum int verify_method (vfy_method *meth); -#ifdef __cplusplus -} -#endif - #endif /* ! GCC_VERIFY_H */ diff --git a/gcc/jump.c b/gcc/jump.c index 2b9a9545223..9296a9897a7 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -132,7 +132,7 @@ struct rtl_opt_pass pass_cleanup_barriers = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/langhooks.c b/gcc/langhooks.c index cdf1b6a7623..7a9d56a03af 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -546,9 +546,8 @@ add_builtin_function_common (const char *name, DECL_EXTERNAL (decl) = 1; DECL_BUILT_IN_CLASS (decl) = cl; - DECL_FUNCTION_CODE (decl) = -1; - gcc_assert (DECL_FUNCTION_CODE (decl) >= function_code); - DECL_FUNCTION_CODE (decl) = function_code; + DECL_FUNCTION_CODE (decl) = (enum built_in_function) function_code; + gcc_assert (DECL_FUNCTION_CODE (decl) == function_code); if (library_name) { diff --git a/gcc/lists.c b/gcc/lists.c index 0cfc8609650..44069f1d345 100644 --- a/gcc/lists.c +++ b/gcc/lists.c @@ -140,7 +140,7 @@ alloc_EXPR_LIST (int kind, rtx val, rtx next) PUT_REG_NOTE_KIND (r, kind); } else - r = gen_rtx_EXPR_LIST (kind, val, next); + r = gen_rtx_EXPR_LIST ((enum machine_mode) kind, val, next); return r; } diff --git a/gcc/machmode.h b/gcc/machmode.h index 7d50b466397..17d8b02bc0a 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -41,7 +41,7 @@ enum mode_class { MODE_CLASSES, MAX_MODE_CLASS }; (integer, floating, complex, etc.) */ extern const unsigned char mode_class[NUM_MACHINE_MODES]; -#define GET_MODE_CLASS(MODE) mode_class[MODE] +#define GET_MODE_CLASS(MODE) ((enum mode_class) mode_class[MODE]) /* Nonzero if MODE is an integral mode. */ #define INTEGRAL_MODE_P(MODE) \ @@ -219,10 +219,10 @@ extern const unsigned char mode_nunits[NUM_MACHINE_MODES]; /* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI). */ extern const unsigned char mode_wider[NUM_MACHINE_MODES]; -#define GET_MODE_WIDER_MODE(MODE) mode_wider[MODE] +#define GET_MODE_WIDER_MODE(MODE) ((enum machine_mode) mode_wider[MODE]) extern const unsigned char mode_2xwider[NUM_MACHINE_MODES]; -#define GET_MODE_2XWIDER_MODE(MODE) mode_2xwider[MODE] +#define GET_MODE_2XWIDER_MODE(MODE) ((enum machine_mode) mode_2xwider[MODE]) /* Return the mode for data of a given size SIZE and mode class CLASS. If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE. @@ -257,7 +257,8 @@ extern unsigned get_mode_alignment (enum machine_mode); /* For each class, get the narrowest mode in that class. */ extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS]; -#define GET_CLASS_NARROWEST_MODE(CLASS) class_narrowest_mode[CLASS] +#define GET_CLASS_NARROWEST_MODE(CLASS) \ + ((enum machine_mode) class_narrowest_mode[CLASS]) /* Define the integer modes whose sizes are BITS_PER_UNIT and BITS_PER_WORD and the mode whose class is Pmode and whose size is POINTER_SIZE. */ diff --git a/gcc/main.c b/gcc/main.c index fc5a4db567f..6c772e701b4 100644 --- a/gcc/main.c +++ b/gcc/main.c @@ -32,5 +32,5 @@ int main (int argc, char **argv); int main (int argc, char **argv) { - return toplev_main (argc, (const char **) argv); + return toplev_main (argc, CONST_CAST (const char **, argv)); } diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c index d916f70266c..8f4280b5b02 100644 --- a/gcc/matrix-reorg.c +++ b/gcc/matrix-reorg.c @@ -245,6 +245,13 @@ typedef struct access_site_info *access_site_info_p; DEF_VEC_P (access_site_info_p); DEF_VEC_ALLOC_P (access_site_info_p, heap); +/* See 'free_stmts' in struct matrix_info. */ +struct free_info +{ + gimple stmt; + tree func; +}; + /* Information about matrix to flatten. */ struct matrix_info { @@ -277,11 +284,7 @@ struct matrix_info tree allocation_function_decl; /* The calls to free for each level of indirection. */ - struct free_info - { - gimple stmt; - tree func; - } *free_stmts; + struct free_info *free_stmts; /* An array which holds for each dimension its size. where dimension 0 is the outer most (one that contains all the others). @@ -735,7 +738,8 @@ add_allocation_site (struct matrix_info *mi, gimple stmt, int level) must be set accordingly. */ for (min_malloc_level = 0; min_malloc_level < mi->max_malloced_level - && mi->malloc_for_level[min_malloc_level]; min_malloc_level++); + && mi->malloc_for_level[min_malloc_level]; min_malloc_level++) + ; if (level < min_malloc_level) { mi->allocation_function_decl = current_function_decl; @@ -2419,7 +2423,7 @@ struct simple_ipa_opt_pass pass_ipa_matrix_reorg = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ PROP_trees, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/mcf.c b/gcc/mcf.c index 9d3d7691910..899b5437968 100644 --- a/gcc/mcf.c +++ b/gcc/mcf.c @@ -388,8 +388,9 @@ add_edge (fixup_graph_type *fixup_graph, int src, int dest, gcov_type cost) MAX_CAPACITY to the edge_list in the fixup graph. */ static void -add_fixup_edge (fixup_graph_type *fixup_graph, int src, int dest, int type, - gcov_type weight, gcov_type cost, gcov_type max_capacity) +add_fixup_edge (fixup_graph_type *fixup_graph, int src, int dest, + edge_type type, gcov_type weight, gcov_type cost, + gcov_type max_capacity) { fixup_edge_p curr_edge = add_edge(fixup_graph, src, dest, cost); curr_edge->type = type; diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in index 4f854ea78ae..4af67c2231e 100644 --- a/gcc/objc/Make-lang.in +++ b/gcc/objc/Make-lang.in @@ -52,7 +52,7 @@ OBJC_OBJS = objc/objc-lang.o objc/objc-act.o objc_OBJS = $(OBJC_OBJS) cc1obj-checksum.o cc1obj-dummy$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o \ $(BACKEND) $(LIBS) $(BACKENDLIBS) @@ -62,7 +62,7 @@ cc1obj-checksum.c : cc1obj-dummy$(exeext) build/genchecksum$(build_exeext) cc1obj-checksum.o : cc1obj-checksum.c cc1obj$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o $(BACKEND) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ + $(CXX) $(ALL_CXXFLAGS) $(LDFLAGS) -o $@ \ $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o \ $(BACKEND) $(LIBS) $(BACKENDLIBS) diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index c23fb9ecba2..79c6f3b0e8d 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -9509,7 +9509,7 @@ objc_rewrite_function_call (tree function, tree params) a function in OBJ_TYPE_REF_EXPR (presumably objc_msgSend or one of its cousins). */ -enum gimplify_status +int objc_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) { enum gimplify_status r0, r1; diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 13b32fe6d51..b8c34fe1ff4 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -31,7 +31,7 @@ bool objc_init (void); const char *objc_printable_name (tree, int); void objc_finish_file (void); tree objc_fold_obj_type_ref (tree, tree); -enum gimplify_status objc_gimplify_expr (tree *, gimple_seq *, gimple_seq *); +int objc_gimplify_expr (tree *, gimple_seq *, gimple_seq *); /* NB: The remaining public functions are prototyped in c-common.h, for the benefit of stub-objc.c and objc-act.c. */ diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c index 75cc6f29bc9..925d2bbab45 100644 --- a/gcc/objcp/objcp-lang.c +++ b/gcc/objcp/objcp-lang.c @@ -58,7 +58,7 @@ const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; there should be very few (if any) routines below. */ tree -objcp_tsubst_copy_and_build (tree t, tree args, tsubst_flags_t complain, +objcp_tsubst_copy_and_build (tree t, tree args, int complain, tree in_decl, bool function_p ATTRIBUTE_UNUSED) { #define RECURSE(NODE) \ diff --git a/gcc/omega.c b/gcc/omega.c index 8f0470f6dfd..8a3d9c98874 100644 --- a/gcc/omega.c +++ b/gcc/omega.c @@ -1306,7 +1306,7 @@ verify_omega_pb (omega_pb pb) enum omega_result result; int e; bool any_color = false; - omega_pb tmp_problem = XNEW (struct omega_pb); + omega_pb tmp_problem = XNEW (struct omega_pb_d); omega_copy_problem (tmp_problem, pb); tmp_problem->safe_vars = 0; @@ -2287,7 +2287,7 @@ omega_eliminate_redundant (omega_pb pb, bool expensive) if (!expensive) goto eliminate_redundant_done; - tmp_problem = XNEW (struct omega_pb); + tmp_problem = XNEW (struct omega_pb_d); conservative++; for (e = pb->num_geqs - 1; e >= 0; e--) @@ -2649,7 +2649,7 @@ omega_eliminate_red (omega_pb pb, bool eliminate_all) return; conservative++; - tmp_problem = XNEW (struct omega_pb); + tmp_problem = XNEW (struct omega_pb_d); for (e = pb->num_geqs - 1; e >= 0; e--) if (pb->geqs[e].color == omega_red) @@ -3049,7 +3049,8 @@ omega_do_elimination (omega_pb pb, int e, int i) eqn->coef[j] *= a; k = eqn->coef[i]; eqn->coef[i] = 0; - eqn->color |= sub->color; + if (sub->color == omega_red) + eqn->color = omega_red; for (j = n_vars; j >= 0; j--) eqn->coef[j] -= sub->coef[j] * k / c; } @@ -3491,7 +3492,7 @@ parallel_splinter (omega_pb pb, int e, int diff, omega_print_problem (dump_file, pb); } - tmp_problem = XNEW (struct omega_pb); + tmp_problem = XNEW (struct omega_pb_d); omega_copy_eqn (&pb->eqs[0], &pb->geqs[e], pb->num_vars); pb->num_eqs = 1; @@ -5499,7 +5500,7 @@ omega_alloc_problem (int nvars, int nprot) omega_initialize (); /* Allocate and initialize PB. */ - pb = XCNEW (struct omega_pb); + pb = XCNEW (struct omega_pb_d); pb->var = XCNEWVEC (int, OMEGA_MAX_VARS + 2); pb->forwarding_address = XCNEWVEC (int, OMEGA_MAX_VARS + 2); pb->geqs = omega_alloc_eqns (0, OMEGA_MAX_GEQS); diff --git a/gcc/omega.h b/gcc/omega.h index b97bfc50f21..ed39212d55f 100644 --- a/gcc/omega.h +++ b/gcc/omega.h @@ -5,7 +5,7 @@ This code has no license restrictions, and is considered public domain. - Changes copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. + Changes copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Contributed by Sebastian Pop <sebastian.pop@inria.fr> This file is part of GCC. @@ -58,7 +58,7 @@ enum omega_eqn_color { }; /* Structure for equations. */ -typedef struct eqn +typedef struct eqn_d { int key; int touched; @@ -72,7 +72,7 @@ typedef struct eqn int *coef; } *eqn; -typedef struct omega_pb +typedef struct omega_pb_d { /* The number of variables in the system of equations. */ int num_vars; @@ -215,7 +215,7 @@ static inline eqn omega_alloc_eqns (int s, int n) { int i; - eqn res = (eqn) (xcalloc (n, sizeof (struct eqn))); + eqn res = (eqn) (xcalloc (n, sizeof (struct eqn_d))); for (i = n - 1; i >= 0; i--) { diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 0a9e59b69a1..602f805ef98 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -4542,7 +4542,9 @@ expand_omp_for (struct omp_region *region) next_ix += BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT - BUILT_IN_GOMP_LOOP_STATIC_NEXT; } - expand_omp_for_generic (region, &fd, start_ix, next_ix); + expand_omp_for_generic (region, &fd, + (enum built_in_function) start_ix, + (enum built_in_function) next_ix); } update_ssa (TODO_update_ssa_only_virtuals); @@ -5449,7 +5451,7 @@ struct gimple_opt_pass pass_expand_omp = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ PROP_gimple_lomp, /* properties_provided */ 0, /* properties_destroyed */ @@ -6614,7 +6616,7 @@ struct gimple_opt_pass pass_lower_omp = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ PROP_gimple_lomp, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/optabs.c b/gcc/optabs.c index f7e44db48c2..f27f8b6a538 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -54,26 +54,26 @@ along with GCC; see the file COPYING3. If not see See expr.h for documentation of these optabs. */ -#if GCC_VERSION >= 4000 -__extension__ struct optab optab_table[OTI_MAX] +#if GCC_VERSION >= 4000 && HAVE_DESIGNATED_INITIALIZERS +__extension__ struct optab_d optab_table[OTI_MAX] = { [0 ... OTI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1].insn_code = CODE_FOR_nothing }; #else /* init_insn_codes will do runtime initialization otherwise. */ -struct optab optab_table[OTI_MAX]; +struct optab_d optab_table[OTI_MAX]; #endif rtx libfunc_table[LTI_MAX]; /* Tables of patterns for converting one mode to another. */ -#if GCC_VERSION >= 4000 -__extension__ struct convert_optab convert_optab_table[COI_MAX] +#if GCC_VERSION >= 4000 && HAVE_DESIGNATED_INITIALIZERS +__extension__ struct convert_optab_d convert_optab_table[COI_MAX] = { [0 ... COI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1] [0 ... NUM_MACHINE_MODES - 1].insn_code = CODE_FOR_nothing }; #else /* init_convert_optab will do runtime initialization otherwise. */ -struct convert_optab convert_optab_table[COI_MAX]; +struct convert_optab_d convert_optab_table[COI_MAX]; #endif /* Contains the optab used for each rtx code. */ @@ -556,10 +556,10 @@ expand_widen_pattern_expr (tree exp, rtx op0, rtx op1, rtx wide_op, rtx target, int unsignedp) { tree oprnd0, oprnd1, oprnd2; - enum machine_mode wmode = 0, tmode0, tmode1 = 0; + enum machine_mode wmode = VOIDmode, tmode0, tmode1 = VOIDmode; optab widen_pattern_optab; int icode; - enum machine_mode xmode0, xmode1 = 0, wxmode = 0; + enum machine_mode xmode0, xmode1 = VOIDmode, wxmode = VOIDmode; rtx temp; rtx pat; rtx xop0, xop1, wxop; @@ -823,7 +823,7 @@ expand_vec_shift_expr (tree vec_shift_expr, rtx target) gcc_unreachable (); } - icode = (int) optab_handler (shift_optab, mode)->insn_code; + icode = optab_handler (shift_optab, mode)->insn_code; gcc_assert (icode != CODE_FOR_nothing); mode1 = insn_data[icode].operand[1].mode; @@ -2270,7 +2270,7 @@ sign_expand_binop (enum machine_mode mode, optab uoptab, optab soptab, { rtx temp; optab direct_optab = unsignedp ? uoptab : soptab; - struct optab wide_soptab; + struct optab_d wide_soptab; /* Do it without widening, if possible. */ temp = expand_binop (mode, direct_optab, op0, op1, target, @@ -4241,7 +4241,7 @@ emit_cmp_and_jump_insn_1 (rtx x, rtx y, enum machine_mode mode, } /* Handle some compares against zero. */ - icode = (int) optab_handler (tst_optab, wider_mode)->insn_code; + icode = optab_handler (tst_optab, wider_mode)->insn_code; if (y == CONST0_RTX (mode) && icode != CODE_FOR_nothing) { x = prepare_operand (icode, x, 0, mode, wider_mode, unsignedp); @@ -4253,7 +4253,7 @@ emit_cmp_and_jump_insn_1 (rtx x, rtx y, enum machine_mode mode, /* Handle compares for which there is a directly suitable insn. */ - icode = (int) optab_handler (cmp_optab, wider_mode)->insn_code; + icode = optab_handler (cmp_optab, wider_mode)->insn_code; if (icode != CODE_FOR_nothing) { x = prepare_operand (icode, x, 0, mode, wider_mode, unsignedp); @@ -6169,7 +6169,7 @@ init_optabs (void) vcondu_gen_code[i] = CODE_FOR_nothing; } -#if GCC_VERSION >= 4000 +#if GCC_VERSION >= 4000 && HAVE_DESIGNATED_INITIALIZERS /* We statically initialize the insn_codes with CODE_FOR_nothing. */ if (reinit) init_insn_codes (); @@ -6676,7 +6676,7 @@ debug_optab_libfuncs (void) rtx l; o = &optab_table[i]; - l = optab_libfunc (o, j); + l = optab_libfunc (o, (enum machine_mode) j); if (l) { gcc_assert (GET_CODE (l) == SYMBOL_REF); @@ -6696,7 +6696,8 @@ debug_optab_libfuncs (void) rtx l; o = &convert_optab_table[i]; - l = convert_optab_libfunc (o, j, k); + l = convert_optab_libfunc (o, (enum machine_mode) j, + (enum machine_mode) k); if (l) { gcc_assert (GET_CODE (l) == SYMBOL_REF); diff --git a/gcc/optabs.h b/gcc/optabs.h index 4d0ce5245ea..5caa15fa21f 100644 --- a/gcc/optabs.h +++ b/gcc/optabs.h @@ -44,29 +44,29 @@ struct optab_handlers enum insn_code insn_code; }; -struct optab +struct optab_d { enum rtx_code code; const char *libcall_basename; char libcall_suffix; - void (*libcall_gen)(struct optab *, const char *name, char suffix, enum machine_mode); + void (*libcall_gen)(struct optab_d *, const char *name, char suffix, enum machine_mode); struct optab_handlers handlers[NUM_MACHINE_MODES]; }; -typedef struct optab * optab; +typedef struct optab_d * optab; /* A convert_optab is for some sort of conversion operation between modes. The first array index is the destination mode, the second is the source mode. */ -struct convert_optab +struct convert_optab_d { enum rtx_code code; const char *libcall_basename; - void (*libcall_gen)(struct convert_optab *, const char *name, + void (*libcall_gen)(struct convert_optab_d *, const char *name, enum machine_mode, enum machine_mode); struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; }; -typedef struct convert_optab *convert_optab; +typedef struct convert_optab_d *convert_optab; /* Given an enum insn_code, access the function to construct the body of that kind of insn. */ @@ -372,7 +372,7 @@ enum optab_index OTI_MAX }; -extern struct optab optab_table[OTI_MAX]; +extern struct optab_d optab_table[OTI_MAX]; #define ssadd_optab (&optab_table[OTI_ssadd]) #define usadd_optab (&optab_table[OTI_usadd]) @@ -573,7 +573,7 @@ enum convert_optab_index COI_MAX }; -extern struct convert_optab convert_optab_table[COI_MAX]; +extern struct convert_optab_d convert_optab_table[COI_MAX]; #define sext_optab (&convert_optab_table[COI_sext]) #define zext_optab (&convert_optab_table[COI_zext]) diff --git a/gcc/opts.c b/gcc/opts.c index 90f34df1dec..d8536ef7ed9 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -2220,15 +2220,17 @@ set_debug_level (enum debug_info_type type, int extended, const char *arg) if (*arg == '\0') { if (!debug_info_level) - debug_info_level = 2; + debug_info_level = DINFO_LEVEL_NORMAL; } else { - debug_info_level = integral_argument (arg); - if (debug_info_level == (unsigned int) -1) + int argval = integral_argument (arg); + if (argval == -1) error ("unrecognised debug output level \"%s\"", arg); - else if (debug_info_level > 3) + else if (argval > 3) error ("debug output level %s is too high", arg); + else + debug_info_level = (enum debug_info_level) argval; } } @@ -2314,7 +2316,7 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask) } else { - int kind = value ? DK_ERROR : DK_WARNING; + diagnostic_t kind = value ? DK_ERROR : DK_WARNING; diagnostic_classify_diagnostic (global_dc, option_index, kind); /* -Werror=foo implies -Wfoo. */ diff --git a/gcc/passes.c b/gcc/passes.c index 4358b8202e6..8348772d1f6 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -239,7 +239,7 @@ rest_of_type_compilation (tree type, int toplev) void finish_optimization_passes (void) { - enum tree_dump_index i; + int i; struct dump_file_info *dfi; char *name; @@ -319,7 +319,7 @@ struct rtl_opt_pass pass_postreload = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_rtl, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1146,14 +1146,14 @@ update_properties_after_pass (void *data) static void add_ipa_transform_pass (void *data) { - struct ipa_opt_pass *ipa_pass = (struct ipa_opt_pass *) data; + struct ipa_opt_pass_d *ipa_pass = (struct ipa_opt_pass_d *) data; VEC_safe_push (ipa_opt_pass, heap, cfun->ipa_transforms_to_apply, ipa_pass); } /* Execute summary generation for all of the passes in IPA_PASS. */ static void -execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass) +execute_ipa_summary_passes (struct ipa_opt_pass_d *ipa_pass) { while (ipa_pass) { @@ -1167,7 +1167,7 @@ execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass) ipa_pass->generate_summary (); pass_fini_dump_file (pass); } - ipa_pass = (struct ipa_opt_pass *)ipa_pass->pass.next; + ipa_pass = (struct ipa_opt_pass_d *)ipa_pass->pass.next; } } @@ -1175,7 +1175,7 @@ execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass) static void execute_one_ipa_transform_pass (struct cgraph_node *node, - struct ipa_opt_pass *ipa_pass) + struct ipa_opt_pass_d *ipa_pass) { struct opt_pass *pass = &ipa_pass->pass; unsigned int todo_after = 0; @@ -1193,16 +1193,14 @@ execute_one_ipa_transform_pass (struct cgraph_node *node, /* Run pre-pass verification. */ execute_todo (ipa_pass->function_transform_todo_flags_start); - /* If a timevar is present, start it. */ - if (pass->tv_id) - timevar_push (pass->tv_id); + /* Start the timevar. */ + timevar_push (pass->tv_id); /* Do it! */ todo_after = ipa_pass->function_transform (node); /* Stop timevar. */ - if (pass->tv_id) - timevar_pop (pass->tv_id); + timevar_pop (pass->tv_id); /* Run post-pass cleanup and verification. */ execute_todo (todo_after); @@ -1267,9 +1265,8 @@ execute_one_pass (struct opt_pass *pass) initializing_dump = pass_init_dump_file (pass); - /* If a timevar is present, start it. */ - if (pass->tv_id) - timevar_push (pass->tv_id); + /* Start the timevar. */ + timevar_push (pass->tv_id); /* Do it! */ if (pass->execute) @@ -1279,8 +1276,7 @@ execute_one_pass (struct opt_pass *pass) } /* Stop timevar. */ - if (pass->tv_id) - timevar_pop (pass->tv_id); + timevar_pop (pass->tv_id); do_per_function (update_properties_after_pass, pass); @@ -1347,7 +1343,7 @@ execute_ipa_pass_list (struct opt_pass *pass) { if (!quiet_flag && !cfun) fprintf (stderr, " <summary generate>"); - execute_ipa_summary_passes ((struct ipa_opt_pass *) pass); + execute_ipa_summary_passes ((struct ipa_opt_pass_d *) pass); } summaries_generated = true; } diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index 57be7a5c39c..b7fffcf972b 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -1128,7 +1128,8 @@ eliminate_partially_redundant_load (basic_block bb, rtx insn, discover additional redundancies, so mark it for later deletion. */ for (a_occr = get_bb_avail_insn (bb, expr->avail_occr); a_occr && (a_occr->insn != insn); - a_occr = get_bb_avail_insn (bb, a_occr->next)); + a_occr = get_bb_avail_insn (bb, a_occr->next)) + ; if (!a_occr) { diff --git a/gcc/postreload.c b/gcc/postreload.c index 8abc90f83d9..5f28ae0670d 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -569,7 +569,8 @@ reload_cse_simplify_operands (rtx insn, rtx testreg) alternative yet and the operand being replaced is not a cheap CONST_INT. */ if (op_alt_regno[i][j] == -1 - && reg_fits_class_p (testreg, rclass, 0, mode) + && reg_fits_class_p (testreg, (enum reg_class) rclass, + 0, mode) && (GET_CODE (recog_data.operand[i]) != CONST_INT || (rtx_cost (recog_data.operand[i], SET, optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn))) diff --git a/gcc/predict.c b/gcc/predict.c index 22e71ceab8d..a32ad509444 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -726,7 +726,8 @@ combine_predictions_for_insn (rtx insn, basic_block bb) int predictor = INTVAL (XEXP (XEXP (*pnote, 0), 0)); int probability = INTVAL (XEXP (XEXP (*pnote, 0), 1)); - dump_prediction (dump_file, predictor, probability, bb, + dump_prediction (dump_file, (enum br_predictor) predictor, + probability, bb, !first_match || best_predictor == predictor); *pnote = XEXP (*pnote, 1); } @@ -888,12 +889,13 @@ combine_predictions_for_bb (basic_block bb) { for (pred = (struct edge_prediction *) *preds; pred; pred = pred->ep_next) { - int predictor = pred->ep_predictor; + int predictor = (int) pred->ep_predictor; int probability = pred->ep_probability; if (pred->ep_edge != EDGE_SUCC (bb, 0)) probability = REG_BR_PROB_BASE - probability; - dump_prediction (dump_file, predictor, probability, bb, + dump_prediction (dump_file, (enum br_predictor) predictor, + probability, bb, !first_match || best_predictor == predictor); } } @@ -2185,7 +2187,7 @@ build_predict_expr (enum br_predictor predictor, enum prediction taken) { tree t = build1 (PREDICT_EXPR, void_type_node, build_int_cst (NULL, predictor)); - PREDICT_EXPR_OUTCOME (t) = taken; + SET_PREDICT_EXPR_OUTCOME (t, taken); return t; } diff --git a/gcc/profile.c b/gcc/profile.c index c4c7276ffe0..05fd0ca3cdb 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -741,7 +741,7 @@ compute_branch_probabilities (void) if (bb->index >= NUM_FIXED_BLOCKS && block_ends_with_condjump_p (bb) && EDGE_COUNT (bb->succs) >= 2) - num_branches++, num_never_executed; + num_branches++; } } counts_to_freqs (); diff --git a/gcc/real.c b/gcc/real.c index 29fee8305e1..a40fcc0e4da 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -997,10 +997,10 @@ bool real_arithmetic (REAL_VALUE_TYPE *r, int icode, const REAL_VALUE_TYPE *op0, const REAL_VALUE_TYPE *op1) { - enum tree_code code = icode; + enum tree_code code = (enum tree_code) icode; if (op0->decimal || (op1 && op1->decimal)) - return decimal_real_arithmetic (r, icode, op0, op1); + return decimal_real_arithmetic (r, (enum tree_code) icode, op0, op1); switch (code) { @@ -1069,7 +1069,7 @@ bool real_compare (int icode, const REAL_VALUE_TYPE *op0, const REAL_VALUE_TYPE *op1) { - enum tree_code code = icode; + enum tree_code code = (enum tree_code) icode; switch (code) { diff --git a/gcc/recog.c b/gcc/recog.c index 70370e3ad81..d011c8fbd74 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -3474,7 +3474,7 @@ struct rtl_opt_pass pass_split_all_insns = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3504,7 +3504,7 @@ struct rtl_opt_pass pass_split_after_reload = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3548,7 +3548,7 @@ struct rtl_opt_pass pass_split_before_regstack = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3586,7 +3586,7 @@ struct rtl_opt_pass pass_split_before_sched2 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3618,7 +3618,7 @@ struct rtl_opt_pass pass_split_for_shorten_branches = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/reginfo.c b/gcc/reginfo.c index e579c281aa3..9517b8fe7b2 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -277,7 +277,8 @@ init_move_cost (enum machine_mode m) cost = 65535; else { - cost = REGISTER_MOVE_COST (m, i, j); + cost = REGISTER_MOVE_COST (m, (enum reg_class) i, + (enum reg_class) j); gcc_assert (cost < 65535); } all_match &= (last_move_cost[i][j] == cost); @@ -316,23 +317,23 @@ init_move_cost (enum machine_mode m) for (p2 = ®_class_subclasses[j][0]; *p2 != LIM_REG_CLASSES; p2++) - if (*p2 != i && contains_reg_of_mode[*p2][m]) + if ((unsigned int) *p2 != i && contains_reg_of_mode[*p2][m]) cost = MAX (cost, move_cost[m][i][*p2]); for (p1 = ®_class_subclasses[i][0]; *p1 != LIM_REG_CLASSES; p1++) - if (*p1 != j && contains_reg_of_mode[*p1][m]) + if ((unsigned int) *p1 != j && contains_reg_of_mode[*p1][m]) cost = MAX (cost, move_cost[m][*p1][j]); gcc_assert (cost <= 65535); move_cost[m][i][j] = cost; - if (reg_class_subset_p (i, j)) + if (reg_class_subset_p ((enum reg_class) i, (enum reg_class) j)) may_move_in_cost[m][i][j] = 0; else may_move_in_cost[m][i][j] = cost; - if (reg_class_subset_p (j, i)) + if (reg_class_subset_p ((enum reg_class) j, (enum reg_class) i)) may_move_out_cost[m][i][j] = 0; else may_move_out_cost[m][i][j] = cost; @@ -589,11 +590,13 @@ init_reg_sets_1 (void) HARD_REG_SET ok_regs; CLEAR_HARD_REG_SET (ok_regs); for (j = 0; j < FIRST_PSEUDO_REGISTER; j++) - if (!fixed_regs [j] && HARD_REGNO_MODE_OK (j, m)) + if (!fixed_regs [j] && HARD_REGNO_MODE_OK (j, (enum machine_mode) m)) SET_HARD_REG_BIT (ok_regs, j); for (i = 0; i < N_REG_CLASSES; i++) - if ((unsigned) CLASS_MAX_NREGS (i, m) <= reg_class_size[i] + if (((unsigned) CLASS_MAX_NREGS ((enum reg_class) i, + (enum machine_mode) m) + <= reg_class_size[i]) && hard_reg_set_intersect_p (ok_regs, reg_class_contents[i])) { contains_reg_of_mode [i][m] = 1; @@ -678,7 +681,7 @@ init_fake_stack_mems (void) int i; for (i = 0; i < MAX_MACHINE_MODE; i++) - top_of_stack[i] = gen_rtx_MEM (i, stack_pointer_rtx); + top_of_stack[i] = gen_rtx_MEM ((enum machine_mode) i, stack_pointer_rtx); } @@ -948,7 +951,7 @@ struct rtl_opt_pass pass_reginfo_init = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1319,9 +1322,8 @@ cannot_change_mode_set_regs (HARD_REG_SET *used, enum machine_mode from, unsigned int regno) { struct subregs_of_mode_node dummy, *node; - enum machine_mode to; unsigned char mask; - unsigned int i; + unsigned int to, i; gcc_assert (subregs_of_mode); dummy.block = regno & -8; @@ -1331,11 +1333,11 @@ cannot_change_mode_set_regs (HARD_REG_SET *used, enum machine_mode from, return; mask = 1 << (regno & 7); - for (to = VOIDmode; to < NUM_MACHINE_MODES; to++) + for (to = 0; to < NUM_MACHINE_MODES; to++) if (node->modes[to] & mask) for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (!TEST_HARD_REG_BIT (*used, i) - && REG_CANNOT_CHANGE_MODE_P (i, from, to)) + && REG_CANNOT_CHANGE_MODE_P (i, from, (enum machine_mode) to)) SET_HARD_REG_BIT (*used, i); } @@ -1347,7 +1349,7 @@ invalid_mode_change_p (unsigned int regno, enum machine_mode from) { struct subregs_of_mode_node dummy, *node; - enum machine_mode to; + unsigned int to; unsigned char mask; gcc_assert (subregs_of_mode); @@ -1360,7 +1362,7 @@ invalid_mode_change_p (unsigned int regno, mask = 1 << (regno & 7); for (to = VOIDmode; to < NUM_MACHINE_MODES; to++) if (node->modes[to] & mask) - if (CANNOT_CHANGE_MODE_CLASS (from, to, rclass)) + if (CANNOT_CHANGE_MODE_CLASS (from, (enum machine_mode) to, rclass)) return true; return false; @@ -1407,7 +1409,7 @@ struct rtl_opt_pass pass_subregs_of_mode_init = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1426,7 +1428,7 @@ struct rtl_opt_pass pass_subregs_of_mode_finish = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/regmove.c b/gcc/regmove.c index 8ce0ea00da7..2945b8f798c 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -51,21 +51,26 @@ static void optimize_reg_copy_2 (rtx, rtx, rtx); static void optimize_reg_copy_3 (rtx, rtx, rtx); static void copy_src_to_dest (rtx, rtx, rtx); +enum match_use_kinds { + READ, + WRITE, + READWRITE +}; + struct match { int with[MAX_RECOG_OPERANDS]; - enum { READ, WRITE, READWRITE } use[MAX_RECOG_OPERANDS]; + enum match_use_kinds use[MAX_RECOG_OPERANDS]; int commutative[MAX_RECOG_OPERANDS]; int early_clobber[MAX_RECOG_OPERANDS]; }; static int find_matches (rtx, struct match *); -static int regclass_compatible_p (int, int); static int fixup_match_2 (rtx, rtx, rtx, rtx); /* Return nonzero if registers with CLASS1 and CLASS2 can be merged without causing too much register allocation problems. */ static int -regclass_compatible_p (int class0, int class1) +regclass_compatible_p (enum reg_class class0, enum reg_class class1) { return (class0 == class1 || (reg_class_subset_p (class0, class1) diff --git a/gcc/regstat.c b/gcc/regstat.c index 383201e4b57..b0bc1f6e306 100644 --- a/gcc/regstat.c +++ b/gcc/regstat.c @@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs; -struct regstat_n_sets_and_refs_t *regstat_n_sets_and_refs; /*---------------------------------------------------------------------------- REG_N_SETS and REG_N_REFS. diff --git a/gcc/reload.c b/gcc/reload.c index a7e9309f63c..53f14e38bee 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -363,7 +363,7 @@ push_secondary_reload (int in_p, rtx x, int opnum, int optional, sri.icode = CODE_FOR_nothing; sri.prev_sri = prev_sri; rclass = targetm.secondary_reload (in_p, x, reload_class, reload_mode, &sri); - icode = sri.icode; + icode = (enum insn_code) sri.icode; /* If we don't need any secondary registers, done. */ if (rclass == NO_REGS && icode == CODE_FOR_nothing) @@ -525,7 +525,7 @@ secondary_reload_class (bool in_p, enum reg_class rclass, sri.icode = CODE_FOR_nothing; sri.prev_sri = NULL; rclass = targetm.secondary_reload (in_p, x, rclass, mode, &sri); - icode = sri.icode; + icode = (enum insn_code) sri.icode; /* If there are no secondary reloads at all, we return NO_REGS. If an intermediate register is needed, we return its class. */ @@ -685,15 +685,16 @@ find_valid_class (enum machine_mode outer ATTRIBUTE_UNUSED, if (bad || !good) continue; - cost = REGISTER_MOVE_COST (outer, rclass, dest_class); + cost = REGISTER_MOVE_COST (outer, (enum reg_class) rclass, dest_class); if ((reg_class_size[rclass] > best_size && (best_cost < 0 || best_cost >= cost)) || best_cost > cost) { - best_class = rclass; + best_class = (enum reg_class) rclass; best_size = reg_class_size[rclass]; - best_cost = REGISTER_MOVE_COST (outer, rclass, dest_class); + best_cost = REGISTER_MOVE_COST (outer, (enum reg_class) rclass, + dest_class); } } @@ -1516,7 +1517,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, value for the incoming operand (same as outgoing one). */ if (rld[i].reg_rtx == out && (REG_P (in) || CONSTANT_P (in)) - && 0 != find_equiv_reg (in, this_insn, 0, REGNO (out), + && 0 != find_equiv_reg (in, this_insn, NO_REGS, REGNO (out), static_reload_reg_p, i, inmode)) rld[i].in = out; } @@ -3186,7 +3187,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, recog_data.operand_loc[loc1], recog_data.operand_loc[loc2], operand_mode[i], operand_mode[m], - this_alternative[m], -1, + (enum reg_class) this_alternative[m], + -1, this_alternative_earlyclobber[m]); if (value != 0) @@ -3438,7 +3440,8 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, break; winreg = 1; if (REG_P (operand) - && reg_fits_class_p (operand, this_alternative[i], + && reg_fits_class_p (operand, + (enum reg_class) this_alternative[i], offset, GET_MODE (recog_data.operand[i]))) win = 1; break; @@ -3573,7 +3576,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, && reg_class_size [(int) preferred_class[i]] > 0 && ! SMALL_REGISTER_CLASS_P (preferred_class[i])) { - if (! reg_class_subset_p (this_alternative[i], + if (! reg_class_subset_p ((enum reg_class) this_alternative[i], preferred_class[i])) { /* Since we don't have a way of forming the intersection, @@ -3581,7 +3584,7 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known, is a subset of the class we have; that's the most common case anyway. */ if (reg_class_subset_p (preferred_class[i], - this_alternative[i])) + (enum reg_class) this_alternative[i])) this_alternative[i] = (int) preferred_class[i]; else reject += (2 + 2 * pref_or_nothing[i]); @@ -4564,7 +4567,8 @@ alternative_allows_const_pool_ref (rtx mem, const char *constraint, int altnum) /* Skip alternatives before the one requested. */ while (altnum > 0) { - while (*constraint++ != ','); + while (*constraint++ != ',') + ; altnum--; } /* Scan the requested alternative for TARGET_MEM_CONSTRAINT or 'o'. @@ -4767,7 +4771,8 @@ make_memloc (rtx ad, int regno) /* We must rerun eliminate_regs, in case the elimination offsets have changed. */ rtx tem - = XEXP (eliminate_regs (reg_equiv_memory_loc[regno], 0, NULL_RTX), 0); + = XEXP (eliminate_regs (reg_equiv_memory_loc[regno], VOIDmode, NULL_RTX), + 0); /* If TEM might contain a pseudo, we must copy it to avoid modifying it when we do the substitution for the reload. */ diff --git a/gcc/reload1.c b/gcc/reload1.c index fcf0bd3fc4d..d0f3cfaf7c0 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -997,7 +997,8 @@ reload (rtx first, int global) for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) if (reg_renumber[i] < 0 && reg_equiv_memory_loc[i]) { - rtx x = eliminate_regs (reg_equiv_memory_loc[i], 0, NULL_RTX); + rtx x = eliminate_regs (reg_equiv_memory_loc[i], VOIDmode, + NULL_RTX); if (strict_memory_address_p (GET_MODE (regno_reg_rtx[i]), XEXP (x, 0))) @@ -2686,7 +2687,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, ? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true) : NULL_RTX); - x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1)); + x = alloc_reg_note (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1)); } } @@ -2809,7 +2810,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, case USE: /* Handle insn_list USE that a call to a pure function may generate. */ - new_rtx = eliminate_regs_1 (XEXP (x, 0), 0, insn, false); + new_rtx = eliminate_regs_1 (XEXP (x, 0), VOIDmode, insn, false); if (new_rtx != XEXP (x, 0)) return gen_rtx_USE (GET_MODE (x), new_rtx); return x; @@ -3050,8 +3051,8 @@ elimination_effects (rtx x, enum machine_mode mem_mode) } } - elimination_effects (SET_DEST (x), 0); - elimination_effects (SET_SRC (x), 0); + elimination_effects (SET_DEST (x), VOIDmode); + elimination_effects (SET_SRC (x), VOIDmode); return; case MEM: @@ -3349,7 +3350,7 @@ eliminate_regs_in_insn (rtx insn, int replace) } /* Determine the effects of this insn on elimination offsets. */ - elimination_effects (old_body, 0); + elimination_effects (old_body, VOIDmode); /* Eliminate all eliminable registers occurring in operands that can be handled by reload. */ @@ -3390,7 +3391,7 @@ eliminate_regs_in_insn (rtx insn, int replace) in_plus = true; substed_operand[i] - = eliminate_regs_1 (recog_data.operand[i], 0, + = eliminate_regs_1 (recog_data.operand[i], VOIDmode, replace ? insn : NULL_RTX, is_set_src || in_plus); if (substed_operand[i] != orig_operand[i]) @@ -3520,7 +3521,7 @@ eliminate_regs_in_insn (rtx insn, int replace) the pre-passes. */ if (val && REG_NOTES (insn) != 0) REG_NOTES (insn) - = eliminate_regs_1 (REG_NOTES (insn), 0, REG_NOTES (insn), true); + = eliminate_regs_1 (REG_NOTES (insn), VOIDmode, REG_NOTES (insn), true); return val; } @@ -7096,8 +7097,12 @@ emit_input_reload_insns (struct insn_chain *chain, struct reload *rl, else if (new_class == NO_REGS) { if (reload_adjust_reg_for_icode (&second_reload_reg, - third_reload_reg, sri.icode)) - icode = sri.icode, third_reload_reg = 0; + third_reload_reg, + (enum insn_code) sri.icode)) + { + icode = (enum insn_code) sri.icode; + third_reload_reg = 0; + } else oldequiv = old, real_oldequiv = real_old; } @@ -7115,7 +7120,10 @@ emit_input_reload_insns (struct insn_chain *chain, struct reload *rl, if (reload_adjust_reg_for_temp (&second_reload_reg, third_reload_reg, new_class, mode)) - third_reload_reg = 0, tertiary_icode = sri2.icode; + { + third_reload_reg = 0; + tertiary_icode = (enum insn_code) sri2.icode; + } else oldequiv = old, real_oldequiv = real_old; } @@ -7126,10 +7134,11 @@ emit_input_reload_insns (struct insn_chain *chain, struct reload *rl, if (reload_adjust_reg_for_temp (&intermediate, NULL, new_class, mode) && reload_adjust_reg_for_icode (&third_reload_reg, NULL, - sri2.icode)) + ((enum insn_code) + sri2.icode))) { second_reload_reg = intermediate; - tertiary_icode = sri2.icode; + tertiary_icode = (enum insn_code) sri2.icode; } else oldequiv = old, real_oldequiv = real_old; @@ -7144,7 +7153,7 @@ emit_input_reload_insns (struct insn_chain *chain, struct reload *rl, new_t_class, mode)) { second_reload_reg = intermediate; - tertiary_icode = sri2.icode; + tertiary_icode = (enum insn_code) sri2.icode; } else oldequiv = old, real_oldequiv = real_old; @@ -8423,7 +8432,7 @@ delete_output_reload (rtx insn, int j, int last_reload_reg, rtx new_reload_reg) reg, 0); if (substed) n_occurrences += count_occurrences (PATTERN (insn), - eliminate_regs (substed, 0, + eliminate_regs (substed, VOIDmode, NULL_RTX), 0); for (i1 = reg_equiv_alt_mem_list[REGNO (reg)]; i1; i1 = XEXP (i1, 1)) { diff --git a/gcc/rtl.h b/gcc/rtl.h index e8d42c8cc61..ba544f1a097 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -883,8 +883,8 @@ extern const char * const reg_note_name[]; /* Initialization status of the variable in the location. Status can be unknown, uninitialized or initialized. See enumeration type below. */ -#define NOTE_VAR_LOCATION_STATUS(INSN) (XCINT (XCEXP (INSN, 4, NOTE), \ - 2, VAR_LOCATION)) +#define NOTE_VAR_LOCATION_STATUS(INSN) \ + ((enum var_init_status) (XCINT (XCEXP (INSN, 4, NOTE), 2, VAR_LOCATION))) /* Possible initialization status of a variable. When requested by the user, this information is tracked and recorded in the DWARF @@ -1117,7 +1117,7 @@ do { \ } while (0) #define SUBREG_PROMOTED_UNSIGNED_P(RTX) \ ((RTL_FLAG_CHECK1("SUBREG_PROMOTED_UNSIGNED_P", (RTX), SUBREG)->volatil) \ - ? -1 : (RTX)->unchanging) + ? -1 : (int) (RTX)->unchanging) /* Access various components of an ASM_OPERANDS rtx. */ @@ -1760,6 +1760,7 @@ extern rtx find_constant_src (const_rtx); extern int find_reg_fusage (const_rtx, enum rtx_code, const_rtx); extern int find_regno_fusage (const_rtx, enum rtx_code, unsigned int); extern void add_reg_note (rtx, enum reg_note, rtx); +extern rtx alloc_reg_note (enum reg_note, rtx, rtx); extern void remove_note (rtx, const_rtx); extern void remove_reg_equal_equiv_notes (rtx); extern int side_effects_p (const_rtx); diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index b35d774859c..25f4a483742 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -1880,10 +1880,11 @@ find_regno_fusage (const_rtx insn, enum rtx_code code, unsigned int regno) } -/* Add register note with kind KIND and datum DATUM to INSN. */ +/* Allocate a register note with kind KIND and datum DATUM. NEXT is + stored as the pointer to the next register note. */ -void -add_reg_note (rtx insn, enum reg_note kind, rtx datum) +rtx +alloc_reg_note (enum reg_note kind, rtx datum, rtx list) { rtx note; @@ -1893,19 +1894,24 @@ add_reg_note (rtx insn, enum reg_note kind, rtx datum) case REG_CC_USER: case REG_LABEL_TARGET: case REG_LABEL_OPERAND: - /* These types of register notes use an INSN_LIST rather than an - EXPR_LIST, so that copying is done right and dumps look - better. */ - note = alloc_INSN_LIST (datum, REG_NOTES (insn)); + note = alloc_INSN_LIST (datum, list); PUT_REG_NOTE_KIND (note, kind); break; default: - note = alloc_EXPR_LIST (kind, datum, REG_NOTES (insn)); + note = alloc_EXPR_LIST (kind, datum, list); break; } - REG_NOTES (insn) = note; + return note; +} + +/* Add register note with kind KIND and datum DATUM to INSN. */ + +void +add_reg_note (rtx insn, enum reg_note kind, rtx datum) +{ + REG_NOTES (insn) = alloc_reg_note (kind, datum, REG_NOTES (insn)); } /* Remove register note NOTE from the REG_NOTES of INSN. */ diff --git a/gcc/sched-int.h b/gcc/sched-int.h index f7a54b67127..c5164dd521e 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -425,6 +425,25 @@ enum reg_pending_barrier_mode TRUE_BARRIER }; +/* See 'reg_last' in struct deps. */ +struct deps_reg +{ + rtx uses; + rtx sets; + rtx clobbers; + int uses_length; + int clobbers_length; +}; + +/* Used to keep post-call pseudo/hard reg movements together with + the call. */ +enum post_call_value +{ + not_post_call, + post_call, + post_call_initial +}; + /* Describe state of dependencies used during sched_analyze phase. */ struct deps { @@ -488,7 +507,7 @@ struct deps /* Used to keep post-call pseudo/hard reg movements together with the call. */ - enum { not_post_call, post_call, post_call_initial } in_post_call_group_p; + enum post_call_value in_post_call_group_p; /* The maximum register number for the following arrays. Before reload this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */ @@ -498,14 +517,7 @@ struct deps N within the current basic block; or zero, if there is no such insn. Needed for new registers which may be introduced by splitting insns. */ - struct deps_reg - { - rtx uses; - rtx sets; - rtx clobbers; - int uses_length; - int clobbers_length; - } *reg_last; + struct deps_reg *reg_last; /* Element N is set for each register that has any nonzero element in reg_last[N].{uses,sets,clobbers}. */ diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 004064ecf42..d5110ac84b1 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -3336,7 +3336,8 @@ rgn_add_block (basic_block bb, basic_block after) /* Now POS is the index of the last block in the region. */ /* Find index of basic block AFTER. */ - for (; rgn_bb_table[pos] != after->index; pos--); + for (; rgn_bb_table[pos] != after->index; pos--) + ; pos++; gcc_assert (pos > ebb_head[i - 1]); @@ -3383,12 +3384,14 @@ rgn_fix_recovery_cfg (int bbi, int check_bbi, int check_bb_nexti) for (old_pos = ebb_head[BLOCK_TO_BB (check_bbi) + 1] - 1; rgn_bb_table[old_pos] != check_bb_nexti; - old_pos--); + old_pos--) + ; gcc_assert (old_pos > ebb_head[BLOCK_TO_BB (check_bbi)]); for (new_pos = ebb_head[BLOCK_TO_BB (bbi) + 1] - 1; rgn_bb_table[new_pos] != bbi; - new_pos--); + new_pos--) + ; new_pos++; gcc_assert (new_pos > ebb_head[BLOCK_TO_BB (bbi)]); diff --git a/gcc/sdbout.c b/gcc/sdbout.c index 1b64a50f7ca..d3ca1a04ec0 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -1695,7 +1695,35 @@ sdbout_init (const char *input_file_name ATTRIBUTE_UNUSED) #else /* SDB_DEBUGGING_INFO */ /* This should never be used, but its address is needed for comparisons. */ -const struct gcc_debug_hooks sdb_debug_hooks; +const struct gcc_debug_hooks sdb_debug_hooks = +{ + 0, /* init */ + 0, /* finish */ + 0, /* define */ + 0, /* undef */ + 0, /* start_source_file */ + 0, /* end_source_file */ + 0, /* begin_block */ + 0, /* end_block */ + 0, /* ignore_block */ + 0, /* source_line */ + 0, /* begin_prologue */ + 0, /* end_prologue */ + 0, /* end_epilogue */ + 0, /* begin_function */ + 0, /* end_function */ + 0, /* function_decl */ + 0, /* global_decl */ + 0, /* type_decl */ + 0, /* imported_module_or_decl */ + 0, /* deferred_inline_function */ + 0, /* outlining_inline_function */ + 0, /* label */ + 0, /* handle_pch */ + 0, /* var_location */ + 0, /* switch_text_section */ + 0 /* start_end_main_source_file */ +}; #endif /* SDB_DEBUGGING_INFO */ diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 6f16d751bee..30c4f1c3898 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -1108,7 +1108,7 @@ hash_with_unspec_callback (const_rtx x, enum machine_mode mode ATTRIBUTE_UNUSED, && targetm.sched.skip_rtx_p (x)) { *nx = XVECEXP (x, 0 ,0); - *nmode = 0; + *nmode = VOIDmode; return 1; } diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index a75ed04fe1d..4c2742fc635 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -448,7 +448,7 @@ struct code_motion_path_driver_info_def *code_motion_path_driver_info; /* Set of hooks for performing move_op and find_used_regs routines with code_motion_path_driver. */ -struct code_motion_path_driver_info_def move_op_hooks, fur_hooks; +extern struct code_motion_path_driver_info_def move_op_hooks, fur_hooks; /* True if/when we want to emulate Haifa scheduler in the common code. This is used in sched_rgn_local_init and in various places in @@ -1169,7 +1169,7 @@ static void init_hard_regs_data (void) { int cur_reg = 0; - enum machine_mode cur_mode = 0; + int cur_mode = 0; CLEAR_HARD_REG_SET (sel_hrd.regs_ever_used); for (cur_reg = 0; cur_reg < FIRST_PSEUDO_REGISTER; cur_reg++) diff --git a/gcc/stack-ptr-mod.c b/gcc/stack-ptr-mod.c index ea83875e17a..50901034ad7 100644 --- a/gcc/stack-ptr-mod.c +++ b/gcc/stack-ptr-mod.c @@ -101,7 +101,7 @@ struct rtl_opt_pass pass_stack_ptr_mod = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/stringpool.c b/gcc/stringpool.c index d8d66f2418f..219c4b5f9a1 100644 --- a/gcc/stringpool.c +++ b/gcc/stringpool.c @@ -47,7 +47,7 @@ const char digit_vector[] = { struct ht *ident_hash; -static hashnode alloc_node (hash_table *); +static hashnode alloc_node (cpp_hash_table *); static int mark_ident (struct cpp_reader *, hashnode, const void *); static void * @@ -68,7 +68,7 @@ init_stringpool (void) /* Allocate a hash node. */ static hashnode -alloc_node (hash_table *table ATTRIBUTE_UNUSED) +alloc_node (cpp_hash_table *table ATTRIBUTE_UNUSED) { return GCC_IDENT_TO_HT_IDENT (make_node (IDENTIFIER_NODE)); } diff --git a/gcc/system.h b/gcc/system.h index 80bfe619c3d..3c091d80f5b 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -450,10 +450,15 @@ extern int vsnprintf(char *, size_t, const char *, va_list); #endif /* 1 if we have C99 designated initializers. */ +#ifdef __cplusplus +#undef HAVE_DESIGNATED_INITIALIZERS +#define HAVE_DESIGNATED_INITIALIZERS 0 +#else #if !defined(HAVE_DESIGNATED_INITIALIZERS) #define HAVE_DESIGNATED_INITIALIZERS \ ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L)) #endif +#endif #if HAVE_SYS_STAT_H # include <sys/stat.h> @@ -786,6 +791,9 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; change after the fact). Beyond these uses, most other cases of using this macro should be viewed with extreme caution. */ +#ifdef __cplusplus +#define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast<TOTYPE> (X)) +#else #if defined(__GNUC__) && GCC_VERSION > 4000 /* GCC 4.0.x has a bug where it may ICE on this expression, so does GCC 3.4.x (PR17436). */ @@ -793,6 +801,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; #else #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X)) #endif +#endif #define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X)) #define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X)) #define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X)) diff --git a/gcc/target-def.h b/gcc/target-def.h index e19cde3f0a2..f4f498ceef0 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -479,7 +479,7 @@ /* In hooks.c. */ #define TARGET_CANNOT_MODIFY_JUMPS_P hook_bool_void_false -#define TARGET_BRANCH_TARGET_REGISTER_CLASS hook_int_void_no_regs +#define TARGET_BRANCH_TARGET_REGISTER_CLASS default_branch_target_register_class #define TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED hook_bool_bool_false #define TARGET_CANNOT_FORCE_CONST_MEM hook_bool_rtx_false #define TARGET_CANNOT_COPY_INSN_P NULL diff --git a/gcc/target.h b/gcc/target.h index 4fb379465cf..78005a64ef5 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -91,389 +91,596 @@ struct _dep; /* This is defined in ddg.h . */ struct ddg; +/* See 'aligned_op' in struct asm_out. */ +struct asm_int_op +{ + const char *hi; + const char *si; + const char *di; + const char *ti; +}; + +/* Functions that output assembler for the target. */ +struct asm_out +{ + /* Opening and closing parentheses for asm expression grouping. */ + const char *open_paren, *close_paren; + + /* Assembler instructions for creating various kinds of integer object. */ + const char *byte_op; + struct asm_int_op aligned_op, unaligned_op; + + /* Try to output the assembler code for an integer object whose + value is given by X. SIZE is the size of the object in bytes and + ALIGNED_P indicates whether it is aligned. Return true if + successful. Only handles cases for which BYTE_OP, ALIGNED_OP + and UNALIGNED_OP are NULL. */ + bool (* integer) (rtx x, unsigned int size, int aligned_p); + + /* Output code that will globalize a label. */ + void (* globalize_label) (FILE *, const char *); + + /* Output code that will globalize a declaration. */ + void (* globalize_decl_name) (FILE *, tree); + + /* Output code that will emit a label for unwind info, if this + target requires such labels. Second argument is the decl the + unwind info is associated with, third is a boolean: true if + this is for exception handling, fourth is a boolean: true if + this is only a placeholder for an omitted FDE. */ + void (* unwind_label) (FILE *, tree, int, int); + + /* Output code that will emit a label to divide up the exception + table. */ + void (* except_table_label) (FILE *); + + /* Emit any directives required to unwind this instruction. */ + void (* unwind_emit) (FILE *, rtx); + + /* Output an internal label. */ + void (* internal_label) (FILE *, const char *, unsigned long); + + /* Emit a ttype table reference to a typeinfo object. */ + bool (* ttype) (rtx); + + /* Emit an assembler directive to set visibility for the symbol + associated with the tree decl. */ + void (* visibility) (tree, int); + + /* Output the assembler code for entry to a function. */ + void (* function_prologue) (FILE *, HOST_WIDE_INT); + + /* Output the assembler code for end of prologue. */ + void (* function_end_prologue) (FILE *); + + /* Output the assembler code for start of epilogue. */ + void (* function_begin_epilogue) (FILE *); + + /* Output the assembler code for function exit. */ + void (* function_epilogue) (FILE *, HOST_WIDE_INT); + + /* Initialize target-specific sections. */ + void (* init_sections) (void); + + /* Tell assembler to change to section NAME with attributes FLAGS. + If DECL is non-NULL, it is the VAR_DECL or FUNCTION_DECL with + which this section is associated. */ + void (* named_section) (const char *name, unsigned int flags, tree decl); + + /* Return a mask describing how relocations should be treated when + selecting sections. Bit 1 should be set if global relocations + should be placed in a read-write section; bit 0 should be set if + local relocations should be placed in a read-write section. */ + int (*reloc_rw_mask) (void); + + /* Return a section for EXP. It may be a DECL or a constant. RELOC + is nonzero if runtime relocations must be applied; bit 1 will be + set if the runtime relocations require non-local name resolution. + ALIGN is the required alignment of the data. */ + section *(* select_section) (tree, int, unsigned HOST_WIDE_INT); + + /* Return a section for X. MODE is X's mode and ALIGN is its + alignment in bits. */ + section *(* select_rtx_section) (enum machine_mode, rtx, + unsigned HOST_WIDE_INT); + + /* Select a unique section name for DECL. RELOC is the same as + for SELECT_SECTION. */ + void (* unique_section) (tree, int); + + /* Return the readonly data section associated with function DECL. */ + section *(* function_rodata_section) (tree); + + /* Output a constructor for a symbol with a given priority. */ + void (* constructor) (rtx, int); + + /* Output a destructor for a symbol with a given priority. */ + void (* destructor) (rtx, int); + + /* Output the assembler code for a thunk function. THUNK_DECL is the + declaration for the thunk function itself, FUNCTION is the decl for + the target function. DELTA is an immediate constant offset to be + added to THIS. If VCALL_OFFSET is nonzero, the word at + *(*this + vcall_offset) should be added to THIS. */ + void (* output_mi_thunk) (FILE *file, tree thunk_decl, + HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, + tree function_decl); + + /* Determine whether output_mi_thunk would succeed. */ + /* ??? Ideally, this hook would not exist, and success or failure + would be returned from output_mi_thunk directly. But there's + too much undo-able setup involved in invoking output_mi_thunk. + Could be fixed by making output_mi_thunk emit rtl instead of + text to the output file. */ + bool (* can_output_mi_thunk) (const_tree thunk_decl, HOST_WIDE_INT delta, + HOST_WIDE_INT vcall_offset, + const_tree function_decl); + + /* Output any boilerplate text needed at the beginning of a + translation unit. */ + void (*file_start) (void); + + /* Output any boilerplate text needed at the end of a + translation unit. */ + void (*file_end) (void); + + /* Output an assembler pseudo-op to declare a library function name + external. */ + void (*external_libcall) (rtx); + + /* Output an assembler directive to mark decl live. This instructs + linker to not dead code strip this symbol. */ + void (*mark_decl_preserved) (const char *); + + /* Output a record of the command line switches that have been passed. */ + print_switch_fn_type record_gcc_switches; + /* The name of the section that the example ELF implementation of + record_gcc_switches will use to store the information. Target + specific versions of record_gcc_switches may or may not use + this information. */ + const char * record_gcc_switches_section; + + /* Output the definition of a section anchor. */ + void (*output_anchor) (rtx); + + /* Output a DTP-relative reference to a TLS symbol. */ + void (*output_dwarf_dtprel) (FILE *file, int size, rtx x); +}; + +/* Functions relating to instruction scheduling. */ +struct sched +{ + /* Given the current cost, COST, of an insn, INSN, calculate and + return a new cost based on its relationship to DEP_INSN through + the dependence LINK. The default is to make no adjustment. */ + int (* adjust_cost) (rtx insn, rtx link, rtx dep_insn, int cost); + + /* Adjust the priority of an insn as you see fit. Returns the new + priority. */ + int (* adjust_priority) (rtx, int); + + /* Function which returns the maximum number of insns that can be + scheduled in the same machine cycle. This must be constant + over an entire compilation. The default is 1. */ + int (* issue_rate) (void); + + /* Calculate how much this insn affects how many more insns we + can emit this cycle. Default is they all cost the same. */ + int (* variable_issue) (FILE *, int, rtx, int); + + /* Initialize machine-dependent scheduling code. */ + void (* md_init) (FILE *, int, int); + + /* Finalize machine-dependent scheduling code. */ + void (* md_finish) (FILE *, int); + + /* Initialize machine-dependent function wide scheduling code. */ + void (* md_init_global) (FILE *, int, int); + + /* Finalize machine-dependent function wide scheduling code. */ + void (* md_finish_global) (FILE *, int); + + /* Reorder insns in a machine-dependent fashion, in two different + places. Default does nothing. */ + int (* reorder) (FILE *, int, rtx *, int *, int); + int (* reorder2) (FILE *, int, rtx *, int *, int); + + /* The following member value is a pointer to a function called + after evaluation forward dependencies of insns in chain given + by two parameter values (head and tail correspondingly). */ + void (* dependencies_evaluation_hook) (rtx, rtx); + + /* The values of the following four members are pointers to + functions used to simplify the automaton descriptions. + dfa_pre_cycle_insn and dfa_post_cycle_insn give functions + returning insns which are used to change the pipeline hazard + recognizer state when the new simulated processor cycle + correspondingly starts and finishes. The function defined by + init_dfa_pre_cycle_insn and init_dfa_post_cycle_insn are used + to initialize the corresponding insns. The default values of + the members result in not changing the automaton state when + the new simulated processor cycle correspondingly starts and + finishes. */ + void (* init_dfa_pre_cycle_insn) (void); + rtx (* dfa_pre_cycle_insn) (void); + void (* init_dfa_post_cycle_insn) (void); + rtx (* dfa_post_cycle_insn) (void); + + /* The values of the following two members are pointers to + functions used to simplify the automaton descriptions. + dfa_pre_advance_cycle and dfa_post_advance_cycle are getting called + immediately before and after cycle is advanced. */ + void (* dfa_pre_advance_cycle) (void); + void (* dfa_post_advance_cycle) (void); + + /* The following member value is a pointer to a function returning value + which defines how many insns in queue `ready' will we try for + multi-pass scheduling. If the member value is nonzero and the + function returns positive value, the DFA based scheduler will make + multi-pass scheduling for the first cycle. In other words, we will + try to choose ready insn which permits to start maximum number of + insns on the same cycle. */ + int (* first_cycle_multipass_dfa_lookahead) (void); + + /* The following member value is pointer to a function controlling + what insns from the ready insn queue will be considered for the + multipass insn scheduling. If the hook returns zero for insn + passed as the parameter, the insn will be not chosen to be + issued. */ + int (* first_cycle_multipass_dfa_lookahead_guard) (rtx); + + /* The following member value is pointer to a function called by + the insn scheduler before issuing insn passed as the third + parameter on given cycle. If the hook returns nonzero, the + insn is not issued on given processors cycle. Instead of that, + the processor cycle is advanced. If the value passed through + the last parameter is zero, the insn ready queue is not sorted + on the new cycle start as usually. The first parameter passes + file for debugging output. The second one passes the scheduler + verbose level of the debugging output. The forth and the fifth + parameter values are correspondingly processor cycle on which + the previous insn has been issued and the current processor + cycle. */ + int (* dfa_new_cycle) (FILE *, int, rtx, int, int, int *); + + /* The following member value is a pointer to a function called by the + insn scheduler. It should return true if there exists a dependence + which is considered costly by the target, between the insn + DEP_PRO (&_DEP), and the insn DEP_CON (&_DEP). The first parameter is + the dep that represents the dependence between the two insns. The + second argument is the cost of the dependence as estimated by + the scheduler. The last argument is the distance in cycles + between the already scheduled insn (first parameter) and the + second insn (second parameter). */ + bool (* is_costly_dependence) (struct _dep *_dep, int, int); + + /* Given the current cost, COST, of an insn, INSN, calculate and + return a new cost based on its relationship to DEP_INSN through the + dependence of type DEP_TYPE. The default is to make no adjustment. */ + int (* adjust_cost_2) (rtx insn, int, rtx dep_insn, int cost, int dw); + + /* The following member value is a pointer to a function called + by the insn scheduler. This hook is called to notify the backend + that new instructions were emitted. */ + void (* h_i_d_extended) (void); + + /* Next 5 functions are for multi-point scheduling. */ + + /* Allocate memory for scheduler context. */ + void *(* alloc_sched_context) (void); + + /* Fills the context from the local machine scheduler context. */ + void (* init_sched_context) (void *, bool); + + /* Sets local machine scheduler context to a saved value. */ + void (* set_sched_context) (void *); + + /* Clears a scheduler context so it becomes like after init. */ + void (* clear_sched_context) (void *); + + /* Frees the scheduler context. */ + void (* free_sched_context) (void *); + + /* The following member value is a pointer to a function called + by the insn scheduler. + The first parameter is an instruction, the second parameter is the type + of the requested speculation, and the third parameter is a pointer to the + speculative pattern of the corresponding type (set if return value == 1). + It should return + -1, if there is no pattern, that will satisfy the requested speculation + type, + 0, if current pattern satisfies the requested speculation type, + 1, if pattern of the instruction should be changed to the newly + generated one. */ + int (* speculate_insn) (rtx, int, rtx *); + + /* The following member value is a pointer to a function called + by the insn scheduler. It should return true if the check instruction + passed as the parameter needs a recovery block. */ + bool (* needs_block_p) (int); + + /* The following member value is a pointer to a function called + by the insn scheduler. It should return a pattern for the check + instruction. + The first parameter is a speculative instruction, the second parameter + is the label of the corresponding recovery block (or null, if it is a + simple check). If the mutation of the check is requested (e.g. from + ld.c to chk.a), the third parameter is true - in this case the first + parameter is the previous check. */ + rtx (* gen_spec_check) (rtx, rtx, int); + + /* The following member value is a pointer to a function controlling + what insns from the ready insn queue will be considered for the + multipass insn scheduling. If the hook returns zero for the insn + passed as the parameter, the insn will not be chosen to be + issued. This hook is used to discard speculative instructions, + that stand at the first position of the ready list. */ + bool (* first_cycle_multipass_dfa_lookahead_guard_spec) (const_rtx); + + /* The following member value is a pointer to a function that provides + information about the speculation capabilities of the target. + The parameter is a pointer to spec_info variable. */ + void (* set_sched_flags) (struct spec_info_def *); + + /* Return speculation types of the instruction passed as the parameter. */ + int (* get_insn_spec_ds) (rtx); + + /* Return speculation types that are checked for the instruction passed as + the parameter. */ + int (* get_insn_checked_ds) (rtx); + + /* Return bool if rtx scanning should just skip current layer and + advance to the inner rtxes. */ + bool (* skip_rtx_p) (const_rtx); + + /* The following member value is a pointer to a function that provides + information about the target resource-based lower bound which is + used by the swing modulo scheduler. The parameter is a pointer + to ddg variable. */ + int (* sms_res_mii) (struct ddg *); +}; + +/* Functions relating to vectorization. */ +struct vectorize +{ + /* The following member value is a pointer to a function called + by the vectorizer, and return the decl of the target builtin + function. */ + tree (* builtin_mask_for_load) (void); + + /* Returns a code for builtin that realizes vectorized version of + function, or NULL_TREE if not available. */ + tree (* builtin_vectorized_function) (unsigned, tree, tree); + + /* Returns a code for builtin that realizes vectorized version of + conversion, or NULL_TREE if not available. */ + tree (* builtin_conversion) (unsigned, tree); + + /* Target builtin that implements vector widening multiplication. + builtin_mul_widen_eve computes the element-by-element products + for the even elements, and builtin_mul_widen_odd computes the + element-by-element products for the odd elements. */ + tree (* builtin_mul_widen_even) (tree); + tree (* builtin_mul_widen_odd) (tree); + + /* Returns the cost to be added to the overheads involved with + executing the vectorized version of a loop. */ + int (*builtin_vectorization_cost) (bool); + + /* Return true if vector alignment is reachable (by peeling N + iterations) for the given type. */ + bool (* vector_alignment_reachable) (const_tree, bool); + + /* Target builtin that implements vector permute. */ + tree (* builtin_vec_perm) (tree, tree*); +}; + +/* Functions relating to calls - argument passing, returns, etc. */ +struct calls +{ + bool (*promote_function_args) (const_tree fntype); + bool (*promote_function_return) (const_tree fntype); + bool (*promote_prototypes) (const_tree fntype); + rtx (*struct_value_rtx) (tree fndecl, int incoming); + bool (*return_in_memory) (const_tree type, const_tree fndecl); + bool (*return_in_msb) (const_tree type); + + /* Return true if a parameter must be passed by reference. TYPE may + be null if this is a libcall. CA may be null if this query is + from __builtin_va_arg. */ + bool (*pass_by_reference) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + const_tree type, bool named_arg); + + rtx (*expand_builtin_saveregs) (void); + /* Returns pretend_argument_size. */ + void (*setup_incoming_varargs) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, int *pretend_arg_size, + int second_time); + bool (*strict_argument_naming) (CUMULATIVE_ARGS *ca); + /* Returns true if we should use + targetm.calls.setup_incoming_varargs() and/or + targetm.calls.strict_argument_naming(). */ + bool (*pretend_outgoing_varargs_named) (CUMULATIVE_ARGS *ca); + + /* Given a complex type T, return true if a parameter of type T + should be passed as two scalars. */ + bool (* split_complex_arg) (const_tree type); + + /* Return true if type T, mode MODE, may not be passed in registers, + but must be passed on the stack. */ + /* ??? This predicate should be applied strictly after pass-by-reference. + Need audit to verify that this is the case. */ + bool (* must_pass_in_stack) (enum machine_mode mode, const_tree t); + + /* Return true if type TYPE, mode MODE, which is passed by reference, + should have the object copy generated by the callee rather than + the caller. It is never called for TYPE requiring constructors. */ + bool (* callee_copies) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + const_tree type, bool named); + + /* Return zero for arguments passed entirely on the stack or entirely + in registers. If passed in both, return the number of bytes passed + in registers; the balance is therefore passed on the stack. */ + int (* arg_partial_bytes) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, bool named); + + /* Return the diagnostic message string if function without a prototype + is not allowed for this 'val' argument; NULL otherwise. */ + const char *(*invalid_arg_for_unprototyped_fn) (const_tree typelist, + const_tree funcdecl, + const_tree val); + + /* Return an rtx for the return value location of the function + specified by FN_DECL_OR_TYPE with a return type of RET_TYPE. */ + rtx (*function_value) (const_tree ret_type, const_tree fn_decl_or_type, + bool outgoing); + + /* Return an rtx for the argument pointer incoming to the + current function. */ + rtx (*internal_arg_pointer) (void); + + /* Update the current function stack boundary if needed. */ + void (*update_stack_boundary) (void); + + /* Handle stack alignment and return an rtx for Dynamic Realign + Argument Pointer if necessary. */ + rtx (*get_drap_rtx) (void); + + /* Return true if all function parameters should be spilled to the + stack. */ + bool (*allocate_stack_slots_for_args) (void); + +}; + +/* Functions specific to the C family of frontends. */ +struct c +{ + /* Return machine mode for non-standard suffix + or VOIDmode if non-standard suffixes are unsupported. */ + enum machine_mode (*mode_for_suffix) (char); +}; + +/* Functions specific to the C++ frontend. */ +struct cxx +{ + /* Return the integer type used for guard variables. */ + tree (*guard_type) (void); + /* Return true if only the low bit of the guard should be tested. */ + bool (*guard_mask_bit) (void); + /* Returns the size of the array cookie for an array of type. */ + tree (*get_cookie_size) (tree); + /* Returns true if the element size should be stored in the + array cookie. */ + bool (*cookie_has_size) (void); + /* Allows backends to perform additional processing when + deciding if a class should be exported or imported. */ + int (*import_export_class) (tree, int); + /* Returns true if constructors and destructors return "this". */ + bool (*cdtor_returns_this) (void); + /* Returns true if the key method for a class can be an inline + function, so long as it is not declared inline in the class + itself. Returning true is the behavior required by the Itanium + C++ ABI. */ + bool (*key_method_may_be_inline) (void); + /* DECL is a virtual table, virtual table table, typeinfo object, + or other similar implicit class data object that will be + emitted with external linkage in this translation unit. No ELF + visibility has been explicitly specified. If the target needs + to specify a visibility other than that of the containing class, + use this hook to set DECL_VISIBILITY and + DECL_VISIBILITY_SPECIFIED. */ + void (*determine_class_data_visibility) (tree decl); + /* Returns true (the default) if virtual tables and other + similar implicit class data objects are always COMDAT if they + have external linkage. If this hook returns false, then + class data for classes whose virtual table will be emitted in + only one translation unit will not be COMDAT. */ + bool (*class_data_always_comdat) (void); + /* Returns true (the default) if the RTTI for the basic types, + which is always defined in the C++ runtime, should be COMDAT; + false if it should not be COMDAT. */ + bool (*library_rtti_comdat) (void); + /* Returns true if __aeabi_atexit should be used to register static + destructors. */ + bool (*use_aeabi_atexit) (void); + /* Returns true if target may use atexit in the same manner as + __cxa_atexit to register static destructors. */ + bool (*use_atexit_for_cxa_atexit) (void); + /* TYPE is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that + has just been defined. Use this hook to make adjustments to the + class (eg, tweak visibility or perform any other required + target modifications). */ + void (*adjust_class_at_definition) (tree type); +}; + +/* Functions and data for emulated TLS support. */ +struct emutls +{ + /* Name of the address and common functions. */ + const char *get_address; + const char *register_common; + + /* Prefixes for proxy variable and template. */ + const char *var_section; + const char *tmpl_section; + + /* Prefixes for proxy variable and template. */ + const char *var_prefix; + const char *tmpl_prefix; + + /* Function to generate field definitions of the proxy variable. */ + tree (*var_fields) (tree, tree *); + + /* Function to initialize a proxy variable. */ + tree (*var_init) (tree, tree, tree); + + /* Whether we are allowed to alter the usual alignment of the + proxy variable. */ + bool var_align_fixed; + + /* Whether we can emit debug information for TLS vars. */ + bool debug_form_tls_address; +}; + +struct target_option_hooks +{ + /* Function to validate the attribute((option(...))) strings or NULL. If + the option is validated, it is assumed that DECL_FUNCTION_SPECIFIC will + be filled in in the function decl node. */ + bool (*valid_attribute_p) (tree, tree, tree, int); + + /* Function to save any extra target state in the target options + structure. */ + void (*save) (struct cl_target_option *); + + /* Function to restore any extra target state from the target options + structure. */ + void (*restore) (struct cl_target_option *); + + /* Function to print any extra target state from the target options + structure. */ + void (*print) (FILE *, int, struct cl_target_option *); + + /* Function to parse arguments to be validated for #pragma option, and to + change the state if the options are valid. If the first argument is + NULL, the second argument specifies the default options to use. Return + true if the options are valid, and set the current state. */ + bool (*pragma_parse) (tree, tree); + + /* Function to determine if one function can inline another function. */ + bool (*can_inline_p) (tree, tree); +}; + struct gcc_target { /* Functions that output assembler for the target. */ - struct asm_out - { - /* Opening and closing parentheses for asm expression grouping. */ - const char *open_paren, *close_paren; - - /* Assembler instructions for creating various kinds of integer object. */ - const char *byte_op; - struct asm_int_op - { - const char *hi; - const char *si; - const char *di; - const char *ti; - } aligned_op, unaligned_op; - - /* Try to output the assembler code for an integer object whose - value is given by X. SIZE is the size of the object in bytes and - ALIGNED_P indicates whether it is aligned. Return true if - successful. Only handles cases for which BYTE_OP, ALIGNED_OP - and UNALIGNED_OP are NULL. */ - bool (* integer) (rtx x, unsigned int size, int aligned_p); - - /* Output code that will globalize a label. */ - void (* globalize_label) (FILE *, const char *); - - /* Output code that will globalize a declaration. */ - void (* globalize_decl_name) (FILE *, tree); - - /* Output code that will emit a label for unwind info, if this - target requires such labels. Second argument is the decl the - unwind info is associated with, third is a boolean: true if - this is for exception handling, fourth is a boolean: true if - this is only a placeholder for an omitted FDE. */ - void (* unwind_label) (FILE *, tree, int, int); - - /* Output code that will emit a label to divide up the exception - table. */ - void (* except_table_label) (FILE *); - - /* Emit any directives required to unwind this instruction. */ - void (* unwind_emit) (FILE *, rtx); - - /* Output an internal label. */ - void (* internal_label) (FILE *, const char *, unsigned long); - - /* Emit a ttype table reference to a typeinfo object. */ - bool (* ttype) (rtx); - - /* Emit an assembler directive to set visibility for the symbol - associated with the tree decl. */ - void (* visibility) (tree, int); - - /* Output the assembler code for entry to a function. */ - void (* function_prologue) (FILE *, HOST_WIDE_INT); - - /* Output the assembler code for end of prologue. */ - void (* function_end_prologue) (FILE *); - - /* Output the assembler code for start of epilogue. */ - void (* function_begin_epilogue) (FILE *); - - /* Output the assembler code for function exit. */ - void (* function_epilogue) (FILE *, HOST_WIDE_INT); - - /* Initialize target-specific sections. */ - void (* init_sections) (void); - - /* Tell assembler to change to section NAME with attributes FLAGS. - If DECL is non-NULL, it is the VAR_DECL or FUNCTION_DECL with - which this section is associated. */ - void (* named_section) (const char *name, unsigned int flags, tree decl); - - /* Return a mask describing how relocations should be treated when - selecting sections. Bit 1 should be set if global relocations - should be placed in a read-write section; bit 0 should be set if - local relocations should be placed in a read-write section. */ - int (*reloc_rw_mask) (void); - - /* Return a section for EXP. It may be a DECL or a constant. RELOC - is nonzero if runtime relocations must be applied; bit 1 will be - set if the runtime relocations require non-local name resolution. - ALIGN is the required alignment of the data. */ - section *(* select_section) (tree, int, unsigned HOST_WIDE_INT); - - /* Return a section for X. MODE is X's mode and ALIGN is its - alignment in bits. */ - section *(* select_rtx_section) (enum machine_mode, rtx, - unsigned HOST_WIDE_INT); - - /* Select a unique section name for DECL. RELOC is the same as - for SELECT_SECTION. */ - void (* unique_section) (tree, int); - - /* Return the readonly data section associated with function DECL. */ - section *(* function_rodata_section) (tree); - - /* Output a constructor for a symbol with a given priority. */ - void (* constructor) (rtx, int); - - /* Output a destructor for a symbol with a given priority. */ - void (* destructor) (rtx, int); - - /* Output the assembler code for a thunk function. THUNK_DECL is the - declaration for the thunk function itself, FUNCTION is the decl for - the target function. DELTA is an immediate constant offset to be - added to THIS. If VCALL_OFFSET is nonzero, the word at - *(*this + vcall_offset) should be added to THIS. */ - void (* output_mi_thunk) (FILE *file, tree thunk_decl, - HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, - tree function_decl); - - /* Determine whether output_mi_thunk would succeed. */ - /* ??? Ideally, this hook would not exist, and success or failure - would be returned from output_mi_thunk directly. But there's - too much undo-able setup involved in invoking output_mi_thunk. - Could be fixed by making output_mi_thunk emit rtl instead of - text to the output file. */ - bool (* can_output_mi_thunk) (const_tree thunk_decl, HOST_WIDE_INT delta, - HOST_WIDE_INT vcall_offset, - const_tree function_decl); - - /* Output any boilerplate text needed at the beginning of a - translation unit. */ - void (*file_start) (void); - - /* Output any boilerplate text needed at the end of a - translation unit. */ - void (*file_end) (void); - - /* Output an assembler pseudo-op to declare a library function name - external. */ - void (*external_libcall) (rtx); - - /* Output an assembler directive to mark decl live. This instructs - linker to not dead code strip this symbol. */ - void (*mark_decl_preserved) (const char *); - - /* Output a record of the command line switches that have been passed. */ - print_switch_fn_type record_gcc_switches; - /* The name of the section that the example ELF implementation of - record_gcc_switches will use to store the information. Target - specific versions of record_gcc_switches may or may not use - this information. */ - const char * record_gcc_switches_section; - - /* Output the definition of a section anchor. */ - void (*output_anchor) (rtx); - - /* Output a DTP-relative reference to a TLS symbol. */ - void (*output_dwarf_dtprel) (FILE *file, int size, rtx x); - - } asm_out; + struct asm_out asm_out; /* Functions relating to instruction scheduling. */ - struct sched - { - /* Given the current cost, COST, of an insn, INSN, calculate and - return a new cost based on its relationship to DEP_INSN through - the dependence LINK. The default is to make no adjustment. */ - int (* adjust_cost) (rtx insn, rtx link, rtx dep_insn, int cost); - - /* Adjust the priority of an insn as you see fit. Returns the new - priority. */ - int (* adjust_priority) (rtx, int); - - /* Function which returns the maximum number of insns that can be - scheduled in the same machine cycle. This must be constant - over an entire compilation. The default is 1. */ - int (* issue_rate) (void); - - /* Calculate how much this insn affects how many more insns we - can emit this cycle. Default is they all cost the same. */ - int (* variable_issue) (FILE *, int, rtx, int); - - /* Initialize machine-dependent scheduling code. */ - void (* md_init) (FILE *, int, int); - - /* Finalize machine-dependent scheduling code. */ - void (* md_finish) (FILE *, int); - - /* Initialize machine-dependent function wide scheduling code. */ - void (* md_init_global) (FILE *, int, int); - - /* Finalize machine-dependent function wide scheduling code. */ - void (* md_finish_global) (FILE *, int); - - /* Reorder insns in a machine-dependent fashion, in two different - places. Default does nothing. */ - int (* reorder) (FILE *, int, rtx *, int *, int); - int (* reorder2) (FILE *, int, rtx *, int *, int); - - /* The following member value is a pointer to a function called - after evaluation forward dependencies of insns in chain given - by two parameter values (head and tail correspondingly). */ - void (* dependencies_evaluation_hook) (rtx, rtx); - - /* The values of the following four members are pointers to - functions used to simplify the automaton descriptions. - dfa_pre_cycle_insn and dfa_post_cycle_insn give functions - returning insns which are used to change the pipeline hazard - recognizer state when the new simulated processor cycle - correspondingly starts and finishes. The function defined by - init_dfa_pre_cycle_insn and init_dfa_post_cycle_insn are used - to initialize the corresponding insns. The default values of - the members result in not changing the automaton state when - the new simulated processor cycle correspondingly starts and - finishes. */ - void (* init_dfa_pre_cycle_insn) (void); - rtx (* dfa_pre_cycle_insn) (void); - void (* init_dfa_post_cycle_insn) (void); - rtx (* dfa_post_cycle_insn) (void); - - /* The values of the following two members are pointers to - functions used to simplify the automaton descriptions. - dfa_pre_advance_cycle and dfa_post_advance_cycle are getting called - immediately before and after cycle is advanced. */ - void (* dfa_pre_advance_cycle) (void); - void (* dfa_post_advance_cycle) (void); - - /* The following member value is a pointer to a function returning value - which defines how many insns in queue `ready' will we try for - multi-pass scheduling. If the member value is nonzero and the - function returns positive value, the DFA based scheduler will make - multi-pass scheduling for the first cycle. In other words, we will - try to choose ready insn which permits to start maximum number of - insns on the same cycle. */ - int (* first_cycle_multipass_dfa_lookahead) (void); - - /* The following member value is pointer to a function controlling - what insns from the ready insn queue will be considered for the - multipass insn scheduling. If the hook returns zero for insn - passed as the parameter, the insn will be not chosen to be - issued. */ - int (* first_cycle_multipass_dfa_lookahead_guard) (rtx); - - /* The following member value is pointer to a function called by - the insn scheduler before issuing insn passed as the third - parameter on given cycle. If the hook returns nonzero, the - insn is not issued on given processors cycle. Instead of that, - the processor cycle is advanced. If the value passed through - the last parameter is zero, the insn ready queue is not sorted - on the new cycle start as usually. The first parameter passes - file for debugging output. The second one passes the scheduler - verbose level of the debugging output. The forth and the fifth - parameter values are correspondingly processor cycle on which - the previous insn has been issued and the current processor - cycle. */ - int (* dfa_new_cycle) (FILE *, int, rtx, int, int, int *); - - /* The following member value is a pointer to a function called by the - insn scheduler. It should return true if there exists a dependence - which is considered costly by the target, between the insn - DEP_PRO (&_DEP), and the insn DEP_CON (&_DEP). The first parameter is - the dep that represents the dependence between the two insns. The - second argument is the cost of the dependence as estimated by - the scheduler. The last argument is the distance in cycles - between the already scheduled insn (first parameter) and the - second insn (second parameter). */ - bool (* is_costly_dependence) (struct _dep *_dep, int, int); - - /* Given the current cost, COST, of an insn, INSN, calculate and - return a new cost based on its relationship to DEP_INSN through the - dependence of type DEP_TYPE. The default is to make no adjustment. */ - int (* adjust_cost_2) (rtx insn, int, rtx dep_insn, int cost, int dw); - - /* The following member value is a pointer to a function called - by the insn scheduler. This hook is called to notify the backend - that new instructions were emitted. */ - void (* h_i_d_extended) (void); - - /* Next 5 functions are for multi-point scheduling. */ - - /* Allocate memory for scheduler context. */ - void *(* alloc_sched_context) (void); - - /* Fills the context from the local machine scheduler context. */ - void (* init_sched_context) (void *, bool); - - /* Sets local machine scheduler context to a saved value. */ - void (* set_sched_context) (void *); - - /* Clears a scheduler context so it becomes like after init. */ - void (* clear_sched_context) (void *); - - /* Frees the scheduler context. */ - void (* free_sched_context) (void *); - - /* The following member value is a pointer to a function called - by the insn scheduler. - The first parameter is an instruction, the second parameter is the type - of the requested speculation, and the third parameter is a pointer to the - speculative pattern of the corresponding type (set if return value == 1). - It should return - -1, if there is no pattern, that will satisfy the requested speculation - type, - 0, if current pattern satisfies the requested speculation type, - 1, if pattern of the instruction should be changed to the newly - generated one. */ - int (* speculate_insn) (rtx, int, rtx *); - - /* The following member value is a pointer to a function called - by the insn scheduler. It should return true if the check instruction - passed as the parameter needs a recovery block. */ - bool (* needs_block_p) (int); - - /* The following member value is a pointer to a function called - by the insn scheduler. It should return a pattern for the check - instruction. - The first parameter is a speculative instruction, the second parameter - is the label of the corresponding recovery block (or null, if it is a - simple check). If the mutation of the check is requested (e.g. from - ld.c to chk.a), the third parameter is true - in this case the first - parameter is the previous check. */ - rtx (* gen_spec_check) (rtx, rtx, int); - - /* The following member value is a pointer to a function controlling - what insns from the ready insn queue will be considered for the - multipass insn scheduling. If the hook returns zero for the insn - passed as the parameter, the insn will not be chosen to be - issued. This hook is used to discard speculative instructions, - that stand at the first position of the ready list. */ - bool (* first_cycle_multipass_dfa_lookahead_guard_spec) (const_rtx); - - /* The following member value is a pointer to a function that provides - information about the speculation capabilities of the target. - The parameter is a pointer to spec_info variable. */ - void (* set_sched_flags) (struct spec_info_def *); - - /* Return speculation types of the instruction passed as the parameter. */ - int (* get_insn_spec_ds) (rtx); - - /* Return speculation types that are checked for the instruction passed as - the parameter. */ - int (* get_insn_checked_ds) (rtx); - - /* Return bool if rtx scanning should just skip current layer and - advance to the inner rtxes. */ - bool (* skip_rtx_p) (const_rtx); - - /* The following member value is a pointer to a function that provides - information about the target resource-based lower bound which is - used by the swing modulo scheduler. The parameter is a pointer - to ddg variable. */ - int (* sms_res_mii) (struct ddg *); - } sched; + struct sched sched; /* Functions relating to vectorization. */ - struct vectorize - { - /* The following member value is a pointer to a function called - by the vectorizer, and return the decl of the target builtin - function. */ - tree (* builtin_mask_for_load) (void); - - /* Returns a code for builtin that realizes vectorized version of - function, or NULL_TREE if not available. */ - tree (* builtin_vectorized_function) (unsigned, tree, tree); - - /* Returns a code for builtin that realizes vectorized version of - conversion, or NULL_TREE if not available. */ - tree (* builtin_conversion) (unsigned, tree); - - /* Target builtin that implements vector widening multiplication. - builtin_mul_widen_eve computes the element-by-element products - for the even elements, and builtin_mul_widen_odd computes the - element-by-element products for the odd elements. */ - tree (* builtin_mul_widen_even) (tree); - tree (* builtin_mul_widen_odd) (tree); - - /* Returns the cost to be added to the overheads involved with - executing the vectorized version of a loop. */ - int (*builtin_vectorization_cost) (bool); - - /* Return true if vector alignment is reachable (by peeling N - iterations) for the given type. */ - bool (* vector_alignment_reachable) (const_tree, bool); - - /* Target builtin that implements vector permute. */ - tree (* builtin_vec_perm) (tree, tree*); -} vectorize; + struct vectorize vectorize; /* The initial value of target_flags. */ int default_target_flags; @@ -582,7 +789,7 @@ struct gcc_target /* Return a register class for which branch target register optimizations should be applied. */ - int (* branch_target_register_class) (void); + enum reg_class (* branch_target_register_class) (void); /* Return true if branch target register optimizations should include callee-saved registers that are not already live during the current @@ -812,80 +1019,7 @@ struct gcc_target bool (* valid_dllimport_attribute_p) (const_tree decl); /* Functions relating to calls - argument passing, returns, etc. */ - struct calls { - bool (*promote_function_args) (const_tree fntype); - bool (*promote_function_return) (const_tree fntype); - bool (*promote_prototypes) (const_tree fntype); - rtx (*struct_value_rtx) (tree fndecl, int incoming); - bool (*return_in_memory) (const_tree type, const_tree fndecl); - bool (*return_in_msb) (const_tree type); - - /* Return true if a parameter must be passed by reference. TYPE may - be null if this is a libcall. CA may be null if this query is - from __builtin_va_arg. */ - bool (*pass_by_reference) (CUMULATIVE_ARGS *ca, enum machine_mode mode, - const_tree type, bool named_arg); - - rtx (*expand_builtin_saveregs) (void); - /* Returns pretend_argument_size. */ - void (*setup_incoming_varargs) (CUMULATIVE_ARGS *ca, enum machine_mode mode, - tree type, int *pretend_arg_size, - int second_time); - bool (*strict_argument_naming) (CUMULATIVE_ARGS *ca); - /* Returns true if we should use - targetm.calls.setup_incoming_varargs() and/or - targetm.calls.strict_argument_naming(). */ - bool (*pretend_outgoing_varargs_named) (CUMULATIVE_ARGS *ca); - - /* Given a complex type T, return true if a parameter of type T - should be passed as two scalars. */ - bool (* split_complex_arg) (const_tree type); - - /* Return true if type T, mode MODE, may not be passed in registers, - but must be passed on the stack. */ - /* ??? This predicate should be applied strictly after pass-by-reference. - Need audit to verify that this is the case. */ - bool (* must_pass_in_stack) (enum machine_mode mode, const_tree t); - - /* Return true if type TYPE, mode MODE, which is passed by reference, - should have the object copy generated by the callee rather than - the caller. It is never called for TYPE requiring constructors. */ - bool (* callee_copies) (CUMULATIVE_ARGS *ca, enum machine_mode mode, - const_tree type, bool named); - - /* Return zero for arguments passed entirely on the stack or entirely - in registers. If passed in both, return the number of bytes passed - in registers; the balance is therefore passed on the stack. */ - int (* arg_partial_bytes) (CUMULATIVE_ARGS *ca, enum machine_mode mode, - tree type, bool named); - - /* Return the diagnostic message string if function without a prototype - is not allowed for this 'val' argument; NULL otherwise. */ - const char *(*invalid_arg_for_unprototyped_fn) (const_tree typelist, - const_tree funcdecl, - const_tree val); - - /* Return an rtx for the return value location of the function - specified by FN_DECL_OR_TYPE with a return type of RET_TYPE. */ - rtx (*function_value) (const_tree ret_type, const_tree fn_decl_or_type, - bool outgoing); - - /* Return an rtx for the argument pointer incoming to the - current function. */ - rtx (*internal_arg_pointer) (void); - - /* Update the current function stack boundary if needed. */ - void (*update_stack_boundary) (void); - - /* Handle stack alignment and return an rtx for Dynamic Realign - Argument Pointer if necessary. */ - rtx (*get_drap_rtx) (void); - - /* Return true if all function parameters should be spilled to the - stack. */ - bool (*allocate_stack_slots_for_args) (void); - - } calls; + struct calls calls; /* Return the diagnostic message string if conversion from FROMTYPE to TOTYPE is not allowed, NULL otherwise. */ @@ -921,119 +1055,15 @@ struct gcc_target bool (* hard_regno_scratch_ok) (unsigned int regno); /* Functions specific to the C family of frontends. */ - struct c { - /* Return machine mode for non-standard suffix - or VOIDmode if non-standard suffixes are unsupported. */ - enum machine_mode (*mode_for_suffix) (char); - } c; + struct c c; /* Functions specific to the C++ frontend. */ - struct cxx { - /* Return the integer type used for guard variables. */ - tree (*guard_type) (void); - /* Return true if only the low bit of the guard should be tested. */ - bool (*guard_mask_bit) (void); - /* Returns the size of the array cookie for an array of type. */ - tree (*get_cookie_size) (tree); - /* Returns true if the element size should be stored in the - array cookie. */ - bool (*cookie_has_size) (void); - /* Allows backends to perform additional processing when - deciding if a class should be exported or imported. */ - int (*import_export_class) (tree, int); - /* Returns true if constructors and destructors return "this". */ - bool (*cdtor_returns_this) (void); - /* Returns true if the key method for a class can be an inline - function, so long as it is not declared inline in the class - itself. Returning true is the behavior required by the Itanium - C++ ABI. */ - bool (*key_method_may_be_inline) (void); - /* DECL is a virtual table, virtual table table, typeinfo object, - or other similar implicit class data object that will be - emitted with external linkage in this translation unit. No ELF - visibility has been explicitly specified. If the target needs - to specify a visibility other than that of the containing class, - use this hook to set DECL_VISIBILITY and - DECL_VISIBILITY_SPECIFIED. */ - void (*determine_class_data_visibility) (tree decl); - /* Returns true (the default) if virtual tables and other - similar implicit class data objects are always COMDAT if they - have external linkage. If this hook returns false, then - class data for classes whose virtual table will be emitted in - only one translation unit will not be COMDAT. */ - bool (*class_data_always_comdat) (void); - /* Returns true (the default) if the RTTI for the basic types, - which is always defined in the C++ runtime, should be COMDAT; - false if it should not be COMDAT. */ - bool (*library_rtti_comdat) (void); - /* Returns true if __aeabi_atexit should be used to register static - destructors. */ - bool (*use_aeabi_atexit) (void); - /* Returns true if target may use atexit in the same manner as - __cxa_atexit to register static destructors. */ - bool (*use_atexit_for_cxa_atexit) (void); - /* TYPE is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that - has just been defined. Use this hook to make adjustments to the - class (eg, tweak visibility or perform any other required - target modifications). */ - void (*adjust_class_at_definition) (tree type); - } cxx; + struct cxx cxx; /* Functions and data for emulated TLS support. */ - struct emutls { - /* Name of the address and common functions. */ - const char *get_address; - const char *register_common; - - /* Prefixes for proxy variable and template. */ - const char *var_section; - const char *tmpl_section; - - /* Prefixes for proxy variable and template. */ - const char *var_prefix; - const char *tmpl_prefix; - - /* Function to generate field definitions of the proxy variable. */ - tree (*var_fields) (tree, tree *); - - /* Function to initialize a proxy variable. */ - tree (*var_init) (tree, tree, tree); - - /* Whether we are allowed to alter the usual alignment of the - proxy variable. */ - bool var_align_fixed; - - /* Whether we can emit debug information for TLS vars. */ - bool debug_form_tls_address; - } emutls; - - struct target_option_hooks { - /* Function to validate the attribute((option(...))) strings or NULL. If - the option is validated, it is assumed that DECL_FUNCTION_SPECIFIC will - be filled in in the function decl node. */ - bool (*valid_attribute_p) (tree, tree, tree, int); - - /* Function to save any extra target state in the target options - structure. */ - void (*save) (struct cl_target_option *); - - /* Function to restore any extra target state from the target options - structure. */ - void (*restore) (struct cl_target_option *); - - /* Function to print any extra target state from the target options - structure. */ - void (*print) (FILE *, int, struct cl_target_option *); - - /* Function to parse arguments to be validated for #pragma option, and to - change the state if the options are valid. If the first argument is - NULL, the second argument specifies the default options to use. Return - true if the options are valid, and set the current state. */ - bool (*pragma_parse) (tree, tree); - - /* Function to determine if one function can inline another function. */ - bool (*can_inline_p) (tree, tree); - } target_option; + struct emutls emutls; + + struct target_option_hooks target_option; /* For targets that need to mark extra registers as live on entry to the function, they should define this target hook and set their diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 5b7b8751ba6..8baf6277b07 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -531,6 +531,12 @@ default_hidden_stack_protect_fail (void) #endif } +enum reg_class +default_branch_target_register_class (void) +{ + return NO_REGS; +} + bool hook_bool_const_rtx_commutative_p (const_rtx x, int outer_code ATTRIBUTE_UNUSED) diff --git a/gcc/targhooks.h b/gcc/targhooks.h index 07ade39a769..20816b32ca9 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -85,6 +85,7 @@ extern int hook_int_CUMULATIVE_ARGS_mode_tree_bool_0 (CUMULATIVE_ARGS *, enum machine_mode, tree, bool); extern const char *hook_invalid_arg_for_unprototyped_fn (const_tree, const_tree, const_tree); +extern enum reg_class default_branch_target_register_class (void); extern bool hook_bool_const_rtx_commutative_p (const_rtx, int); extern rtx default_function_value (const_tree, const_tree, bool); extern rtx default_internal_arg_pointer (void); diff --git a/gcc/timevar.c b/gcc/timevar.c index d0aa15b5ca1..336037fd72d 100644 --- a/gcc/timevar.c +++ b/gcc/timevar.c @@ -1,5 +1,5 @@ /* Timing variables for measuring compiler performance. - Copyright (C) 2000, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 2000, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Contributed by Alex Samuel <samuel@codesourcery.com> This file is part of GCC. @@ -266,6 +266,10 @@ timevar_push_1 (timevar_id_t timevar) struct timevar_stack_def *context; struct timevar_time_def now; + /* Completely ignore TV_NONE. */ + if (timevar == TV_NONE) + return; + /* Mark this timing variable as used. */ tv->used = 1; @@ -312,6 +316,10 @@ timevar_pop_1 (timevar_id_t timevar) struct timevar_time_def now; struct timevar_stack_def *popped = stack; + /* Completely ignore TV_NONE. */ + if (timevar == TV_NONE) + return; + gcc_assert (&timevars[timevar] == stack->timevar); /* What time is it? */ @@ -418,6 +426,9 @@ timevar_print (FILE *fp) end. */ if ((timevar_id_t) id == TV_TOTAL) continue; + /* Always ignore TV_NONE. */ + if ((timevar_id_t) id == TV_NONE) + continue; /* Don't print timing variables that were never used. */ if (!tv->used) diff --git a/gcc/timevar.def b/gcc/timevar.def index c27ee161849..4c868fceef9 100644 --- a/gcc/timevar.def +++ b/gcc/timevar.def @@ -202,3 +202,8 @@ DEFTIMEVAR (TV_TREE_IFCOMBINE , "tree if-combine") /* Everything else in rest_of_compilation not included above. */ DEFTIMEVAR (TV_REST_OF_COMPILATION , "rest of compilation") + +/* A special value used to indicate that no timevar is specified. + This is used by optimization passes. timevar_push and friends + ignore this value. */ +DEFTIMEVAR (TV_NONE , "special ignored value") diff --git a/gcc/toplev.h b/gcc/toplev.h index 2324b068f77..88b809ee093 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -113,7 +113,17 @@ extern void target_reinit (void); /* A unique local time stamp, might be zero if none is available. */ extern unsigned local_tick; +#ifdef __cplusplus +extern "C" { +#endif + +/* This is used by cpplib and libiberty. */ extern const char *progname; + +#ifdef __cplusplus +} +#endif + extern const char *dump_base_name; extern const char *aux_base_name; extern const char *aux_info_file_name; @@ -167,11 +177,13 @@ extern void decode_d_option (const char *); extern bool fast_math_flags_set_p (void); extern bool fast_math_flags_struct_set_p (struct cl_optimization *); +#ifndef __cplusplus /* Return log2, or -1 if not exact. */ extern int exact_log2 (unsigned HOST_WIDE_INT); /* Return floor of log2, with -1 for zero. */ extern int floor_log2 (unsigned HOST_WIDE_INT); +#endif /* Inline versions of the above for speed. */ #if GCC_VERSION >= 3004 @@ -186,13 +198,19 @@ extern int floor_log2 (unsigned HOST_WIDE_INT); # define CTZ_HWI __builtin_ctz # endif -extern inline int +#ifndef __cplusplus +extern +#endif +inline int floor_log2 (unsigned HOST_WIDE_INT x) { return x ? HOST_BITS_PER_WIDE_INT - 1 - (int) CLZ_HWI (x) : -1; } -extern inline int +#ifndef __cplusplus +extern +#endif +inline int exact_log2 (unsigned HOST_WIDE_INT x) { return x == (x & -x) && x ? (int) CTZ_HWI (x) : -1; diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 9c5b2e6c58c..eba591bb7c0 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -895,7 +895,7 @@ static struct label_record /* Callback for for_each_eh_region. Helper for cleanup_dead_labels. */ static void -update_eh_label (struct eh_region *region) +update_eh_label (struct eh_region_d *region) { tree old_label = get_eh_region_tree_label (region); if (old_label) @@ -2075,7 +2075,7 @@ struct gimple_opt_pass pass_remove_useless_stmts = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -4737,7 +4737,7 @@ gimple_redirect_edge_and_branch (edge e, basic_block dest) gsi = gsi_last_bb (bb); stmt = gsi_end_p (gsi) ? NULL : gsi_stmt (gsi); - switch (stmt ? gimple_code (stmt) : ERROR_MARK) + switch (stmt ? gimple_code (stmt) : GIMPLE_ERROR_MARK) { case GIMPLE_COND: /* For COND_EXPR, we only need to redirect the edge. */ @@ -7126,7 +7126,7 @@ struct gimple_opt_pass pass_warn_function_return = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -7160,7 +7160,7 @@ struct gimple_opt_pass pass_warn_function_noreturn = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 5a3cb74d391..3af10f30a22 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -37,13 +37,17 @@ along with GCC; see the file COPYING3. If not see out whether a complex number is degenerate in some way, having only real or only complex parts. */ -typedef enum +enum { UNINITIALIZED = 0, ONLY_REAL = 1, ONLY_IMAG = 2, VARYING = 3 -} complex_lattice_t; +}; + +/* The type complex_lattice_t holds combinations of the above + constants. */ +typedef int complex_lattice_t; #define PAIR(a, b) ((a) << 2 | (b)) @@ -963,9 +967,11 @@ expand_complex_libcall (gimple_stmt_iterator *gsi, tree ar, tree ai, gcc_assert (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT); if (code == MULT_EXPR) - bcode = BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT; + bcode = ((enum built_in_function) + (BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT)); else if (code == RDIV_EXPR) - bcode = BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT; + bcode = ((enum built_in_function) + (BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT)); else gcc_unreachable (); fn = built_in_decls[bcode]; @@ -1624,7 +1630,7 @@ struct gimple_opt_pass pass_lower_complex = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1675,7 +1681,7 @@ struct gimple_opt_pass pass_lower_complex_O0 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index ea67f1d00b4..3d9379334e4 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -284,7 +284,8 @@ print_direction_vector (FILE *outf, for (eq = 0; eq < length; eq++) { - enum data_dependence_direction dir = dirv[eq]; + enum data_dependence_direction dir = + (enum data_dependence_direction) dirv[eq]; switch (dir) { diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c index ffac189f449..ed54d1b0388 100644 --- a/gcc/tree-dump.c +++ b/gcc/tree-dump.c @@ -859,11 +859,11 @@ dump_register (const char *suffix, const char *swtch, const char *glob, /* Return the dump_file_info for the given phase. */ struct dump_file_info * -get_dump_file_info (enum tree_dump_index phase) +get_dump_file_info (int phase) { if (phase < TDI_end) return &dump_files[phase]; - else if (phase - TDI_end >= extra_dump_files_in_use) + else if ((size_t) (phase - TDI_end) >= extra_dump_files_in_use) return NULL; else return extra_dump_files + (phase - TDI_end); @@ -874,7 +874,7 @@ get_dump_file_info (enum tree_dump_index phase) If the dump is not enabled, returns NULL. */ char * -get_dump_file_name (enum tree_dump_index phase) +get_dump_file_name (int phase) { char dump_id[10]; struct dump_file_info *dfi; @@ -911,7 +911,7 @@ get_dump_file_name (enum tree_dump_index phase) Multiple calls will reopen and append to the dump file. */ FILE * -dump_begin (enum tree_dump_index phase, int *flag_ptr) +dump_begin (int phase, int *flag_ptr) { char *name; struct dump_file_info *dfi; @@ -939,7 +939,7 @@ dump_begin (enum tree_dump_index phase, int *flag_ptr) TDI_tree_all, return nonzero if any dump is enabled. */ int -dump_enabled_p (enum tree_dump_index phase) +dump_enabled_p (int phase) { if (phase == TDI_tree_all) { @@ -962,7 +962,7 @@ dump_enabled_p (enum tree_dump_index phase) /* Returns nonzero if tree dump PHASE has been initialized. */ int -dump_initialized_p (enum tree_dump_index phase) +dump_initialized_p (int phase) { struct dump_file_info *dfi = get_dump_file_info (phase); return dfi->state > 0; @@ -971,7 +971,7 @@ dump_initialized_p (enum tree_dump_index phase) /* Returns the switch name of PHASE. */ const char * -dump_flag_name (enum tree_dump_index phase) +dump_flag_name (int phase) { struct dump_file_info *dfi = get_dump_file_info (phase); return dfi->swtch; @@ -981,7 +981,7 @@ dump_flag_name (enum tree_dump_index phase) dump_begin. */ void -dump_end (enum tree_dump_index phase ATTRIBUTE_UNUSED, FILE *stream) +dump_end (int phase ATTRIBUTE_UNUSED, FILE *stream) { fclose (stream); } @@ -1102,7 +1102,7 @@ dump_switch_p (const char *arg) /* Dump FUNCTION_DECL FN as tree dump PHASE. */ void -dump_function (enum tree_dump_index phase, tree fn) +dump_function (int phase, tree fn) { FILE *stream; int flags; diff --git a/gcc/tree-dump.h b/gcc/tree-dump.h index ba1b4a4ca26..86017e942dd 100644 --- a/gcc/tree-dump.h +++ b/gcc/tree-dump.h @@ -89,7 +89,7 @@ extern void dump_string_field (dump_info_p, const char *, const char *); extern void dump_stmt (dump_info_p, const_tree); extern void queue_and_dump_index (dump_info_p, const char *, const_tree, int); extern void queue_and_dump_type (dump_info_p, const_tree); -extern void dump_function (enum tree_dump_index, tree); +extern void dump_function (int, tree); extern void dump_function_to_file (tree, FILE *, int); extern void debug_function (tree, int); extern int dump_flag (dump_info_p, int, const_tree); diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index e4fbaf7327c..ea3605b6542 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -87,7 +87,7 @@ struct_ptr_hash (const void *a) of space by only allocating memory for those that can throw. */ static void -record_stmt_eh_region (struct eh_region *region, gimple t) +record_stmt_eh_region (struct eh_region_d *region, gimple t) { if (!region) return; @@ -351,8 +351,8 @@ struct leh_state /* What's "current" while constructing the eh region tree. These correspond to variables of the same name in cfun->eh, which we don't have easy access to. */ - struct eh_region *cur_region; - struct eh_region *prev_try; + struct eh_region_d *cur_region; + struct eh_region_d *prev_try; /* Processing of TRY_FINALLY requires a bit more state. This is split out into a separate structure so that we don't have to @@ -360,6 +360,18 @@ struct leh_state struct leh_tf_state *tf; }; +/* See 'goto_queue' in struct leh_tf_state. */ +struct goto_queue_node +{ + treemple stmt; + gimple_seq repl_stmt; + gimple cont_stmt; + int index; + /* this is used when index >= 0 to indicate that stmt is a label(as + opposed to a goto stmt) */ + int is_label; +}; + struct leh_tf_state { /* Pointer to the GIMPLE_TRY_FINALLY node under discussion. The @@ -376,7 +388,7 @@ struct leh_tf_state struct leh_state *outer; /* The exception region created for it. */ - struct eh_region *region; + struct eh_region_d *region; /* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN statements that are seen to escape this GIMPLE_TRY_FINALLY node. @@ -386,15 +398,7 @@ struct leh_tf_state REPL_STMT is the sequence used to replace the goto/return statement. CONT_STMT is used to store the statement that allows the return/goto to jump to the original destination. */ - struct goto_queue_node { - treemple stmt; - gimple_seq repl_stmt; - gimple cont_stmt; - int index; - /* this is used when index >= 0 to indicate that stmt is a label(as - opposed to a goto stmt) */ - int is_label; - } *goto_queue; + struct goto_queue_node *goto_queue; size_t goto_queue_size; size_t goto_queue_active; @@ -1643,7 +1647,7 @@ lower_try_finally (struct leh_state *state, gimple tp) static gimple_seq lower_catch (struct leh_state *state, gimple tp) { - struct eh_region *try_region; + struct eh_region_d *try_region; struct leh_state this_state; gimple_stmt_iterator gsi; tree out_label; @@ -1663,7 +1667,7 @@ lower_catch (struct leh_state *state, gimple tp) out_label = NULL; for (gsi = gsi_start (gimple_try_cleanup (tp)); !gsi_end_p (gsi); ) { - struct eh_region *catch_region; + struct eh_region_d *catch_region; tree eh_label; gimple x, gcatch; @@ -1706,7 +1710,7 @@ static gimple_seq lower_eh_filter (struct leh_state *state, gimple tp) { struct leh_state this_state; - struct eh_region *this_region; + struct eh_region_d *this_region; gimple inner; tree eh_label; @@ -1747,7 +1751,7 @@ static gimple_seq lower_cleanup (struct leh_state *state, gimple tp) { struct leh_state this_state; - struct eh_region *this_region; + struct eh_region_d *this_region; struct leh_tf_state fake_tf; gimple_seq result; @@ -1931,7 +1935,7 @@ struct gimple_opt_pass pass_lower_eh = /* Construct EH edges for STMT. */ static void -make_eh_edge (struct eh_region *region, void *data) +make_eh_edge (struct eh_region_d *region, void *data) { gimple stmt; tree lab; @@ -1974,7 +1978,7 @@ static bool mark_eh_edge_found_error; field, output error if something goes wrong. */ static void -mark_eh_edge (struct eh_region *region, void *data) +mark_eh_edge (struct eh_region_d *region, void *data) { gimple stmt; tree lab; diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 40829675b84..0c6a23c9678 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -231,8 +231,10 @@ typedef struct /* Aliasing information for SSA_NAMEs representing pointer variables. */ struct ptr_info_def GTY(()) { - /* Mask of reasons this pointer's value escapes the function. */ - ENUM_BITFIELD (escape_type) escape_mask : 9; + /* Mask of reasons this pointer's value escapes the function. This + actually holds enum escape_type values, or'd together. So, it + must be wide enough to hold all values from the enum. */ + unsigned int escape_mask : 9; /* Nonzero if points-to analysis couldn't determine where this pointer is pointing to. */ @@ -380,8 +382,10 @@ struct var_ann_d GTY(()) ENUM_BITFIELD (noalias_state) noalias_state : 2; /* Mask of values saying the reasons why this variable has escaped - the function. */ - ENUM_BITFIELD (escape_type) escape_mask : 9; + the function. This actually holds enum escape_type values, or'd + together. So, it must be wide enough to hold all values from the + enum. */ + unsigned int escape_mask : 9; /* Memory partition tag assigned to this symbol. */ tree mpt; diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 0e41d5fa679..3d828edd7a7 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -1162,7 +1162,7 @@ struct gimple_opt_pass pass_if_conversion = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h index 2a4e38b1657..280079eb8b2 100644 --- a/gcc/tree-inline.h +++ b/gcc/tree-inline.h @@ -25,6 +25,14 @@ along with GCC; see the file COPYING3. If not see #include "pointer-set.h" +/* Possible desired behaviors wrt call graph edges. */ + +enum copy_body_cge_which { + CB_CGE_DUPLICATE, + CB_CGE_MOVE, + CB_CGE_MOVE_CLONES +}; + /* Data required for function body duplication. */ typedef struct copy_body_data @@ -79,11 +87,7 @@ typedef struct copy_body_data /* Indicate the desired behavior wrt call graph edges. We can either duplicate the edge (inlining, cloning), move the edge (versioning, parallelization), or move the edges of the clones (saving). */ - enum copy_body_cge_which { - CB_CGE_DUPLICATE, - CB_CGE_MOVE, - CB_CGE_MOVE_CLONES - } transform_call_graph_edges; + enum copy_body_cge_which transform_call_graph_edges; /* True if a new CFG should be created. False for inlining, true for everything else. */ diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 928333ba4ba..2c0605dd886 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -325,7 +325,7 @@ get_ssa_name_ann (tree name) info = VEC_index (ssa_name_info_p, info_for_ssa_name, ver); if (info->age < current_info_for_ssa_name_age) { - info->need_phi_state = 0; + info->need_phi_state = NEED_PHI_STATE_UNKNOWN; info->current_def = NULL_TREE; info->age = current_info_for_ssa_name_age; } @@ -2287,7 +2287,7 @@ struct gimple_opt_pass pass_build_ssa = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_referenced_vars, /* properties_required */ PROP_ssa, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index 219d17e7002..f6b39bb7bbe 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -818,7 +818,8 @@ rdg_flag_similar_memory_accesses (struct graph *rdg, bitmap partition, /* If the node I has two uses, then keep these together in the same PARTITION. */ - for (n = 0, e = rdg->vertices[i].succ; e; e = e->succ_next, n++); + for (n = 0, e = rdg->vertices[i].succ; e; e = e->succ_next, n++) + ; if (n > 1) rdg_flag_all_uses (rdg, i, partition, loops, processed, &foo); diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c index 831fcc1791a..fe10cd1023b 100644 --- a/gcc/tree-mudflap.c +++ b/gcc/tree-mudflap.c @@ -1341,7 +1341,7 @@ struct gimple_opt_pass pass_mudflap_1 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_any, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1360,7 +1360,7 @@ struct gimple_opt_pass pass_mudflap_2 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_gimple_leh, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c index 3d1c7eb1d6e..0774a1966b5 100644 --- a/gcc/tree-nomudflap.c +++ b/gcc/tree-nomudflap.c @@ -100,7 +100,7 @@ struct gimple_opt_pass pass_mudflap_1 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -119,7 +119,7 @@ struct gimple_opt_pass pass_mudflap_2 = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -133,6 +133,9 @@ struct gimple_opt_pass pass_mudflap_2 = We prepare a little dummy struct here. */ +#ifdef __cplusplus +extern +#endif const struct ggc_root_tab gt_ggc_r_gt_tree_mudflap_h[] = { LAST_GGC_ROOT_TAB }; diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c index 7e811cf8c9d..bf4b429e37f 100644 --- a/gcc/tree-nrv.c +++ b/gcc/tree-nrv.c @@ -349,7 +349,7 @@ struct gimple_opt_pass pass_return_slot = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index 7e346a9f55d..4e0157ec605 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -1111,7 +1111,7 @@ struct gimple_opt_pass pass_object_sizes = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index 2640167face..656239e9dc2 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -72,7 +72,7 @@ struct gimple_opt_pass pass_all_optimizations = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -100,7 +100,7 @@ struct simple_ipa_opt_pass pass_early_local_passes = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -141,7 +141,7 @@ struct gimple_opt_pass pass_all_early_optimizations = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -172,7 +172,7 @@ struct gimple_opt_pass pass_cleanup_cfg = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -207,7 +207,7 @@ struct gimple_opt_pass pass_cleanup_cfg_post_optimizing = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -241,7 +241,7 @@ struct gimple_opt_pass pass_free_datastructures = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -270,7 +270,7 @@ struct gimple_opt_pass pass_free_cfg_annotations = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -354,7 +354,7 @@ struct gimple_opt_pass pass_init_datastructures = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index db437a62538..c62645e7bec 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_TREE_PASS_H #define GCC_TREE_PASS_H 1 +#include "timevar.h" + /* In tree-dump.c */ /* Different tree dump places. When you add new tree dump places, @@ -76,14 +78,14 @@ enum tree_dump_index #define TDF_RHS_ONLY (1 << 17) /* a flag to only print the RHS of a gimple stmt. */ -extern char *get_dump_file_name (enum tree_dump_index); -extern int dump_enabled_p (enum tree_dump_index); -extern int dump_initialized_p (enum tree_dump_index); -extern FILE *dump_begin (enum tree_dump_index, int *); -extern void dump_end (enum tree_dump_index, FILE *); +extern char *get_dump_file_name (int); +extern int dump_enabled_p (int); +extern int dump_initialized_p (int); +extern FILE *dump_begin (int, int *); +extern void dump_end (int, FILE *); extern void dump_node (const_tree, int, FILE *); extern int dump_switch_p (const char *); -extern const char *dump_flag_name (enum tree_dump_index); +extern const char *dump_flag_name (int); /* Global variables used to communicate with passes. */ extern FILE *dump_file; @@ -91,19 +93,22 @@ extern int dump_flags; extern const char *dump_file_name; /* Return the dump_file_info for the given phase. */ -extern struct dump_file_info *get_dump_file_info (enum tree_dump_index); +extern struct dump_file_info *get_dump_file_info (int); + +/* The possible types of optimization pass. */ +enum opt_pass_type { + GIMPLE_PASS, + RTL_PASS, + SIMPLE_IPA_PASS, + IPA_PASS +}; /* Describe one pass; this is the common part shared across different pass types. */ struct opt_pass { /* Optimization pass type. */ - enum opt_pass_type { - GIMPLE_PASS, - RTL_PASS, - SIMPLE_IPA_PASS, - IPA_PASS - } type; + enum opt_pass_type type; /* Terse name of the pass used as a fragment of the dump file name. If the name starts with a star, no dump happens. */ const char *name; @@ -128,7 +133,7 @@ struct opt_pass /* The timevar id associated with this pass. */ /* ??? Ideally would be dynamically assigned. */ - unsigned int tv_id; + timevar_id_t tv_id; /* Sets of properties input and output from this pass. */ unsigned int properties_required; @@ -157,7 +162,7 @@ struct cgraph_node; /* Description of IPA pass with generate summary, write, execute, read and transform stages. */ -struct ipa_opt_pass +struct ipa_opt_pass_d { struct opt_pass pass; @@ -390,10 +395,10 @@ extern struct gimple_opt_pass pass_build_cgraph_edges; extern struct gimple_opt_pass pass_reset_cc_flags; /* IPA Passes */ -extern struct ipa_opt_pass pass_ipa_inline; -extern struct ipa_opt_pass pass_ipa_cp; -extern struct ipa_opt_pass pass_ipa_reference; -extern struct ipa_opt_pass pass_ipa_pure_const; +extern struct ipa_opt_pass_d pass_ipa_inline; +extern struct ipa_opt_pass_d pass_ipa_cp; +extern struct ipa_opt_pass_d pass_ipa_reference; +extern struct ipa_opt_pass_d pass_ipa_pure_const; extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg; extern struct simple_ipa_opt_pass pass_ipa_early_inline; diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index bd82a8016fb..6abb25bd9ba 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -210,7 +210,7 @@ along with GCC; see the file COPYING3. If not see /* Data references (or phi nodes that carry data reference values across loop iterations). */ -typedef struct dref +typedef struct dref_d { /* The reference itself. */ struct data_reference *ref; @@ -775,7 +775,7 @@ split_data_refs_to_components (struct loop *loop, comps[ca] = comp; } - dataref = XCNEW (struct dref); + dataref = XCNEW (struct dref_d); dataref->ref = dr; dataref->stmt = DR_STMT (dr); dataref->offset = double_int_zero; @@ -1126,7 +1126,7 @@ find_looparound_phi (struct loop *loop, dref ref, dref root) static void insert_looparound_copy (chain_p chain, dref ref, gimple phi) { - dref nw = XCNEW (struct dref), aref; + dref nw = XCNEW (struct dref_d), aref; unsigned i; nw->stmt = phi; @@ -2362,7 +2362,7 @@ combine_chains (chain_p ch1, chain_p ch2) for (i = 0; (VEC_iterate (dref, ch1->refs, i, r1) && VEC_iterate (dref, ch2->refs, i, r2)); i++) { - nw = XCNEW (struct dref); + nw = XCNEW (struct dref_d); nw->stmt = stmt_combining_refs (r1, r2); nw->distance = r1->distance; diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 4dd4fb71321..f407dba4e16 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -547,7 +547,7 @@ set_initial_properties (struct alias_info *ai) tree var; tree ptr; bool any_pt_anything = false; - enum escape_type pt_anything_mask = 0; + int pt_anything_mask = 0; FOR_EACH_REFERENCED_VAR (var, rvi) { @@ -3767,7 +3767,7 @@ struct gimple_opt_pass pass_reset_cc_flags = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_referenced_vars |PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -3789,7 +3789,7 @@ struct gimple_opt_pass pass_build_alias = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa, /* properties_required */ PROP_alias, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 5080cc32ce7..eabd2b2695d 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -3300,7 +3300,7 @@ struct gimple_opt_pass pass_fold_builtins = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index a340c5e2103..94d96874f36 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -772,7 +772,7 @@ struct gimple_opt_pass pass_simple_dse = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index c568cf0e53a..a26efa1c05f 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -564,7 +564,7 @@ struct gimple_opt_pass pass_cse_reciprocals = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -778,7 +778,7 @@ struct gimple_opt_pass pass_cse_sincos = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -870,7 +870,7 @@ struct gimple_opt_pass pass_convert_to_rsqrt = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index dc55676c4a3..74f6910cffa 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1150,7 +1150,7 @@ vn_reference_insert_pieces (VEC (tree, gc) *vuses, /* Compute and return the hash value for nary operation VBO1. */ -inline hashval_t +hashval_t vn_nary_op_compute_hash (const vn_nary_op_t vno1) { hashval_t hash = 0; diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 8be2961f895..cbc473ea48c 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1644,7 +1644,7 @@ struct gimple_opt_pass pass_early_warn_uninitialized = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1663,7 +1663,7 @@ struct gimple_opt_pass pass_late_warn_uninitialized = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1807,7 +1807,7 @@ struct gimple_opt_pass pass_update_address_taken = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index f02bbe6e123..41f4782b803 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -353,7 +353,7 @@ struct gimple_opt_pass pass_release_ssa_names = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index 00fce82e750..cab2d085a0a 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -905,7 +905,7 @@ struct gimple_opt_pass pass_stdarg = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 061d6c95a4e..9199e07c6d1 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -1003,7 +1003,7 @@ struct gimple_opt_pass pass_tail_recursion = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -1022,7 +1022,7 @@ struct gimple_opt_pass pass_tail_calls = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index e753ccbabf4..2362e21d96f 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -2750,8 +2750,9 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, slp_tree *node, unsigned int i; VEC (gimple, heap) *stmts = SLP_TREE_SCALAR_STMTS (*node); gimple stmt = VEC_index (gimple, stmts, 0); - enum vect_def_type first_stmt_dt0 = 0, first_stmt_dt1 = 0; - enum tree_code first_stmt_code = 0, rhs_code; + enum vect_def_type first_stmt_dt0 = vect_unknown_def_type; + enum vect_def_type first_stmt_dt1 = vect_unknown_def_type; + enum tree_code first_stmt_code = ERROR_MARK, rhs_code; tree first_stmt_def1_type = NULL_TREE, first_stmt_def0_type = NULL_TREE; tree lhs; bool stop_recursion = false, need_same_oprnds = false; diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 13138ddd464..5dd153c93a2 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -555,7 +555,7 @@ struct gimple_opt_pass pass_lower_vector = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ @@ -575,7 +575,7 @@ struct gimple_opt_pass pass_lower_vector_ssa = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 8486775ab77..b4c496cc49b 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -697,7 +697,7 @@ vect_pattern_recog_1 ( } else { - enum tree_code vec_mode; + enum machine_mode vec_mode; enum insn_code icode; optab optab; diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index a048342d8be..13f152ba191 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -2560,7 +2560,7 @@ vect_create_epilog_for_reduction (tree vect_def, gimple stmt, } else { - enum tree_code shift_code = 0; + enum tree_code shift_code = ERROR_MARK; bool have_whole_vector_shift = true; int bit_offset; int element_bitsize = tree_low_cst (bitsize, 1); @@ -2828,7 +2828,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi, tree vectype = STMT_VINFO_VECTYPE (stmt_info); loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); - enum tree_code code, orig_code, epilog_reduc_code = 0; + enum tree_code code, orig_code, epilog_reduc_code = ERROR_MARK; enum machine_mode vec_mode; int op_type; optab optab, reduc_optab; @@ -3064,13 +3064,13 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi, { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "no optab for reduction."); - epilog_reduc_code = NUM_TREE_CODES; + epilog_reduc_code = (enum tree_code) NUM_TREE_CODES; } if (optab_handler (reduc_optab, vec_mode)->insn_code == CODE_FOR_nothing) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "reduc op not supported by target."); - epilog_reduc_code = NUM_TREE_CODES; + epilog_reduc_code = (enum tree_code) NUM_TREE_CODES; } if (!vec_stmt) /* transformation not required. */ diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index 2c5d9cca136..6b415f64f15 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1450,9 +1450,9 @@ vect_set_verbosity_level (const char *val) vl = atoi (val); if (vl < MAX_VERBOSITY_LEVEL) - vect_verbosity_level = vl; + vect_verbosity_level = (enum verbosity_levels) vl; else - vect_verbosity_level = MAX_VERBOSITY_LEVEL - 1; + vect_verbosity_level = (enum verbosity_levels) (MAX_VERBOSITY_LEVEL - 1); } @@ -1533,7 +1533,7 @@ new_stmt_vec_info (gimple stmt, loop_vec_info loop_vinfo) STMT_VINFO_TYPE (res) = undef_vec_info_type; STMT_VINFO_STMT (res) = stmt; STMT_VINFO_LOOP_VINFO (res) = loop_vinfo; - STMT_VINFO_RELEVANT (res) = 0; + STMT_VINFO_RELEVANT (res) = vect_unused_in_loop; STMT_VINFO_LIVE_P (res) = false; STMT_VINFO_VECTYPE (res) = NULL; STMT_VINFO_VEC_STMT (res) = NULL; @@ -1555,7 +1555,7 @@ new_stmt_vec_info (gimple stmt, loop_vec_info loop_vinfo) STMT_VINFO_SAME_ALIGN_REFS (res) = VEC_alloc (dr_p, heap, 5); STMT_VINFO_INSIDE_OF_LOOP_COST (res) = 0; STMT_VINFO_OUTSIDE_OF_LOOP_COST (res) = 0; - STMT_SLP_TYPE (res) = 0; + STMT_SLP_TYPE (res) = loop_vect; DR_GROUP_FIRST_DR (res) = NULL; DR_GROUP_NEXT_DR (res) = NULL; DR_GROUP_SIZE (res) = 0; @@ -1895,7 +1895,7 @@ vect_supportable_dr_alignment (struct data_reference *dr) gimple stmt = DR_STMT (dr); stmt_vec_info stmt_info = vinfo_for_stmt (stmt); tree vectype = STMT_VINFO_VECTYPE (stmt_info); - enum machine_mode mode = (int) TYPE_MODE (vectype); + enum machine_mode mode = TYPE_MODE (vectype); struct loop *vect_loop = LOOP_VINFO_LOOP (STMT_VINFO_LOOP_VINFO (stmt_info)); bool nested_in_vect_loop = nested_in_vect_loop_p (vect_loop, stmt); bool invariant_in_outerloop = false; @@ -2157,7 +2157,7 @@ supportable_widening_operation (enum tree_code code, gimple stmt, tree vectype, struct loop *vect_loop = LOOP_VINFO_LOOP (loop_info); bool ordered_p; enum machine_mode vec_mode; - enum insn_code icode1 = 0, icode2 = 0; + enum insn_code icode1 = (enum insn_code) 0, icode2 = (enum insn_code) 0; optab optab1, optab2; tree type = gimple_expr_type (stmt); tree wide_vectype = get_vectype_for_scalar_type (type); @@ -2909,7 +2909,7 @@ struct simple_ipa_opt_pass pass_ipa_increase_alignment = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - 0, /* tv_id */ + TV_NONE, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ diff --git a/gcc/tree.c b/gcc/tree.c index d0117a0a4fe..eb4c19f2135 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4834,7 +4834,8 @@ attribute_list_contained (const_tree l1, const_tree l2) t1 != 0 && t2 != 0 && TREE_PURPOSE (t1) == TREE_PURPOSE (t2) && TREE_VALUE (t1) == TREE_VALUE (t2); - t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2)); + t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2)) + ; /* Maybe the lists are equal. */ if (t1 == 0 && t2 == 0) @@ -7121,7 +7122,7 @@ tree_range_check_failed (const_tree node, const char *file, int line, { char *buffer; unsigned length = 0; - enum tree_code c; + int c; for (c = c1; c <= c2; ++c) length += 4 + strlen (tree_code_name[c]); @@ -7182,7 +7183,7 @@ omp_clause_range_check_failed (const_tree node, const char *file, int line, { char *buffer; unsigned length = 0; - enum omp_clause_code c; + int c; for (c = c1; c <= c2; ++c) length += 4 + strlen (omp_clause_code_name[c]); @@ -7785,7 +7786,7 @@ build_common_builtin_nodes (void) complex. Further, we can do slightly better with folding these beasties if the real and complex parts of the arguments are separate. */ { - enum machine_mode mode; + int mode; for (mode = MIN_MODE_COMPLEX_FLOAT; mode <= MAX_MODE_COMPLEX_FLOAT; ++mode) { @@ -7794,7 +7795,7 @@ build_common_builtin_nodes (void) enum built_in_function mcode, dcode; tree type, inner_type; - type = lang_hooks.types.type_for_mode (mode, 0); + type = lang_hooks.types.type_for_mode ((enum machine_mode) mode, 0); if (type == NULL) continue; inner_type = TREE_TYPE (type); @@ -7805,8 +7806,10 @@ build_common_builtin_nodes (void) tmp = tree_cons (NULL_TREE, inner_type, tmp); ftype = build_function_type (type, tmp); - mcode = BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT; - dcode = BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT; + mcode = ((enum built_in_function) + (BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT)); + dcode = ((enum built_in_function) + (BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT)); for (p = GET_MODE_NAME (mode), q = mode_name_buf; *p; p++, q++) *q = TOLOWER (*p); diff --git a/gcc/tree.h b/gcc/tree.h index e1c52e135b3..26c201e7573 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1130,7 +1130,9 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag) #define PREDICT_EXPR_OUTCOME(NODE) \ - (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag) + ((enum prediction) PREDICT_EXPR_CHECK(NODE)->base.addressable_flag) +#define SET_PREDICT_EXPR_OUTCOME(NODE, OUTCOME) \ + (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag = (int) OUTCOME) #define PREDICT_EXPR_PREDICTOR(NODE) \ ((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0)) diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index b9ff8c57b25..1e121a6fe4c 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -871,13 +871,13 @@ var_reg_set (dataflow_set *set, rtx loc, enum var_init_status initialized, set_variable_part (set, loc, decl, offset, initialized, set_src); } -static int +static enum var_init_status get_init_value (dataflow_set *set, rtx loc, tree decl) { void **slot; variable var; int i; - int ret_val = VAR_INIT_STATUS_UNKNOWN; + enum var_init_status ret_val = VAR_INIT_STATUS_UNKNOWN; if (! flag_var_tracking_uninit) return VAR_INIT_STATUS_INITIALIZED; diff --git a/gcc/varasm.c b/gcc/varasm.c index e5b9f35fee9..d1e7460bd8b 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -2628,7 +2628,7 @@ assemble_integer (rtx x, unsigned int size, unsigned int align, int force) enum machine_mode omode, imode; unsigned int subalign; unsigned int subsize, i; - unsigned char mclass; + enum mode_class mclass; subsize = size > UNITS_PER_WORD? UNITS_PER_WORD : 1; subalign = MIN (align, subsize * BITS_PER_UNIT); @@ -3435,7 +3435,7 @@ const_rtx_hash_1 (rtx *xp, void *data) hwi = INTVAL (x); fold_hwi: { - const int shift = sizeof (hashval_t) * CHAR_BIT; + int shift = sizeof (hashval_t) * CHAR_BIT; const int n = sizeof (HOST_WIDE_INT) / sizeof (hashval_t); int i; diff --git a/gcc/vec.c b/gcc/vec.c index 14567827dcd..93e1c19f379 100644 --- a/gcc/vec.c +++ b/gcc/vec.c @@ -226,7 +226,7 @@ vec_gc_o_reserve_1 (void *vec, int reserve, size_t vec_offset, size_t elt_size, bool exact MEM_STAT_DECL) { struct vec_prefix *pfx = (struct vec_prefix *) vec; - unsigned alloc = alloc = calculate_allocation (pfx, reserve, exact); + unsigned alloc = calculate_allocation (pfx, reserve, exact); if (!alloc) { diff --git a/gcc/vec.h b/gcc/vec.h index adbd16aacbb..96e3cd2d123 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -558,7 +558,7 @@ static inline int VEC_OP (T,base,iterate) \ } \ else \ { \ - *ptr = 0; \ + *ptr = (T) 0; \ return 0; \ } \ } \ diff --git a/include/ChangeLog.cxx b/include/ChangeLog.cxx new file mode 100644 index 00000000000..bf11d9c4612 --- /dev/null +++ b/include/ChangeLog.cxx @@ -0,0 +1,13 @@ +2009-03-06 Ian Lance Taylor <iant@google.com> + + * ansidecl.h: Don't define inline as a macro for C++. + +2009-02-10 Ian Lance Taylor <iant@google.com> + + * ansidecl.h (ATTRIBUTE_UNUSED_LABEL): Define for g++ 4.4. + +2009-01-30 Ian Lance Taylor <iant@google.com> + + * dyn-string.h: Add extern "C". + * fibheap.h: Likewise. + diff --git a/include/ansidecl.h b/include/ansidecl.h index c19955a98a6..1bdb1e65b4f 100644 --- a/include/ansidecl.h +++ b/include/ansidecl.h @@ -173,7 +173,7 @@ So instead we use the macro below and test it against specific values. */ /* inline requires special treatment; it's in C99, and GCC >=2.7 supports it too, but it's not in C89. */ #undef inline -#if __STDC_VERSION__ > 199901L +#if __STDC_VERSION__ > 199901L || defined(__cplusplus) /* it's a keyword */ #else # if GCC_VERSION >= 2007 @@ -256,13 +256,13 @@ So instead we use the macro below and test it against specific values. */ # endif /* GNUC >= 2.96 */ #endif /* ATTRIBUTE_MALLOC */ -/* Attributes on labels were valid as of gcc 2.93. */ +/* Attributes on labels were valid as of gcc 2.93 and as of g++ 4.5. */ #ifndef ATTRIBUTE_UNUSED_LABEL -# if (!defined (__cplusplus) && GCC_VERSION >= 2093) +# if (defined (__cplusplus) ? GCC_VERSION >= 4004 : GCC_VERSION >= 2093) # define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED # else # define ATTRIBUTE_UNUSED_LABEL -# endif /* !__cplusplus && GNUC >= 2.93 */ +# endif #endif /* ATTRIBUTE_UNUSED_LABEL */ #ifndef ATTRIBUTE_UNUSED diff --git a/include/dyn-string.h b/include/dyn-string.h index 44e33deba3a..fd1ae9cad22 100644 --- a/include/dyn-string.h +++ b/include/dyn-string.h @@ -19,6 +19,9 @@ along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +#ifdef __cplusplus +extern "C" { +#endif typedef struct dyn_string { @@ -58,3 +61,7 @@ extern int dyn_string_append_cstr (dyn_string_t, const char *); extern int dyn_string_append_char (dyn_string_t, int); extern int dyn_string_substring (dyn_string_t, dyn_string_t, int, int); extern int dyn_string_eq (dyn_string_t, dyn_string_t); + +#ifdef __cplusplus +} +#endif diff --git a/include/fibheap.h b/include/fibheap.h index 348c4ae2638..74bcfbbb08c 100644 --- a/include/fibheap.h +++ b/include/fibheap.h @@ -42,6 +42,10 @@ Boston, MA 02110-1301, USA. */ #include "ansidecl.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef long fibheapkey_t; typedef struct fibheap @@ -83,4 +87,8 @@ extern void *fibheap_delete_node (fibheap_t, fibnode_t); extern void fibheap_delete (fibheap_t); extern fibheap_t fibheap_union (fibheap_t, fibheap_t); +#ifdef __cplusplus +} +#endif + #endif /* _FIBHEAP_H_ */ diff --git a/libcpp/ChangeLog.cxx b/libcpp/ChangeLog.cxx new file mode 100644 index 00000000000..14aac13fafb --- /dev/null +++ b/libcpp/ChangeLog.cxx @@ -0,0 +1,26 @@ +2009-01-30 Ian Lance Taylor <iant@google.com> + + * include/symtab.h: Use extern "C" for C++. + * include/line-map.h: Likewise. + * include/internal.h: Likewise. + +2008-07-05 Tom Tromey <tromey@redhat.com> + + * include/mkdeps.h: Use 'extern "C"'. + +2008-07-03 Tom Tromey <tromey@redhat.com> + + * include/symtab.h (cpp_hash_table): Rename from hash_table. + * symtab.c, init.c, identifiers.c, internal.h: Update all users. + +2008-06-21 Tom Tromey <tromey@redhat.com> + + * include/cpplib.h (enum cpp_builtin_type): Rename from + builtin_type. + (union _cpp_hashnode_value) <builtin>: Update. + * init.c (cpp_init_special_builtins): Update. + +Local Variables: +mode: change-log +change-log-default-name: "ChangeLog.cxx" +End: diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c index 41f32a2bbae..575ca0aebac 100644 --- a/libcpp/identifiers.c +++ b/libcpp/identifiers.c @@ -1,6 +1,6 @@ /* Hash tables for the CPP library. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002, 2007 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -28,12 +28,12 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "cpplib.h" #include "internal.h" -static hashnode alloc_node (hash_table *); +static hashnode alloc_node (cpp_hash_table *); /* Return an identifier node for hashtable.c. Used by cpplib except when integrated with the C front ends. */ static hashnode -alloc_node (hash_table *table) +alloc_node (cpp_hash_table *table) { cpp_hashnode *node; @@ -45,7 +45,7 @@ alloc_node (hash_table *table) /* Set up the identifier hash table. Use TABLE if non-null, otherwise create our own. */ void -_cpp_init_hashtable (cpp_reader *pfile, hash_table *table) +_cpp_init_hashtable (cpp_reader *pfile, cpp_hash_table *table) { struct spec_nodes *s; diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index e2c505c3869..c540d3f6359 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -578,7 +578,7 @@ enum node_type /* Different flavors of builtin macro. _Pragma is an operator, but we handle it with the builtin code for efficiency reasons. */ -enum builtin_type +enum cpp_builtin_type { BT_SPECLINE = 0, /* `__LINE__' */ BT_DATE, /* `__DATE__' */ @@ -625,7 +625,7 @@ union _cpp_hashnode_value GTY(()) /* Answers to an assertion. */ struct answer * GTY ((tag ("NTV_ANSWER"))) answers; /* Code for a builtin macro. */ - enum builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin; + enum cpp_builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin; /* Macro argument index. */ unsigned short GTY ((tag ("NTV_ARGUMENT"))) arg_index; }; diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 81e888bc20f..5c9512d0983 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -23,6 +23,10 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #ifndef LIBCPP_LINE_MAP_H #define LIBCPP_LINE_MAP_H +#ifdef __cplusplus +extern "C" { +#endif + #ifndef GTY #define GTY(x) /* nothing */ #endif @@ -191,4 +195,9 @@ extern void linemap_print_containing_files (struct line_maps *, extern source_location linemap_position_for_column (struct line_maps *set, unsigned int to_column); + +#ifdef __cplusplus +} +#endif + #endif /* !LIBCPP_LINE_MAP_H */ diff --git a/libcpp/include/mkdeps.h b/libcpp/include/mkdeps.h index 60a5b5d8ce4..da02895a343 100644 --- a/libcpp/include/mkdeps.h +++ b/libcpp/include/mkdeps.h @@ -1,5 +1,5 @@ /* Dependency generator for Makefile fragments. - Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2003, 2008 Free Software Foundation, Inc. Contributed by Zack Weinberg, Mar 2000 This program is free software; you can redistribute it and/or modify it @@ -23,6 +23,10 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #ifndef LIBCPP_MKDEPS_H #define LIBCPP_MKDEPS_H +#ifdef __cplusplus +extern "C" { +#endif + /* This is the data structure used by all the functions in mkdeps.c. It's quite straightforward, but should be treated as opaque. */ @@ -76,4 +80,8 @@ extern int deps_restore (struct deps *, FILE *, const char *); automatic dependency schemes. */ extern void deps_phony_targets (const struct deps *, FILE *); +#ifdef __cplusplus +} +#endif + #endif /* ! LIBCPP_MKDEPS_H */ diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h index c016be3755b..de2ea9ff355 100644 --- a/libcpp/include/symtab.h +++ b/libcpp/include/symtab.h @@ -19,6 +19,11 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #define LIBCPP_SYMTAB_H #include "obstack.h" + +#ifdef __cplusplus +extern "C" { +#endif + #ifndef GTY #define GTY(x) /* nothing */ #endif @@ -36,7 +41,7 @@ struct ht_identifier GTY(()) #define HT_LEN(NODE) ((NODE)->len) #define HT_STR(NODE) ((NODE)->str) -typedef struct ht hash_table; +typedef struct ht cpp_hash_table; typedef struct ht_identifier *hashnode; enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC}; @@ -49,7 +54,7 @@ struct ht hashnode *entries; /* Call back, allocate a node. */ - hashnode (*alloc_node) (hash_table *); + hashnode (*alloc_node) (cpp_hash_table *); /* Call back, allocate something that hangs off a node like a cpp_macro. NULL means use the usual allocator. */ void * (*alloc_subobject) (size_t); @@ -69,14 +74,14 @@ struct ht }; /* Initialize the hashtable with 2 ^ order entries. */ -extern hash_table *ht_create (unsigned int order); +extern cpp_hash_table *ht_create (unsigned int order); /* Frees all memory associated with a hash table. */ -extern void ht_destroy (hash_table *); +extern void ht_destroy (cpp_hash_table *); -extern hashnode ht_lookup (hash_table *, const unsigned char *, +extern hashnode ht_lookup (cpp_hash_table *, const unsigned char *, size_t, enum ht_lookup_option); -extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *, +extern hashnode ht_lookup_with_hash (cpp_hash_table *, const unsigned char *, size_t, unsigned int, enum ht_lookup_option); #define HT_HASHSTEP(r, c) ((r) * 67 + ((c) - 113)); @@ -86,17 +91,21 @@ extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *, TABLE->PFILE, the node, and a PTR, and the callback sequence stops if the callback returns zero. */ typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *); -extern void ht_forall (hash_table *, ht_cb, const void *); +extern void ht_forall (cpp_hash_table *, ht_cb, const void *); /* For all nodes in TABLE, call the callback. If the callback returns a nonzero value, the node is removed from the table. */ -extern void ht_purge (hash_table *, ht_cb, const void *); +extern void ht_purge (cpp_hash_table *, ht_cb, const void *); /* Restore the hash table. */ -extern void ht_load (hash_table *ht, hashnode *entries, +extern void ht_load (cpp_hash_table *ht, hashnode *entries, unsigned int nslots, unsigned int nelements, bool own); /* Dump allocation statistics to stderr. */ -extern void ht_dump_statistics (hash_table *); +extern void ht_dump_statistics (cpp_hash_table *); + +#ifdef __cplusplus +} +#endif #endif /* LIBCPP_SYMTAB_H */ diff --git a/libcpp/init.c b/libcpp/init.c index cc7a09ed8c2..b510b41e0c8 100644 --- a/libcpp/init.c +++ b/libcpp/init.c @@ -1,6 +1,6 @@ /* CPP Library. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Contributed by Per Bothner, 1994-95. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -139,7 +139,7 @@ init_library (void) /* Initialize a cpp_reader structure. */ cpp_reader * -cpp_create_reader (enum c_lang lang, hash_table *table, +cpp_create_reader (enum c_lang lang, cpp_hash_table *table, struct line_maps *line_table) { cpp_reader *pfile; @@ -306,7 +306,7 @@ cpp_destroy (cpp_reader *pfile) "builtin" macros: these are handled by builtin_macro() in macro.c. Builtin is somewhat of a misnomer -- the property of interest is that these macros require special code to compute their - expansions. The value is a "builtin_type" enumerator. + expansions. The value is a "cpp_builtin_type" enumerator. operator_array holds the C++ named operators. These are keywords which act as aliases for punctuators. In C++, they cannot be @@ -400,7 +400,7 @@ cpp_init_special_builtins (cpp_reader *pfile) if (b->always_warn_if_redefined || CPP_OPTION (pfile, warn_builtin_macro_redefined)) hp->flags |= NODE_WARN; - hp->value.builtin = (enum builtin_type) b->value; + hp->value.builtin = (enum cpp_builtin_type) b->value; } } diff --git a/libcpp/internal.h b/libcpp/internal.h index af075b4b1c9..075831e65e4 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -37,6 +37,10 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ typedef int iconv_t; /* dummy */ #endif +#ifdef __cplusplus +extern "C" { +#endif + struct directive; /* Deliberately incomplete. */ struct pending_option; struct op; @@ -538,7 +542,7 @@ extern void _cpp_push_token_context (cpp_reader *, cpp_hashnode *, extern void _cpp_backup_tokens_direct (cpp_reader *, unsigned int); /* In identifiers.c */ -extern void _cpp_init_hashtable (cpp_reader *, hash_table *); +extern void _cpp_init_hashtable (cpp_reader *, cpp_hash_table *); extern void _cpp_destroy_hashtable (cpp_reader *); /* In files.c */ @@ -708,4 +712,8 @@ ufputs (const unsigned char *s, FILE *f) return fputs ((const char *)s, f); } +#ifdef __cplusplus +} +#endif + #endif /* ! LIBCPP_INTERNAL_H */ diff --git a/libcpp/symtab.c b/libcpp/symtab.c index 5414ff05fc9..45eb4e4b184 100644 --- a/libcpp/symtab.c +++ b/libcpp/symtab.c @@ -30,7 +30,7 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. existing entry with a potential new one. */ static unsigned int calc_hash (const unsigned char *, size_t); -static void ht_expand (hash_table *); +static void ht_expand (cpp_hash_table *); static double approx_sqrt (double); /* A deleted entry. */ @@ -52,13 +52,13 @@ calc_hash (const unsigned char *str, size_t len) /* Initialize an identifier hashtable. */ -hash_table * +cpp_hash_table * ht_create (unsigned int order) { unsigned int nslots = 1 << order; - hash_table *table; + cpp_hash_table *table; - table = XCNEW (hash_table); + table = XCNEW (cpp_hash_table); /* Strings need no alignment. */ _obstack_begin (&table->stack, 0, 0, @@ -76,7 +76,7 @@ ht_create (unsigned int order) /* Frees all memory associated with a hash table. */ void -ht_destroy (hash_table *table) +ht_destroy (cpp_hash_table *table) { obstack_free (&table->stack, NULL); if (table->entries_owned) @@ -90,7 +90,7 @@ ht_destroy (hash_table *table) returns NULL. Otherwise insert and returns a new entry. A new string is allocated. */ hashnode -ht_lookup (hash_table *table, const unsigned char *str, size_t len, +ht_lookup (cpp_hash_table *table, const unsigned char *str, size_t len, enum ht_lookup_option insert) { return ht_lookup_with_hash (table, str, len, calc_hash (str, len), @@ -98,7 +98,7 @@ ht_lookup (hash_table *table, const unsigned char *str, size_t len, } hashnode -ht_lookup_with_hash (hash_table *table, const unsigned char *str, +ht_lookup_with_hash (cpp_hash_table *table, const unsigned char *str, size_t len, unsigned int hash, enum ht_lookup_option insert) { @@ -181,7 +181,7 @@ ht_lookup_with_hash (hash_table *table, const unsigned char *str, /* Double the size of a hash table, re-hashing existing entries. */ static void -ht_expand (hash_table *table) +ht_expand (cpp_hash_table *table) { hashnode *nentries, *p, *limit; unsigned int size, sizemask; @@ -223,7 +223,7 @@ ht_expand (hash_table *table) /* For all nodes in TABLE, callback CB with parameters TABLE->PFILE, the node, and V. */ void -ht_forall (hash_table *table, ht_cb cb, const void *v) +ht_forall (cpp_hash_table *table, ht_cb cb, const void *v) { hashnode *p, *limit; @@ -241,7 +241,7 @@ ht_forall (hash_table *table, ht_cb cb, const void *v) /* Like ht_forall, but a nonzero return from the callback means that the entry should be removed from the table. */ void -ht_purge (hash_table *table, ht_cb cb, const void *v) +ht_purge (cpp_hash_table *table, ht_cb cb, const void *v) { hashnode *p, *limit; @@ -258,7 +258,7 @@ ht_purge (hash_table *table, ht_cb cb, const void *v) /* Restore the hash table. */ void -ht_load (hash_table *ht, hashnode *entries, +ht_load (cpp_hash_table *ht, hashnode *entries, unsigned int nslots, unsigned int nelements, bool own) { @@ -273,7 +273,7 @@ ht_load (hash_table *ht, hashnode *entries, /* Dump allocation statistics to stderr. */ void -ht_dump_statistics (hash_table *table) +ht_dump_statistics (cpp_hash_table *table) { size_t nelts, nids, overhead, headers; size_t total_bytes, longest, deleted = 0; diff --git a/libdecnumber/ChangeLog.cxx b/libdecnumber/ChangeLog.cxx new file mode 100644 index 00000000000..7e1d465db3e --- /dev/null +++ b/libdecnumber/ChangeLog.cxx @@ -0,0 +1,14 @@ +2009-01-30 Ian Lance Taylor <iant@google.com> + + * decRound.h: Add extern "C". + * decNumber.h: Likewise. + * decExcept.h: Likewise. + * decDouble.h: Likewise. + * decSingle.h: Likewise. + * decContext.h: Likewise. + * decPacked.h: Likewise. + * decQuad.h: Likewise. + * dpd/decimal128.h: Likewise. + * dpd/decimal32.h: Likewise. + * dpd/decimal64.h: Likewise. + diff --git a/libdecnumber/decContext.h b/libdecnumber/decContext.h index f80d03c50cf..63c0f95ced6 100644 --- a/libdecnumber/decContext.h +++ b/libdecnumber/decContext.h @@ -239,6 +239,10 @@ #include "decContextSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + extern decContext * decContextClearStatus(decContext *, uint32_t); extern decContext * decContextDefault(decContext *, int32_t); extern enum rounding decContextGetRounding(decContext *); @@ -255,4 +259,8 @@ extern uint32_t decContextTestStatus(decContext *, uint32_t); extern decContext * decContextZeroStatus(decContext *); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/decDouble.h b/libdecnumber/decDouble.h index 53fcf406bec..e29dffc7a87 100644 --- a/libdecnumber/decDouble.h +++ b/libdecnumber/decDouble.h @@ -71,6 +71,10 @@ #include "decDoubleSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Utilities and conversions, extractors, etc.) */ extern decDouble * decDoubleFromBCD(decDouble *, int32_t, const uint8_t *, int32_t); extern decDouble * decDoubleFromInt32(decDouble *, int32_t); @@ -163,4 +167,8 @@ #define decDoubleToNumber(dq, dn) decimal64ToNumber((decimal64 *)(dq), dn) #define decDoubleFromNumber(dq, dn, set) (decDouble *)decimal64FromNumber((decimal64 *)(dq), dn, set) +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/decExcept.h b/libdecnumber/decExcept.h index 5dc1ebb1d16..c8918dc9cc4 100644 --- a/libdecnumber/decExcept.h +++ b/libdecnumber/decExcept.h @@ -34,6 +34,14 @@ #define DFP_EXCEPTIONS_ENABLED 1 #define DFP_HANDLE_EXCEPTIONS(A) __dfp_raise_except(A) +#ifdef __cplusplus +extern "C" { +#endif + void __dfp_clear_except (void); int __dfp_test_except (int); void __dfp_raise_except (int); + +#ifdef __cplusplus +} +#endif diff --git a/libdecnumber/decNumber.h b/libdecnumber/decNumber.h index 0a9fdced8b3..d6fe4194330 100644 --- a/libdecnumber/decNumber.h +++ b/libdecnumber/decNumber.h @@ -113,6 +113,10 @@ #include "decNumberSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Conversions */ decNumber * decNumberFromInt32(decNumber *, int32_t); decNumber * decNumberFromUInt32(decNumber *, uint32_t); @@ -197,4 +201,8 @@ && (((dn)->bits&DECSPECIAL)==0)) #define decNumberRadix(dn) (10) +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/decPacked.h b/libdecnumber/decPacked.h index c76aa09631e..87aad227882 100644 --- a/libdecnumber/decPacked.h +++ b/libdecnumber/decPacked.h @@ -61,10 +61,18 @@ #include "decPackedSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Conversions */ uint8_t * decPackedFromNumber(uint8_t *, int32_t, int32_t *, const decNumber *); decNumber * decPackedToNumber(const uint8_t *, int32_t, const int32_t *, decNumber *); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/decQuad.h b/libdecnumber/decQuad.h index af9bc24e265..79102fa51b0 100644 --- a/libdecnumber/decQuad.h +++ b/libdecnumber/decQuad.h @@ -95,6 +95,10 @@ #include "decQuadSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Utilities and conversions, extractors, etc.) */ extern decQuad * decQuadFromBCD(decQuad *, int32_t, const uint8_t *, int32_t); extern decQuad * decQuadFromInt32(decQuad *, int32_t); @@ -185,4 +189,8 @@ #define decQuadToNumber(dq, dn) decimal128ToNumber((decimal128 *)(dq), dn) #define decQuadFromNumber(dq, dn, set) (decQuad *)decimal128FromNumber((decimal128 *)(dq), dn, set) +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/decRound.h b/libdecnumber/decRound.h index 5d2781ec5d3..af3a4068a10 100644 --- a/libdecnumber/decRound.h +++ b/libdecnumber/decRound.h @@ -32,6 +32,14 @@ #define DFP_INIT_ROUNDMODE(A) A = __decGetRound() +#ifdef __cplusplus +extern "C" { +#endif + extern void __dfp_set_round (int); extern int __dfp_get_round (void); extern enum rounding __decGetRound (void); + +#ifdef __cplusplus +} +#endif diff --git a/libdecnumber/decSingle.h b/libdecnumber/decSingle.h index bae39848eed..40191e56377 100644 --- a/libdecnumber/decSingle.h +++ b/libdecnumber/decSingle.h @@ -72,6 +72,10 @@ #include "decSingleSymbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Utilities (binary argument(s) or result, extractors, etc.) */ extern decSingle * decSingleFromBCD(decSingle *, int32_t, const uint8_t *, int32_t); extern decSingle * decSingleFromPacked(decSingle *, int32_t, const uint8_t *); @@ -100,4 +104,8 @@ #define decSingleToNumber(dq, dn) decimal32ToNumber((decimal32 *)(dq), dn) #define decSingleFromNumber(dq, dn, set) (decSingle *)decimal32FromNumber((decimal32 *)(dq), dn, set) +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/dpd/decimal128.h b/libdecnumber/dpd/decimal128.h index f8f5b5a8ff2..820ae97124c 100644 --- a/libdecnumber/dpd/decimal128.h +++ b/libdecnumber/dpd/decimal128.h @@ -84,6 +84,10 @@ #include "decimal128Symbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* String conversions */ decimal128 * decimal128FromString(decimal128 *, const char *, decContext *); char * decimal128ToString(const decimal128 *, char *); @@ -98,4 +102,8 @@ uint32_t decimal128IsCanonical(const decimal128 *); decimal128 * decimal128Canonical(decimal128 *, const decimal128 *); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/dpd/decimal32.h b/libdecnumber/dpd/decimal32.h index 0d530464172..3bbe67eba6c 100644 --- a/libdecnumber/dpd/decimal32.h +++ b/libdecnumber/dpd/decimal32.h @@ -82,6 +82,10 @@ #include "decimal32Symbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* String conversions */ decimal32 * decimal32FromString(decimal32 *, const char *, decContext *); char * decimal32ToString(const decimal32 *, char *); @@ -96,4 +100,8 @@ uint32_t decimal32IsCanonical(const decimal32 *); decimal32 * decimal32Canonical(decimal32 *, const decimal32 *); +#ifdef __cplusplus +} +#endif + #endif diff --git a/libdecnumber/dpd/decimal64.h b/libdecnumber/dpd/decimal64.h index 549b626536c..a0d9cb1d692 100644 --- a/libdecnumber/dpd/decimal64.h +++ b/libdecnumber/dpd/decimal64.h @@ -84,6 +84,10 @@ #include "decimal64Symbols.h" +#ifdef __cplusplus +extern "C" { +#endif + /* String conversions */ decimal64 * decimal64FromString(decimal64 *, const char *, decContext *); char * decimal64ToString(const decimal64 *, char *); @@ -98,4 +102,8 @@ uint32_t decimal64IsCanonical(const decimal64 *); decimal64 * decimal64Canonical(decimal64 *, const decimal64 *); +#ifdef __cplusplus +} +#endif + #endif |