Skip to content

Commit

Permalink
Add rtl-ssa
Browse files Browse the repository at this point in the history
This patch adds the RTL SSA infrastructure itself.  The following
fwprop.c patch will make use of it.

gcc/
	* configure.ac: Add rtl-ssa to the list of dependence directories.
	* configure: Regenerate.
	* Makefile.in (rtl-ssa-warn): New variable.
	(OBJS): Add the rtl-ssa object files.
	* emit-rtl.h (rtl_data::ssa): New field.
	* rtl-ssa.h: New file.
	* system.h: Include <functional> when INCLUDE_FUNCTIONAL is defined.
	* rtl-ssa/access-utils.h: Likewise.
	* rtl-ssa/accesses.h: New file.
	* rtl-ssa/accesses.cc: Likewise.
	* rtl-ssa/blocks.h: New file.
	* rtl-ssa/blocks.cc: Likewise.
	* rtl-ssa/change-utils.h: Likewise.
	* rtl-ssa/changes.h: New file.
	* rtl-ssa/changes.cc: Likewise.
	* rtl-ssa/functions.h: New file.
	* rtl-ssa/functions.cc: Likewise.
	* rtl-ssa/insn-utils.h: Likewise.
	* rtl-ssa/insns.h: New file.
	* rtl-ssa/insns.cc: Likewise.
	* rtl-ssa/internals.inl: Likewise.
	* rtl-ssa/is-a.inl: Likewise.
	* rtl-ssa/member-fns.inl: Likewise.
	* rtl-ssa/movement.h: Likewise.
  • Loading branch information
rsandifo-arm committed Dec 17, 2020
1 parent 47d52e1 commit 73b7582
Show file tree
Hide file tree
Showing 23 changed files with 10,061 additions and 2 deletions.
6 changes: 6 additions & 0 deletions gcc/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ 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)
rtl-ssa-warn = $(STRICT_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)

Expand Down Expand Up @@ -1525,6 +1526,11 @@ OBJS = \
reorg.o \
resource.o \
rtl-error.o \
rtl-ssa/accesses.o \
rtl-ssa/blocks.o \
rtl-ssa/changes.o \
rtl-ssa/functions.o \
rtl-ssa/insns.o \
rtl-tests.o \
rtl.o \
rtlhash.o \
Expand Down
2 changes: 1 addition & 1 deletion gcc/configure
Original file line number Diff line number Diff line change
Expand Up @@ -33265,7 +33265,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
"depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
"gccdepdir":C)
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
for lang in $subdirs c-family common analyzer
for lang in $subdirs c-family common analyzer rtl-ssa
do
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
done ;;
Expand Down
2 changes: 1 addition & 1 deletion gcc/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1242,7 +1242,7 @@ AC_CHECK_HEADERS(ext/hash_map)
ZW_CREATE_DEPDIR
AC_CONFIG_COMMANDS([gccdepdir],[
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
for lang in $subdirs c-family common analyzer
for lang in $subdirs c-family common analyzer rtl-ssa
do
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
Expand Down
3 changes: 3 additions & 0 deletions gcc/emit-rtl.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
class temp_slot;
typedef class temp_slot *temp_slot_p;
class predefined_function_abi;
namespace rtl_ssa { class function_info; }

/* Information mainlined about RTL representation of incoming arguments. */
struct GTY(()) incoming_args {
Expand Down Expand Up @@ -73,6 +74,8 @@ struct GTY(()) rtl_data {
different ABIs. */
const predefined_function_abi *GTY((skip)) abi;

rtl_ssa::function_info *GTY((skip)) ssa;

/* For function.c */

/* # of bytes of outgoing arguments. If ACCUMULATE_OUTGOING_ARGS is
Expand Down
71 changes: 71 additions & 0 deletions gcc/rtl-ssa.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// On-the-side RTL SSA representation -*- C++ -*-
// Copyright (C) 2020 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 3, or (at your option) any later
// version.
//
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License
// along with GCC; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.

#ifndef GCC_RTL_SSA_H
#define GCC_RTL_SSA_H 1

// This is an aggregation header file. This means it should contain only
// other include files.

#if 0
// Files that use this one should first have:
#define INCLUDE_ALGORITHM
#define INCLUDE_FUNCTIONAL
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "rtl.h"
#include "df.h"
#endif

// Needed by splay-tree-utils.h and directly by rtl-ssa.
#include "pretty-print.h"

// Needed directly by recog.h.
#include "insn-config.h"

// Needed directly by rtl-ssa.
#include "splay-tree-utils.h"
#include "recog.h"
#include "regs.h"
#include "function-abi.h"
#include "obstack-utils.h"
#include "mux-utils.h"
#include "rtlanal.h"

// Provides the global crtl->ssa.
#include "tm_p.h"
#include "memmodel.h"
#include "emit-rtl.h"

// The rtl-ssa files themselves.
#include "rtl-ssa/accesses.h"
#include "rtl-ssa/insns.h"
#include "rtl-ssa/blocks.h"
#include "rtl-ssa/changes.h"
#include "rtl-ssa/functions.h"
#include "rtl-ssa/is-a.inl"
#include "rtl-ssa/access-utils.h"
#include "rtl-ssa/insn-utils.h"
#include "rtl-ssa/movement.h"
#include "rtl-ssa/change-utils.h"
#include "rtl-ssa/member-fns.inl"

#endif

0 comments on commit 73b7582

Please sign in to comment.