]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/Makefile.in
configure: Implement --enable-host-pie
[thirdparty/gcc.git] / gcc / Makefile.in
index 658093c11c0df38ae0a7a91f4c6b2105a8b05457..5a78c7476d2813027ac3eedb098280ac304d3219 100644 (file)
@@ -1,7 +1,7 @@
 # Makefile for GNU Compiler Collection
 # Run 'configure' to generate Makefile from Makefile.in
 
-# Copyright (C) 1987-2021 Free Software Foundation, Inc.
+# Copyright (C) 1987-2022 Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
@@ -146,8 +146,11 @@ endif
 # CFLAGS is for the user to override to, e.g., do a cross build with -O2.
 # TCFLAGS is used for compilations with the GCC just built.
 # T_CFLAGS is used for all compilations and is overridden by t-* files.
+# TFLAGS is also for the user to override, passed down from the top-level
+# Makefile.  It is used for all compilations.
 T_CFLAGS =
 TCFLAGS =
+TFLAGS =
 CFLAGS = @CFLAGS@
 CXXFLAGS = @CXXFLAGS@
 LDFLAGS = @LDFLAGS@
@@ -155,6 +158,9 @@ LDFLAGS = @LDFLAGS@
 # Should we build position-independent host code?
 PICFLAG = @PICFLAG@
 
+# The linker flag for the above.
+LD_PICFLAG = @LD_PICFLAG@
+
 # Flags to determine code coverage. When coverage is disabled, this will
 # contain the optimization flags, as you normally want code coverage
 # without optimization.
@@ -263,18 +269,17 @@ LINKER = $(CC)
 LINKER_FLAGS = $(CFLAGS)
 endif
 
+enable_host_pie = @enable_host_pie@
+
 # Enable Intel CET on Intel CET enabled host if needed.
 CET_HOST_FLAGS = @CET_HOST_FLAGS@
 COMPILER += $(CET_HOST_FLAGS)
 
-NO_PIE_CFLAGS = @NO_PIE_CFLAGS@
-NO_PIE_FLAG = @NO_PIE_FLAG@
+# Maybe compile the compilers with -fPIE or -fPIC.
+COMPILER += $(PICFLAG)
 
-# We don't want to compile the compilers with -fPIE, it make PCH fail.
-COMPILER += $(NO_PIE_CFLAGS)
-
-# Link with -no-pie since we compile the compiler with -fno-PIE.
-LINKER += $(NO_PIE_FLAG)
+# Link with -pie, or -no-pie, depending on the above.
+LINKER += $(LD_PICFLAG)
 
 # Like LINKER, but use a mutex for serializing front end links.
 ifeq (@DO_LINK_MUTEX@,true)
@@ -452,11 +457,12 @@ USER_H_INC_NEXT_POST = @user_headers_inc_next_post@
 
 # Enable target overriding of this fragment, as in config/t-vxworks.
 T_GLIMITS_H = $(srcdir)/glimits.h
+T_STDINT_GCC_H = $(srcdir)/ginclude/stdint-gcc.h
 
 # The GCC to use for compiling crt*.o.
 # Usually the one we just built.
 # Don't use this as a dependency--use $(GCC_PASSES).
-GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -L$(objdir)/../ld
+GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -L$(objdir)/../ld $(TFLAGS)
 
 # Set if the compiler was configured with --with-build-sysroot.
 SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
@@ -888,7 +894,7 @@ PATCHLEVEL_c := \
   $(shell echo $(BASEVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/')
 
 
-# For use in version.c - double quoted strings, with appropriate
+# For use in version.cc - double quoted strings, with appropriate
 # surrounding punctuation and spaces, and with the datestamp and
 # development phase collapsed to the empty string in release mode
 # (i.e. if DEVPHASE_c is empty and PATCHLEVEL_c is 0).  The space
@@ -1056,18 +1062,21 @@ ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS)
 ALL_COMPILERFLAGS = $(ALL_CXXFLAGS)
 
 # This is the variable to use when using $(LINKER).
-ALL_LINKERFLAGS = $(ALL_CXXFLAGS)
+ALL_LINKERFLAGS = $(ALL_CXXFLAGS) $(LD_PICFLAG)
 
 # Build and host support libraries.
 
-# Use the "pic" build of libiberty if --enable-host-shared, unless we are
-# building for mingw.
+# Use the "pic" build of libiberty if --enable-host-shared or --enable-host-pie,
+# unless we are building for mingw.
 LIBIBERTY_PICDIR=$(if $(findstring mingw,$(target)),,pic)
-ifeq ($(enable_host_shared),yes)
+ifneq ($(enable_host_shared)$(enable_host_pie),)
 LIBIBERTY = ../libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
-BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
 else
 LIBIBERTY = ../libiberty/libiberty.a
+endif
+ifeq ($(enable_host_shared),yes)
+BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
+else
 BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/libiberty.a
 endif
 
@@ -1092,6 +1101,10 @@ SYSLIBS = @GNAT_LIBEXC@
 GNATBIND = @GNATBIND@
 GNATMAKE = @GNATMAKE@
 
+# Used from d/Make-lang.in
+GDC = @GDC@
+GDCFLAGS = @GDCFLAGS@
+
 # Libs needed (at present) just for jcf-dump.
 LDEXP_LIB = @LDEXP_LIB@
 
@@ -1188,6 +1201,7 @@ FLAGS_TO_PASS = \
        "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \
        "MAKEOVERRIDES=" \
        "SHELL=$(SHELL)" \
+       "TFLAGS=$(TFLAGS)" \
        "exeext=$(exeext)" \
        "build_exeext=$(build_exeext)" \
        "objext=$(objext)" \
@@ -1240,12 +1254,15 @@ C_COMMON_OBJS = c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o \
 ANALYZER_OBJS = \
        analyzer/analysis-plan.o \
        analyzer/analyzer.o \
+       analyzer/analyzer-language.o \
        analyzer/analyzer-logging.o \
        analyzer/analyzer-pass.o \
        analyzer/analyzer-selftests.o \
        analyzer/bar-chart.o \
        analyzer/call-info.o \
        analyzer/call-string.o \
+       analyzer/call-summary.o \
+       analyzer/checker-event.o \
        analyzer/checker-path.o \
        analyzer/complexity.o \
        analyzer/constraint-manager.o \
@@ -1253,6 +1270,8 @@ ANALYZER_OBJS = \
        analyzer/engine.o \
        analyzer/feasible-graph.o \
        analyzer/function-set.o \
+       analyzer/infinite-recursion.o \
+       analyzer/known-function-manager.o \
        analyzer/pending-diagnostic.o \
        analyzer/program-point.o \
        analyzer/program-state.o \
@@ -1264,6 +1283,7 @@ ANALYZER_OBJS = \
        analyzer/region-model-reachability.o \
        analyzer/sm.o \
        analyzer/sm-file.o \
+       analyzer/sm-fd.o \
        analyzer/sm-malloc.o \
        analyzer/sm-pattern-test.o \
        analyzer/sm-sensitive.o \
@@ -1273,7 +1293,8 @@ ANALYZER_OBJS = \
        analyzer/store.o \
        analyzer/supergraph.o \
        analyzer/svalue.o \
-       analyzer/trimmed-graph.o
+       analyzer/trimmed-graph.o \
+       analyzer/varargs.o
 
 # Language-independent object files.
 # We put the *-match.o and insn-*.o files first so that a parallel make
@@ -1342,7 +1363,6 @@ OBJS = \
        data-streamer.o \
        data-streamer-in.o \
        data-streamer-out.o \
-       dbxout.o \
        dbgcnt.o \
        dce.o \
        ddg.o \
@@ -1391,6 +1411,7 @@ OBJS = \
        gimple-if-to-switch.o \
        gimple-iterator.o \
        gimple-fold.o \
+       gimple-harden-conditionals.o \
        gimple-laddress.o \
        gimple-loop-interchange.o \
        gimple-loop-jam.o \
@@ -1403,10 +1424,10 @@ OBJS = \
        gimple-range-edge.o \
        gimple-range-fold.o \
        gimple-range-gori.o \
+       gimple-range-infer.o \
+       gimple-range-op.o \
        gimple-range-trace.o \
        gimple-ssa-backprop.o \
-       gimple-ssa-evrp.o \
-       gimple-ssa-evrp-analyze.o \
        gimple-ssa-isolate-paths.o \
        gimple-ssa-nonnull-compare.o \
        gimple-ssa-split-paths.o \
@@ -1419,6 +1440,7 @@ OBJS = \
        gimple-streamer-in.o \
        gimple-streamer-out.o \
        gimple-walk.o \
+       gimple-warn-recursion.o \
        gimplify.o \
        gimplify-me.o \
        godump.o \
@@ -1536,6 +1558,7 @@ OBJS = \
        profile-count.o \
        range.o \
        range-op.o \
+       range-op-float.o \
        read-md.o \
        read-rtl.o \
        read-rtl-function.o \
@@ -1608,6 +1631,7 @@ OBJS = \
        tree-data-ref.o \
        tree-dfa.o \
        tree-diagnostic.o \
+       tree-diagnostic-client-data-hooks.o \
        tree-diagnostic-path.o \
        tree-dump.o \
        tree-eh.o \
@@ -1616,6 +1640,7 @@ OBJS = \
        tree-inline.o \
        tree-into-ssa.o \
        tree-iterator.o \
+       tree-logical-location.o \
        tree-loop-distribution.o \
        tree-nested.o \
        tree-nrv.o \
@@ -1692,12 +1717,13 @@ OBJS = \
        tree.o \
        tristate.o \
        typed-splay-tree.o \
-       unique-ptr-tests.o \
        valtrack.o \
        value-pointer-equiv.o \
        value-query.o \
        value-range.o \
        value-range-equiv.o \
+       value-range-pretty-print.o \
+       value-range-storage.o \
        value-relation.o \
        value-prof.o \
        var-tracking.o \
@@ -1711,7 +1737,6 @@ OBJS = \
        web.o \
        wide-int.o \
        wide-int-print.o \
-       xcoffout.o \
        $(out_object_file) \
        $(ANALYZER_OBJS) \
        $(EXTRA_OBJS) \
@@ -1720,9 +1745,12 @@ OBJS = \
 # Objects in libcommon.a, potentially used by all host binaries and with
 # no target dependencies.
 OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
-       diagnostic-show-locus.o diagnostic-format-json.o json.o \
+       diagnostic-format-json.o \
+       diagnostic-format-sarif.o \
+       diagnostic-show-locus.o \
        edit-context.o \
        pretty-print.o intl.o \
+       json.o \
        sbitmap.o \
        vec.o input.o hash-table.o ggc-none.o memory-block.o \
        selftest.o selftest-diagnostic.o sort.o
@@ -1765,12 +1793,12 @@ TREECHECKING = @TREECHECKING@
 FULL_DRIVER_NAME=$(target_noncanonical)-gcc-$(version)$(exeext)
 
 MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
- insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
- insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
- insn-latencytab.c insn-opinit.c insn-opinit.h insn-preds.c insn-constants.h \
- tm-preds.h tm-constrs.h checksum-options gimple-match.c generic-match.c \
- tree-check.h min-insn-modes.c insn-modes.c insn-modes.h insn-modes-inline.h \
- genrtl.h gt-*.h gtype-*.h gtype-desc.c gtyp-input.list \
+ insn-output.cc insn-recog.cc insn-emit.cc insn-extract.cc insn-peep.cc \
+ insn-attr.h insn-attr-common.h insn-attrtab.cc insn-dfatab.cc \
+ insn-latencytab.cc insn-opinit.cc insn-opinit.h insn-preds.cc insn-constants.h \
+ tm-preds.h tm-constrs.h checksum-options gimple-match.cc generic-match.cc \
+ tree-check.h min-insn-modes.cc insn-modes.cc insn-modes.h insn-modes-inline.h \
+ genrtl.h gt-*.h gtype-*.h gtype-desc.cc gtyp-input.list \
  case-cfn-macros.h cfn-operators.pd \
  xgcc$(exeext) cpp$(exeext) $(FULL_DRIVER_NAME) \
  $(EXTRA_PROGRAMS) gcc-cross$(exeext) \
@@ -1778,7 +1806,7 @@ MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
  gcc-ranlib$(exeext) \
  genversion$(build_exeext) gcov$(exeext) gcov-dump$(exeext) \
  gcov-tool$(exeect) \
- gengtype$(exeext) *.[0-9][0-9].* *.[si] *-checksum.c libbackend.a \
+ gengtype$(exeext) *.[0-9][0-9].* *.[si] *-checksum.cc libbackend.a \
  libcommon-target.a libcommon.a libgcc.mk perf.data
 
 # This symlink makes the full installation name of the driver be available
@@ -2208,7 +2236,7 @@ s-mlib: $(srcdir)/genmultilib Makefile
 
 srcextra: gcc.srcextra lang.srcextra
 
-gcc.srcextra: gengtype-lex.c
+gcc.srcextra: gengtype-lex.cc
        -cp -p $^ $(srcdir)
 
 AR_OBJS = file-find.o
@@ -2240,10 +2268,10 @@ CFLAGS-gcc-nm.o += $(DRIVER_DEFINES) \
 
 # ??? the implicit rules dont trigger if the source file has a different name
 # so copy instead
-gcc-ranlib.c: gcc-ar.c
+gcc-ranlib.cc: gcc-ar.cc
        cp $^ $@
 
-gcc-nm.c: gcc-ar.c
+gcc-nm.cc: gcc-ar.cc
        cp $^ $@
 
 COLLECT2_OBJS = collect2.o collect2-aix.o vec.o ggc-none.o \
@@ -2271,7 +2299,7 @@ CFLAGS-c-family/c-opts.o += @TARGET_SYSTEM_ROOT_DEFINE@
 CFLAGS-c-family/c-pch.o += -DHOST_MACHINE=\"$(host)\" \
        -DTARGET_MACHINE=\"$(target)\"
 
-default-c.o: config/default-c.c
+default-c.o: config/default-c.cc
        $(COMPILE) $<
        $(POSTCOMPILE)
 
@@ -2282,7 +2310,7 @@ prefix.o: $(BASEVER)
 
 # Files used by the D language front end.
 
-default-d.o: config/default-d.c
+default-d.o: config/default-d.cc
        $(COMPILE) $<
        $(POSTCOMPILE)
 
@@ -2323,13 +2351,13 @@ s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
        $(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
        $(STAMP) s-options
 
-options.c: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
+options.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
     $(srcdir)/optc-gen.awk
        $(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
               -f $(srcdir)/optc-gen.awk \
               -v header_name="config.h system.h coretypes.h options.h tm.h" < $< > $@
 
-options-save.c: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
+options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
     $(srcdir)/optc-save-gen.awk
        $(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
               -f $(srcdir)/optc-save-gen.awk \
@@ -2344,7 +2372,7 @@ s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
        $(SHELL) $(srcdir)/../move-if-change tmp-options.h options.h
        $(STAMP) $@
 
-dumpvers: dumpvers.c
+dumpvers: dumpvers.cc
 
 # lto-compress.o needs $(ZLIBINC) added to the include flags.
 CFLAGS-lto-compress.o += $(ZLIBINC) $(ZSTD_INC)
@@ -2360,6 +2388,7 @@ s-bversion: BASE-VER
        $(STAMP) s-bversion
 
 CFLAGS-toplev.o += -DTARGET_NAME=\"$(target_noncanonical)\"
+CFLAGS-tree-diagnostic-client-data-hooks.o += -DTARGET_NAME=\"$(target_noncanonical)\"
 CFLAGS-optinfo-emit-json.o += -DTARGET_NAME=\"$(target_noncanonical)\" $(ZLIBINC)
 CFLAGS-analyzer/engine.o += $(ZLIBINC)
 
@@ -2380,9 +2409,9 @@ $(common_out_object_file): $(common_out_file)
 # and compile them.
 
 .PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \
-  insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
-  insn-attr.h insn-attr-common.h insn-attrtab.c insn-dfatab.c \
-  insn-latencytab.c insn-preds.c gimple-match.c generic-match.c \
+  insn-emit.cc insn-recog.cc insn-extract.cc insn-output.cc insn-peep.cc \
+  insn-attr.h insn-attr-common.h insn-attrtab.cc insn-dfatab.cc \
+  insn-latencytab.cc insn-preds.cc gimple-match.cc generic-match.cc \
   insn-target-def.h
 
 # Dependencies for the md file.  The first time through, we just assume
@@ -2406,19 +2435,19 @@ s-mddeps: $(md_file) $(MD_INCLUDES) build/genmddeps$(build_exeext)
 simple_rtl_generated_h = insn-attr.h insn-attr-common.h insn-codes.h \
                          insn-config.h insn-flags.h insn-target-def.h
 
-simple_rtl_generated_c = insn-automata.c insn-emit.c \
-                         insn-extract.c insn-output.c \
-                         insn-peep.c insn-recog.c
+simple_rtl_generated_c = insn-automata.cc insn-emit.cc \
+                         insn-extract.cc insn-output.cc \
+                         insn-peep.cc insn-recog.cc
 
 simple_generated_h     = $(simple_rtl_generated_h) insn-constants.h
 
-simple_generated_c     = $(simple_rtl_generated_c) insn-enums.c
+simple_generated_c     = $(simple_rtl_generated_c) insn-enums.cc
 
 $(simple_generated_h:insn-%.h=s-%) \
-$(simple_generated_c:insn-%.c=s-%): s-%: $(MD_DEPS)
+$(simple_generated_c:insn-%.cc=s-%): s-%: $(MD_DEPS)
 
 $(simple_rtl_generated_h:insn-%.h=s-%) \
-$(simple_rtl_generated_c:insn-%.c=s-%): s-%: insn-conditions.md
+$(simple_rtl_generated_c:insn-%.cc=s-%): s-%: insn-conditions.md
 
 $(simple_generated_h): insn-%.h: s-%; @true
 
@@ -2428,11 +2457,11 @@ $(simple_generated_h:insn-%.h=s-%): s-%: build/gen%$(build_exeext)
        $(SHELL) $(srcdir)/../move-if-change tmp-$*.h insn-$*.h
        $(STAMP) s-$*
 
-$(simple_generated_c): insn-%.c: s-%; @true
-$(simple_generated_c:insn-%.c=s-%): s-%: build/gen%$(build_exeext)
+$(simple_generated_c): insn-%.cc: s-%; @true
+$(simple_generated_c:insn-%.cc=s-%): s-%: build/gen%$(build_exeext)
        $(RUN_GEN) build/gen$*$(build_exeext) $(md_file) \
-         $(filter insn-conditions.md,$^) > tmp-$*.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-$*.c insn-$*.c
+         $(filter insn-conditions.md,$^) > tmp-$*.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-$*.cc insn-$*.cc
        $(STAMP) s-$*
 
 # gencheck doesn't read the machine description, and the file produced
@@ -2443,31 +2472,31 @@ s-check : build/gencheck$(build_exeext)
        $(SHELL) $(srcdir)/../move-if-change tmp-check.h tree-check.h
        $(STAMP) s-check
 
-# genattrtab produces three files: tmp-{attrtab.c,dfatab.c,latencytab.c}
-insn-attrtab.c insn-dfatab.c insn-latencytab.c: s-attrtab ; @true
+# genattrtab produces three files: tmp-{attrtab.cc,dfatab.cc,latencytab.cc}
+insn-attrtab.cc insn-dfatab.cc insn-latencytab.cc: s-attrtab ; @true
 s-attrtab : $(MD_DEPS) build/genattrtab$(build_exeext) \
   insn-conditions.md
        $(RUN_GEN) build/genattrtab$(build_exeext) $(md_file) insn-conditions.md \
-               -Atmp-attrtab.c -Dtmp-dfatab.c -Ltmp-latencytab.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-attrtab.c    insn-attrtab.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-dfatab.c     insn-dfatab.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-latencytab.c insn-latencytab.c
+               -Atmp-attrtab.cc -Dtmp-dfatab.cc -Ltmp-latencytab.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-attrtab.cc    insn-attrtab.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-dfatab.cc     insn-dfatab.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-latencytab.cc insn-latencytab.cc
        $(STAMP) s-attrtab
 
 # genopinit produces two files.
-insn-opinit.c insn-opinit.h: s-opinit ; @true
+insn-opinit.cc insn-opinit.h: s-opinit ; @true
 s-opinit: $(MD_DEPS) build/genopinit$(build_exeext) insn-conditions.md
        $(RUN_GEN) build/genopinit$(build_exeext) $(md_file) \
-         insn-conditions.md -htmp-opinit.h -ctmp-opinit.c
+         insn-conditions.md -htmp-opinit.h -ctmp-opinit.cc
        $(SHELL) $(srcdir)/../move-if-change tmp-opinit.h insn-opinit.h
-       $(SHELL) $(srcdir)/../move-if-change tmp-opinit.c insn-opinit.c
+       $(SHELL) $(srcdir)/../move-if-change tmp-opinit.cc insn-opinit.cc
        $(STAMP) s-opinit
 
 # gencondmd doesn't use the standard naming convention.
-build/gencondmd.c: s-conditions; @true
+build/gencondmd.cc: s-conditions; @true
 s-conditions: $(MD_DEPS) build/genconditions$(build_exeext)
-       $(RUN_GEN) build/genconditions$(build_exeext) $(md_file) > tmp-condmd.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-condmd.c build/gencondmd.c
+       $(RUN_GEN) build/genconditions$(build_exeext) $(md_file) > tmp-condmd.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-condmd.cc build/gencondmd.cc
        $(STAMP) s-conditions
 
 insn-conditions.md: s-condmd; @true
@@ -2487,14 +2516,14 @@ s-genrtl-h: build/gengenrtl$(build_exeext)
        $(SHELL) $(srcdir)/../move-if-change tmp-genrtl.h genrtl.h
        $(STAMP) s-genrtl-h
 
-insn-modes.c: s-modes; @true
+insn-modes.cc: s-modes; @true
 insn-modes.h: s-modes-h; @true
 insn-modes-inline.h: s-modes-inline-h; @true
-min-insn-modes.c: s-modes-m; @true
+min-insn-modes.cc: s-modes-m; @true
 
 s-modes: build/genmodes$(build_exeext)
-       $(RUN_GEN) build/genmodes$(build_exeext) > tmp-modes.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-modes.c insn-modes.c
+       $(RUN_GEN) build/genmodes$(build_exeext) > tmp-modes.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-modes.cc insn-modes.cc
        $(STAMP) s-modes
 
 s-modes-h: build/genmodes$(build_exeext)
@@ -2509,11 +2538,11 @@ s-modes-inline-h: build/genmodes$(build_exeext)
        $(STAMP) s-modes-inline-h
 
 s-modes-m: build/genmodes$(build_exeext)
-       $(RUN_GEN) build/genmodes$(build_exeext) -m > tmp-min-modes.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c
+       $(RUN_GEN) build/genmodes$(build_exeext) -m > tmp-min-modes.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-min-modes.cc min-insn-modes.cc
        $(STAMP) s-modes-m
 
-insn-preds.c: s-preds; @true
+insn-preds.cc: s-preds; @true
 tm-preds.h: s-preds-h; @true
 tm-constrs.h: s-constrs-h; @true
 
@@ -2522,8 +2551,8 @@ mddump: $(BUILD_RTL) $(MD_DEPS) build/genmddump$(build_exeext)
        $(RUN_GEN) build/genmddump$(build_exeext) $(md_file) > tmp-mddump.md
 
 s-preds: $(MD_DEPS) build/genpreds$(build_exeext)
-       $(RUN_GEN) build/genpreds$(build_exeext) $(md_file) > tmp-preds.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-preds.c insn-preds.c
+       $(RUN_GEN) build/genpreds$(build_exeext) $(md_file) > tmp-preds.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-preds.cc insn-preds.cc
        $(STAMP) s-preds
 
 s-preds-h: $(MD_DEPS) build/genpreds$(build_exeext)
@@ -2625,25 +2654,26 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in
          false; \
        fi
 
-gimple-match.c: s-match gimple-match-head.c ; @true
-generic-match.c: s-match generic-match-head.c ; @true
+gimple-match.cc: s-match gimple-match-head.cc ; @true
+generic-match.cc: s-match generic-match-head.cc ; @true
 
 s-match: build/genmatch$(build_exeext) $(srcdir)/match.pd cfn-operators.pd
        $(RUN_GEN) build/genmatch$(build_exeext) --gimple $(srcdir)/match.pd \
-           > tmp-gimple-match.c
+           > tmp-gimple-match.cc
        $(RUN_GEN) build/genmatch$(build_exeext) --generic $(srcdir)/match.pd \
-           > tmp-generic-match.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-gimple-match.c \
-                                               gimple-match.c
-       $(SHELL) $(srcdir)/../move-if-change tmp-generic-match.c \
-                                               generic-match.c
+           > tmp-generic-match.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-gimple-match.cc \
+                                               gimple-match.cc
+       $(SHELL) $(srcdir)/../move-if-change tmp-generic-match.cc \
+                                               generic-match.cc
        $(STAMP) s-match
 
 GTFILES = $(CPPLIB_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
   $(host_xm_file_list) \
+  $(OPTIONS_H_EXTRA) \
   $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
   $(srcdir)/wide-int.h $(srcdir)/alias.h \
-  $(srcdir)/coverage.c  $(srcdir)/rtl.h \
+  $(srcdir)/coverage.cc  $(srcdir)/rtl.h \
   $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/tree-core.h \
   $(srcdir)/libfuncs.h $(SYMTAB_H) \
   $(srcdir)/real.h $(srcdir)/function.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \
@@ -2653,71 +2683,73 @@ GTFILES = $(CPPLIB_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
   $(srcdir)/cselib.h $(srcdir)/basic-block.h  $(srcdir)/ipa-ref.h $(srcdir)/cgraph.h \
   $(srcdir)/symtab-thunks.h $(srcdir)/symtab-thunks.cc \
   $(srcdir)/symtab-clones.h \
-  $(srcdir)/reload.h $(srcdir)/caller-save.c $(srcdir)/symtab.c \
-  $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \
-  $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-utils.h \
-  $(srcdir)/ipa-param-manipulation.h $(srcdir)/ipa-sra.c $(srcdir)/dbxout.c \
-  $(srcdir)/ipa-modref.h $(srcdir)/ipa-modref.c \
+  $(srcdir)/reload.h $(srcdir)/caller-save.cc $(srcdir)/symtab.cc \
+  $(srcdir)/alias.cc $(srcdir)/bitmap.cc $(srcdir)/cselib.cc $(srcdir)/cgraph.cc \
+  $(srcdir)/ipa-prop.cc $(srcdir)/ipa-cp.cc $(srcdir)/ipa-utils.h \
+  $(srcdir)/ipa-param-manipulation.h $(srcdir)/ipa-sra.cc \
+  $(srcdir)/ipa-modref.h $(srcdir)/ipa-modref.cc \
   $(srcdir)/ipa-modref-tree.h \
   $(srcdir)/signop.h \
-  $(srcdir)/diagnostic-spec.h $(srcdir)/diagnostic-spec.c \
+  $(srcdir)/diagnostic-spec.h $(srcdir)/diagnostic-spec.cc \
   $(srcdir)/dwarf2out.h \
-  $(srcdir)/dwarf2asm.c \
-  $(srcdir)/dwarf2cfi.c \
-  $(srcdir)/dwarf2ctf.c \
-  $(srcdir)/dwarf2out.c \
+  $(srcdir)/dwarf2asm.cc \
+  $(srcdir)/dwarf2cfi.cc \
+  $(srcdir)/dwarf2ctf.cc \
+  $(srcdir)/dwarf2out.cc \
   $(srcdir)/ctfc.h \
-  $(srcdir)/ctfout.c \
-  $(srcdir)/btfout.c \
-  $(srcdir)/tree-vect-generic.c \
+  $(srcdir)/ctfout.cc \
+  $(srcdir)/btfout.cc \
+  $(srcdir)/tree-vect-generic.cc \
   $(srcdir)/gimple-isel.cc \
-  $(srcdir)/dojump.c $(srcdir)/emit-rtl.h \
-  $(srcdir)/emit-rtl.c $(srcdir)/except.h $(srcdir)/explow.c $(srcdir)/expr.c \
+  $(srcdir)/dojump.cc $(srcdir)/emit-rtl.h \
+  $(srcdir)/emit-rtl.cc $(srcdir)/except.h $(srcdir)/explow.cc $(srcdir)/expr.cc \
   $(srcdir)/expr.h \
-  $(srcdir)/function.c $(srcdir)/except.c \
-  $(srcdir)/ggc-tests.c \
-  $(srcdir)/gcse.c $(srcdir)/godump.c \
-  $(srcdir)/lists.c $(srcdir)/optabs-libfuncs.c \
-  $(srcdir)/profile.c $(srcdir)/mcf.c \
-  $(srcdir)/reg-stack.c $(srcdir)/cfgrtl.c \
-  $(srcdir)/stor-layout.c \
-  $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
+  $(srcdir)/function.cc $(srcdir)/except.cc \
+  $(srcdir)/ggc-tests.cc \
+  $(srcdir)/gcse.cc $(srcdir)/godump.cc \
+  $(srcdir)/lists.cc $(srcdir)/optabs-libfuncs.cc \
+  $(srcdir)/profile.cc $(srcdir)/mcf.cc \
+  $(srcdir)/reg-stack.cc $(srcdir)/cfgrtl.cc \
+  $(srcdir)/stor-layout.cc \
+  $(srcdir)/stringpool.cc $(srcdir)/tree.cc $(srcdir)/varasm.cc \
   $(srcdir)/gimple.h \
   $(srcdir)/gimple-ssa.h \
-  $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \
-  $(srcdir)/tree-cfg.c $(srcdir)/tree-ssa-loop-ivopts.c \
-  $(srcdir)/tree-dfa.c \
-  $(srcdir)/tree-iterator.c $(srcdir)/gimple-expr.c \
+  $(srcdir)/tree-ssanames.cc $(srcdir)/tree-eh.cc $(srcdir)/tree-ssa-address.cc \
+  $(srcdir)/tree-cfg.cc $(srcdir)/tree-ssa-loop-ivopts.cc \
+  $(srcdir)/tree-dfa.cc \
+  $(srcdir)/tree-iterator.cc $(srcdir)/gimple-expr.cc \
   $(srcdir)/tree-chrec.h \
-  $(srcdir)/tree-scalar-evolution.c \
+  $(srcdir)/tree-scalar-evolution.cc \
   $(srcdir)/tree-ssa-operands.h \
-  $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \
+  $(srcdir)/tree-profile.cc $(srcdir)/tree-nested.cc \
   $(srcdir)/omp-offload.h \
-  $(srcdir)/omp-general.c \
-  $(srcdir)/omp-low.c \
-  $(srcdir)/targhooks.c $(out_file) $(srcdir)/passes.c \
-  $(srcdir)/cgraphclones.c \
-  $(srcdir)/tree-phinodes.c \
+  $(srcdir)/omp-general.cc \
+  $(srcdir)/omp-low.cc \
+  $(srcdir)/targhooks.cc $(out_file) $(srcdir)/passes.cc \
+  $(srcdir)/cgraphclones.cc \
+  $(srcdir)/tree-phinodes.cc \
   $(srcdir)/tree-ssa-alias.h \
   $(srcdir)/tree-ssanames.h \
   $(srcdir)/tree-vrp.h \
   $(srcdir)/value-range.h \
+  $(srcdir)/value-range-storage.h \
   $(srcdir)/ipa-prop.h \
-  $(srcdir)/trans-mem.c \
+  $(srcdir)/trans-mem.cc \
   $(srcdir)/lto-streamer.h \
   $(srcdir)/target-globals.h \
   $(srcdir)/ipa-predicate.h \
   $(srcdir)/ipa-fnsummary.h \
-  $(srcdir)/vtable-verify.c \
-  $(srcdir)/asan.c \
-  $(srcdir)/ubsan.c \
-  $(srcdir)/tsan.c \
-  $(srcdir)/sanopt.c \
-  $(srcdir)/sancov.c \
-  $(srcdir)/ipa-devirt.c \
+  $(srcdir)/vtable-verify.cc \
+  $(srcdir)/asan.cc \
+  $(srcdir)/ubsan.cc \
+  $(srcdir)/tsan.cc \
+  $(srcdir)/sanopt.cc \
+  $(srcdir)/sancov.cc \
+  $(srcdir)/ipa-devirt.cc \
   $(srcdir)/internal-fn.h \
-  $(srcdir)/calls.c \
+  $(srcdir)/calls.cc \
   $(srcdir)/omp-general.h \
+  $(srcdir)/analyzer/analyzer-language.cc \
   @all_gtfiles@
 
 # Compute the list of GT header files from the corresponding C sources,
@@ -2728,8 +2760,8 @@ GTFILES = $(CPPLIB_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
 
 GTFILES_H = $(subst /,-, \
            $(shell echo $(patsubst $(srcdir)/%,gt-%, \
-                          $(patsubst %.c,%.h, \
-                            $(filter %.c, $(GTFILES)))) \
+                          $(patsubst %.cc,%.h, \
+                            $(filter %.cc, $(GTFILES)))) \
                        | sed -e "s|/[^ ]*/|/|g" -e "s|gt-config/|gt-|g"))
 
 GTFILES_LANG_H = $(patsubst [%], gtype-%.h, $(filter [%], $(GTFILES)))
@@ -2739,7 +2771,7 @@ ALL_GTFILES_H := $(sort $(GTFILES_H) $(GTFILES_LANG_H))
 # write it out to a file (taking care not to do that in a way that
 # overflows a command line!) and then have gengtype read the file in.
 
-$(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gtype.state: s-gtype ; @true
+$(ALL_GTFILES_H) gtype-desc.cc gtype-desc.h gtype.state: s-gtype ; @true
 
 ### Common flags to gengtype [e.g. -v or -B backupdir]
 GENGTYPE_FLAGS= 
@@ -2766,10 +2798,10 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \
        $(simple_generated_h) specs.h \
        tree-check.h genrtl.h insn-modes.h insn-modes-inline.h \
        tm-preds.h tm-constrs.h \
-       $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h version.h \
+       $(ALL_GTFILES_H) gtype-desc.cc gtype-desc.h version.h \
        options.h target-hooks-def.h insn-opinit.h \
        common/common-target-hooks-def.h pass-instances.def \
-       gimple-match.c generic-match.c \
+       gimple-match.cc generic-match.cc \
        c-family/c-target-hooks-def.h d/d-target-hooks-def.h \
        case-cfn-macros.h \
        cfn-operators.pd omp-device-properties.h
@@ -2783,77 +2815,77 @@ build/%.o :  # dependencies provided by explicit rule later
 
 # Header dependencies for the programs that generate source code.
 # These are library modules...
-build/errors.o : errors.c $(BCONFIG_H) $(SYSTEM_H) errors.h
-build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H)              \
+build/errors.o : errors.cc $(BCONFIG_H) $(SYSTEM_H) errors.h
+build/gensupport.o: gensupport.cc $(BCONFIG_H) $(SYSTEM_H)             \
   $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h          \
   $(HASHTAB_H) $(READ_MD_H) $(GENSUPPORT_H) $(HASH_TABLE_H)
-build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)  \
+build/ggc-none.o : ggc-none.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)         \
   $(GGC_H)
-build/min-insn-modes.o : min-insn-modes.c $(BCONFIG_H) $(SYSTEM_H)     \
+build/min-insn-modes.o : min-insn-modes.cc $(BCONFIG_H) $(SYSTEM_H)    \
   $(CORETYPES_H)
-build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \
+build/print-rtl.o: print-rtl.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)        \
   $(GTM_H) $(RTL_BASE_H)
-build/read-md.o: read-md.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)     \
+build/read-md.o: read-md.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)    \
   $(HASHTAB_H) errors.h $(READ_MD_H)
-build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)   \
+build/read-rtl.o: read-rtl.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)  \
   $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) $(READ_MD_H)                \
   $(GENSUPPORT_H)
-build/rtl.o: rtl.c $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) $(SYSTEM_H)    \
+build/rtl.o: rtl.cc $(BCONFIG_H) $(CORETYPES_H) $(GTM_H) $(SYSTEM_H)   \
   $(RTL_H) $(GGC_H) errors.h
-build/vec.o : vec.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(VEC_H)   \
+build/vec.o : vec.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(VEC_H)  \
   $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H) $(HASH_TABLE_H)
-build/hash-table.o : hash-table.c $(BCONFIG_H) $(SYSTEM_H)             \
+build/hash-table.o : hash-table.cc $(BCONFIG_H) $(SYSTEM_H)            \
   $(CORETYPES_H) $(HASH_TABLE_H) $(GGC_H) toplev.h $(DIAGNOSTIC_CORE_H)
 build/sort.o : sort.cc $(BCONFIG_H) $(SYSTEM_H)
-build/inchash.o : inchash.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)    \
+build/inchash.o : inchash.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)   \
   $(HASHTAB_H) inchash.h
-build/gencondmd.o : build/gencondmd.c $(BCONFIG_H) $(SYSTEM_H)         \
+build/gencondmd.o : build/gencondmd.cc $(BCONFIG_H) $(SYSTEM_H)                \
   $(CORETYPES_H) $(GTM_H) insn-constants.h                             \
   $(filter-out insn-flags.h, $(RTL_H) $(TM_P_H) $(FUNCTION_H) $(REGS_H) \
   $(RECOG_H) output.h $(FLAGS_H) $(RESOURCE_H) toplev.h $(DIAGNOSTIC_CORE_H) reload.h  \
   $(EXCEPT_H) tm-constrs.h)
 # This pulls in tm-pred.h which contains inline functions wrapping up
 # predicates from the back-end so those functions must be discarded.
-# No big deal since gencondmd.c is a dummy file for non-GCC compilers.
+# No big deal since gencondmd.cc is a dummy file for non-GCC compilers.
 build/gencondmd.o : \
   BUILD_CFLAGS := $(filter-out -fkeep-inline-functions, $(BUILD_CFLAGS))
 
 # ...these are the programs themselves.
-build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)     \
+build/genattr.o : genattr.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)    \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genattr-common.o : genattr-common.c $(RTL_BASE_H) $(BCONFIG_H)   \
+build/genattr-common.o : genattr-common.cc $(RTL_BASE_H) $(BCONFIG_H)  \
   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H)           \
+build/genattrtab.o : genattrtab.cc $(RTL_BASE_H) $(OBSTACK_H)          \
   $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(GGC_H)   \
   $(READ_MD_H) $(GENSUPPORT_H) $(FNMATCH_H)
-build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H)         \
+build/genautomata.o : genautomata.cc $(RTL_BASE_H) $(OBSTACK_H)                \
   $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(VEC_H)   \
   $(HASHTAB_H) $(GENSUPPORT_H) $(FNMATCH_H)
-build/gencheck.o : gencheck.c all-tree.def $(BCONFIG_H) $(GTM_H)       \
+build/gencheck.o : gencheck.cc all-tree.def $(BCONFIG_H) $(GTM_H)      \
        $(SYSTEM_H) $(CORETYPES_H) tree.def c-family/c-common.def       \
        $(lang_tree_files) gimple.def
-build/genchecksum.o : genchecksum.c $(BCONFIG_H) $(SYSTEM_H) $(MD5_H)
-build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)   \
+build/genchecksum.o : genchecksum.cc $(BCONFIG_H) $(SYSTEM_H) $(MD5_H)
+build/gencodes.o : gencodes.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)  \
   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H)
-build/genconditions.o : genconditions.c $(RTL_BASE_H) $(BCONFIG_H)     \
+build/genconditions.o : genconditions.cc $(RTL_BASE_H) $(BCONFIG_H)    \
   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(HASHTAB_H)            \
   $(READ_MD_H) $(GENSUPPORT_H)
-build/genconfig.o : genconfig.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
+build/genconfig.o : genconfig.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)        \
   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H)
-build/genconstants.o : genconstants.c $(BCONFIG_H) $(SYSTEM_H)         \
+build/genconstants.o : genconstants.cc $(BCONFIG_H) $(SYSTEM_H)                \
   $(CORETYPES_H) errors.h $(READ_MD_H)
-build/genemit.o : genemit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)     \
+build/genemit.o : genemit.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)    \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) internal-fn.def
-build/genenums.o : genenums.c $(BCONFIG_H) $(SYSTEM_H)                 \
+build/genenums.o : genenums.cc $(BCONFIG_H) $(SYSTEM_H)                        \
   $(CORETYPES_H) errors.h $(READ_MD_H)
-build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H)           \
+build/genextract.o : genextract.cc $(RTL_BASE_H) $(BCONFIG_H)          \
   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H)  \
+build/genflags.o : genflags.cc $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \
   $(SYSTEM_H) $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/gentarget-def.o : gentarget-def.c $(BCONFIG_H) $(SYSTEM_H)       \
+build/gentarget-def.o : gentarget-def.cc $(BCONFIG_H) $(SYSTEM_H)      \
   $(CORETYPES_H) $(GTM_H) $(RTL_BASE_H) errors.h $(READ_MD_H)          \
   $(GENSUPPORT_H) $(HASH_TABLE_H) target-insns.def
-build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def
+build/gengenrtl.o : gengenrtl.cc $(BCONFIG_H) $(SYSTEM_H) rtl.def
 
 # The gengtype generator program is special: Two versions are built.
 # One is for the build machine, and one is for the host to allow
@@ -2866,21 +2898,21 @@ build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def
 GENGTYPE_OBJS = gengtype.o gengtype-parse.o gengtype-state.o \
   gengtype-lex.o errors.o
 
-gengtype-lex.o build/gengtype-lex.o : gengtype-lex.c gengtype.h $(SYSTEM_H)
+gengtype-lex.o build/gengtype-lex.o : gengtype-lex.cc gengtype.h $(SYSTEM_H)
 CFLAGS-gengtype-lex.o += -DHOST_GENERATOR_FILE
 build/gengtype-lex.o: $(BCONFIG_H)
 
-gengtype-parse.o build/gengtype-parse.o : gengtype-parse.c gengtype.h \
+gengtype-parse.o build/gengtype-parse.o : gengtype-parse.cc gengtype.h \
   $(SYSTEM_H)
 CFLAGS-gengtype-parse.o += -DHOST_GENERATOR_FILE
 build/gengtype-parse.o: $(BCONFIG_H)
 
-gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
+gengtype-state.o build/gengtype-state.o: gengtype-state.cc $(SYSTEM_H) \
   gengtype.h errors.h version.h $(HASHTAB_H) $(OBSTACK_H) \
   $(XREGEX_H)
 CFLAGS-gengtype-state.o += -DHOST_GENERATOR_FILE
 build/gengtype-state.o: $(BCONFIG_H)
-gengtype.o build/gengtype.o : gengtype.c $(SYSTEM_H) gengtype.h        \
+gengtype.o build/gengtype.o : gengtype.cc $(SYSTEM_H) gengtype.h       \
   rtl.def insn-notes.def errors.h version.h                    \
   $(HASHTAB_H) $(OBSTACK_H) $(XREGEX_H)
 CFLAGS-gengtype.o += -DHOST_GENERATOR_FILE
@@ -2888,30 +2920,30 @@ build/gengtype.o: $(BCONFIG_H)
 
 CFLAGS-errors.o += -DHOST_GENERATOR_FILE
 
-build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \
+build/genmddeps.o: genmddeps.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H)        \
   errors.h $(READ_MD_H)
-build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h                \
+build/genmodes.o : genmodes.cc $(BCONFIG_H) $(SYSTEM_H) errors.h               \
   $(HASHTAB_H) machmode.def $(extra_modes_file)
-build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
+build/genopinit.o : genopinit.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)        \
   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) optabs.def
-build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
+build/genoutput.o : genoutput.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)        \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)     \
+build/genpeep.o : genpeep.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)    \
   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H) toplev.h            \
   $(DIAGNOSTIC_CORE_H)
-build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)   \
+build/genpreds.o : genpreds.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)  \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) $(OBSTACK_H)
-build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)   \
+build/genrecog.o : genrecog.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)  \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)                \
   $(HASH_TABLE_H) inchash.h
-build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)            \
+build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF)           \
   $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
-build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
+build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)        \
   $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genmatch.o : genmatch.c $(BCONFIG_H) $(SYSTEM_H) \
+build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) \
   $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \
   tree.def builtins.def internal-fn.def case-cfn-macros.h $(CPPLIB_H)
-build/gencfn-macros.o : gencfn-macros.c $(BCONFIG_H) $(SYSTEM_H)       \
+build/gencfn-macros.o : gencfn-macros.cc $(BCONFIG_H) $(SYSTEM_H)      \
   $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-set.h builtins.def      \
   internal-fn.def
 
@@ -2964,7 +2996,7 @@ build/gengtype$(build_exeext) : build/gengtype-lex.o build/gengtype-parse.o \
 gengtype$(exeext) : gengtype.o gengtype-lex.o gengtype-parse.o \
               gengtype-state.o errors.o $(LIBDEPS)
        +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
-           $(filter-out ($LIBDEPS), $^) $(LIBS)
+           $(filter-out $(LIBDEPS), $^) $(LIBS)
 
 # Rule for the generator programs:
 $(genprog:%=build/gen%$(build_exeext)): build/gen%$(build_exeext): build/gen%.o $(BUILD_LIBDEPS)
@@ -2998,7 +3030,7 @@ s-omp-device-properties-h: @omp_device_property_deps@
 # Generated source files for gengtype.  Prepend inclusion of
 # config.h/bconfig.h because AIX requires _LARGE_FILES to be defined before
 # any system header is included.
-gengtype-lex.c : gengtype-lex.l
+gengtype-lex.cc : gengtype-lex.l
        -$(FLEX) $(FLEXFLAGS) -o$@ $< && { \
          echo '#ifdef HOST_GENERATOR_FILE' > $@.tmp; \
          echo '#include "config.h"'       >> $@.tmp; \
@@ -3041,13 +3073,13 @@ CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES)
 # Note for the stamp targets, we run the program `true' instead of
 # having an empty command (nothing following the semicolon).
 
-# genversion.c is run on the build machine to generate version.h
+# genversion.cc is run on the build machine to generate version.h
 CFLAGS-build/genversion.o += -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
        -DREVISION=$(REVISION_s) \
        -DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \
        -DBUGURL=$(BUGURL_s)
 
-build/genversion.o: genversion.c $(BCONFIG_H) $(SYSTEM_H) $(srcdir)/DATESTAMP
+build/genversion.o: genversion.cc $(BCONFIG_H) $(SYSTEM_H) $(srcdir)/DATESTAMP
 
 build/genversion$(build_exeext): build/genversion.o
        +$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \
@@ -3072,7 +3104,7 @@ gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(LIBDEPS)
                hash-table.o ggc-none.o\
                $(LIBS) -o $@
 
-GCOV_TOOL_DEP_FILES = $(srcdir)/../libgcc/libgcov-util.c gcov-io.c $(GCOV_IO_H) \
+GCOV_TOOL_DEP_FILES = $(srcdir)/../libgcc/libgcov-util.c gcov-io.cc $(GCOV_IO_H) \
   $(srcdir)/../libgcc/libgcov-driver.c $(srcdir)/../libgcc/libgcov-driver-system.c \
   $(srcdir)/../libgcc/libgcov-merge.c $(srcdir)/../libgcc/libgcov.h \
   $(SYSTEM_H) coretypes.h $(TM_H) $(CONFIG_H) version.h intl.h $(DIAGNOSTIC_H)
@@ -3093,7 +3125,7 @@ gcov-tool$(exeext): $(GCOV_TOOL_OBJS) $(LIBDEPS)
 # be rebuilt.
 
 # Build the include directories.
-stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
+stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(T_STDINT_GCC_H) $(USER_H) fixinc_list
 # Copy in the headers provided with gcc.
 #
 # The sed command gets just the last file name component;
@@ -3139,30 +3171,33 @@ stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
          cp $(srcdir)/ginclude/stdint-wrap.h include/stdint.h; \
          chmod a+r include/stdint.h; \
        elif [ $(USE_GCC_STDINT) = provide ]; then \
-         cp $(srcdir)/ginclude/stdint-gcc.h include/stdint.h; \
+         cp $(T_STDINT_GCC_H) include/stdint.h; \
          chmod a+r include/stdint.h; \
        fi
        set -e; for ml in `cat fixinc_list`; do \
          sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
-         fix_dir=include-fixed$${multi_dir}; \
+         include_dir=include$${multi_dir}; \
          if $(LIMITS_H_TEST) ; then \
            cat $(srcdir)/limitx.h $(T_GLIMITS_H) $(srcdir)/limity.h > tmp-xlimits.h; \
          else \
            cat $(T_GLIMITS_H) > tmp-xlimits.h; \
          fi; \
-         $(mkinstalldirs) $${fix_dir}; \
-         chmod a+rx $${fix_dir} || true; \
+         $(mkinstalldirs) $${include_dir}; \
+         chmod a+rx $${include_dir} || true; \
          $(SHELL) $(srcdir)/../move-if-change \
            tmp-xlimits.h  tmp-limits.h; \
-         rm -f $${fix_dir}/limits.h; \
-         cp -p tmp-limits.h $${fix_dir}/limits.h; \
-         chmod a+r $${fix_dir}/limits.h; \
+         rm -f $${include_dir}/limits.h; \
+         cp -p tmp-limits.h $${include_dir}/limits.h; \
+         chmod a+r $${include_dir}/limits.h; \
+         cp $(srcdir)/gsyslimits.h $${include_dir}/syslimits.h; \
        done
 # Install the README
-       rm -f include-fixed/README
-       cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
-       chmod a+r include-fixed/README
+       if [ x$(STMP_FIXINC) != x ]; then \
+         rm -f include-fixed/README; \
+         cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README; \
+         chmod a+r include-fixed/README; \
+       fi;
        $(STAMP) $@
 
 .PHONY: install-gcc-tooldir
@@ -3247,13 +3282,6 @@ stmp-fixinc: gsyslimits.h macro_list fixinc_list \
              cd $(build_objdir)/fixincludes && \
              $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
                $(BUILD_SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
-           rm -f $${fix_dir}/syslimits.h; \
-           if [ -f $${fix_dir}/limits.h ]; then \
-             mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \
-           else \
-             cp $(srcdir)/gsyslimits.h $${fix_dir}/syslimits.h; \
-           fi; \
-           chmod a+r $${fix_dir}/syslimits.h; \
          done; \
        fi
        $(STAMP) stmp-fixinc
@@ -3507,7 +3535,7 @@ mostlyclean: lang.mostlyclean
        -rm -f build/*
        -rm -f mddeps.mk
 # Delete other built files.
-       -rm -f specs.h options.c options.h options-save.c
+       -rm -f specs.h options.cc options.h options-save.cc
 # Delete the stamp and temporary files.
        -rm -f s-* tmp-* stamp-* stmp-*
        -rm -f */stamp-* */tmp-*
@@ -3530,7 +3558,7 @@ mostlyclean: lang.mostlyclean
        -rm -f gt-*
        -rm -f gtype.state
 # Delete genchecksum outputs
-       -rm -f *-checksum.c
+       -rm -f *-checksum.cc
 # Delete lock-and-run bits
        -rm -rf linkfe.lck lock-stamp.*
 
@@ -3541,7 +3569,7 @@ clean: mostlyclean lang.clean
        -rm -f libgcc_s*
        -rm -f libunwind*
        -rm -f config.h tconfig.h bconfig.h tm_p.h tm.h
-       -rm -f options.c options.h optionlist
+       -rm -f options.cc options.h optionlist
        -rm -f cs-*
        -rm -f doc/*.dvi
        -rm -f doc/*.pdf
@@ -3568,7 +3596,7 @@ distclean: clean lang.distclean
        -rm -f *.asm
        -rm -f site.exp site.bak testsuite/site.exp testsuite/site.bak
        -rm -f testsuite/*.log testsuite/*.sum
-       -cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.c
+       -cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.cc
        -cd testsuite && rm -f *.out *.gcov *$(coverageexts)
        -rm -rf ${QMTEST_DIR} stamp-qmtest
        -rm -f .gdbinit configargs.h
@@ -3685,7 +3713,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
 # We keep the directory structure for files in config, common/config or
 # c-family and .def files. All other files are flattened to a single directory.
        $(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
-       headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
+       headers=`echo $(sort $(PLUGIN_HEADERS)) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
        srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
        for file in $$headers; do \
          if [ -f $$file ] ; then \
@@ -3971,7 +3999,7 @@ install-mkheaders: stmp-int-hdrs install-itoolsdirs \
        set -e; for ml in `cat fixinc_list`; do \
          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
          $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
-         $(INSTALL_DATA) include-fixed$${multi_dir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
+         $(INSTALL_DATA) include$${multi_dir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
        done
        $(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
                $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
@@ -4307,7 +4335,7 @@ qmtest-gui: ${QMTEST_DIR}/context
 
 .PHONY: qmtest-g++
 
-# Run Paranoia on real.c.
+# Run Paranoia on real.cc.
 
 paranoia.o: $(srcdir)/../contrib/paranoia.cc $(CONFIG_H) $(SYSTEM_H) $(TREE_H)
        g++ -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
@@ -4317,6 +4345,10 @@ paranoia: paranoia.o real.o $(LIBIBERTY)
 
 # These exist for maintenance purposes.
 
+CTAGS=@CTAGS@
+ETAGS=@ETAGS@
+CSCOPE=@CSCOPE@
+
 # Update the tags table.
 TAGS: lang.tags
        (cd $(srcdir);                                  \
@@ -4326,14 +4358,14 @@ TAGS: lang.tags
            incs="$$incs --include $$dir/TAGS.sub";     \
          fi;                                           \
        done;                                           \
-       etags -o TAGS.sub c-family/*.h c-family/*.c c-family/*.cc \
-             *.h *.c *.cc \
+       $(ETAGS) -o TAGS.sub c-family/*.h c-family/*.cc \
+             *.h *.cc \
              ../include/*.h ../libiberty/*.c \
-             ../libcpp/*.c ../libcpp/include/*.h \
+             ../libcpp/*.cc ../libcpp/include/*.h \
              --language=none --regex="/\(char\|unsigned int\|int\|bool\|void\|HOST_WIDE_INT\|enum [A-Za-z_0-9]+\) [*]?\([A-Za-z_0-9]+\)/\2/" common.opt        \
              --language=none --regex="/\(DEF_RTL_EXPR\|DEFTREECODE\|DEFGSCODE\|DEFTIMEVAR\|DEFPARAM\|DEFPARAMENUM5\)[ ]?(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def timevar.def \
                ; \
-       etags --include TAGS.sub $$incs)
+       $(ETAGS) --include TAGS.sub $$incs)
 
 # -----------------------------------------------------
 # Rules for generating translated message descriptions.