gimplify-be.h: New file.
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 14 Nov 2013 19:39:38 +0000 (19:39 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Thu, 14 Nov 2013 19:39:38 +0000 (19:39 +0000)
* gimplify-be.h:  New file.  Add prototypes.
* gimplify.h: Don't include gimple.h.
(struct gimplify_hasher, struct gimplify_ctx, is_gimple_sizepos,
gimplify_hasher::hash, gimplify_hasher::equal): Relocate from gimple.h.
* gimple.h (struct gimplify_hasher, gimplify_hasher::hash,
gimplify_hasher::equal, struct gimplify_ctx, is_gimple_sizepos): Move
to gimplify.h.
(enum gsi_iterator_update): Move to gimple-iterator.h.
* gimple-iterator.h (enum gsi_iterator_update): Relocate from gimple.h.
* gimplify-be.c: New File.
(force_gimple_operand_1, force_gimple_operand,
force_gimple_operand_gsi_1, force_gimple_operand_gsi): Relocate from
gimplify.c.
* gimplify.c (force_gimple_operand_1, force_gimple_operand,
force_gimple_operand_gsi_1, force_gimple_operand_gsi): Move to
gimplify-be.c.
* Makefile.in (OBJS): Add gimplify-be.o
* asan.c: Include only gimplify.h, gimplify-be.h, and/or gimple.h as
required.
* cfgloopmanip.c: Likewise.
* cgraphunit.c: Likewise.
* cilk-common.c: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* gimple-expr.c: Likewise.
* gimple-fold.c: Likewise.
* gimple-ssa-strength-reduction.c: Likewise.
* gimple.c: Likewise.
* graphite-clast-to-gimple.c: Likewise.
* graphite-sese-to-poly.c: Likewise.
* ipa-prop.c: Likewise.
* ipa-split.c: Likewise.
* ipa.c: Likewise.
* langhooks.c: Likewise.
* omp-low.c: Likewise.
* sese.c: Likewise.
* stor-layout.c: Likewise.
* targhooks.c: Likewise.
* trans-mem.c: Likewise.
* tree-affine.c: Likewise.
* tree-cfg.c: Likewise.
* tree-cfgcleanup.c: Likewise.
* tree-complex.c: Likewise.
* tree-if-conv.c: Likewise.
* tree-inline.c: Likewise.
* tree-loop-distribution.c: Likewise.
* tree-nested.c: Likewise.
* tree-parloops.c: Likewise.
* tree-predcom.c: Likewise.
* tree-profile.c: Likewise.
* tree-scalar-evolution.c: Likewise.
* tree-sra.c: Likewise.
* tree-ssa-address.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-dce.c: Likewise.
* tree-ssa-forwprop.c: Likewise.
* tree-ssa-ifcombine.c: Likewise.
* tree-ssa-loop-im.c: Likewise.
* tree-ssa-loop-ivopts.c: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-ssa-loop-prefetch.c: Likewise.
* tree-ssa-loop-unswitch.c: Likewise.
* tree-ssa-math-opts.c: Likewise.
* tree-ssa-phiopt.c: Likewise.
* tree-ssa-phiprop.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-propagate.c: Likewise.
* tree-ssa-reassoc.c: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-ssa-strlen.c: Likewise.
* tree-ssa.c: Likewise.
* tree-switch-conversion.c: Likewise.
* tree-tailcall.c: Likewise.
* tree-vect-data-refs.c: Likewise.
* tree-vect-generic.c: Likewise.
* tree-vect-loop-manip.c: Likewise.
* tree-vect-loop.c: Likewise.
* tree-vect-patterns.c: Likewise.
* tree-vect-stmts.c: Likewise.
* tree.c: Likewise.
* tsan.c: Likewise.
* value-prof.c: Likewise.
* config/aarch64/aarch64.c: Likewise.
* config/alpha/alpha.c: Likewise.
* config/darwin.c: Likewise.
* config/i386/i386.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/mep/mep.c: Likewise.
* config/mips/mips.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/s390/s390.c: Likewise.
* config/sh/sh.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/spu/spu.c: Likewise.
* config/stormy16/stormy16.c: Likewise.
* config/tilegx/tilegx.c: Likewise.
* config/tilepro/tilepro.c: Likewise.
* config/xtensa/xtensa.c: Likewise.

* c/c-typeck.c: Include only gimplify.h and gimple.h as needed.
* c-family/c-common.c: Likewise.
* c-family/c-gimplify.c: Likewise.
* c-family/cilk.c: Likewise.

* cp/class.c: Include only gimplify.h and gimple.h as needed.
* cp/cp-gimplify.c: Likewise.
* cp/error.c: Likewise.
* cp/init.c: Likewise.
* cp/optimize.c: Likewise.
* cp/pt.c: Likewise.
* cp/semantics.c: Likewise.
* cp/tree.c: Likewise.
* cp/vtable-class-hierarchy.c: Likewise.

* fortran/trans-expr.c: Include only gimplify.h and gimple.h as needed.
* fortran/trans-openmp.c: Likewise.

* go/go-lang.c: Include only gimplify.h and gimple.h as needed.

* java/java-gimplify.c: Include only gimplify.h and gimple.h as needed.

* objc/objc-act.c: Include only gimplify.h and gimple.h as needed.

From-SVN: r204812

114 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/asan.c
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-gimplify.c
gcc/c-family/cilk.c
gcc/c/ChangeLog
gcc/c/c-typeck.c
gcc/cfgloopmanip.c
gcc/cgraphunit.c
gcc/cilk-common.c
gcc/config/aarch64/aarch64.c
gcc/config/alpha/alpha.c
gcc/config/darwin.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/mep/mep.c
gcc/config/mips/mips.c
gcc/config/rs6000/rs6000.c
gcc/config/s390/s390.c
gcc/config/sh/sh.c
gcc/config/sparc/sparc.c
gcc/config/spu/spu.c
gcc/config/stormy16/stormy16.c
gcc/config/tilegx/tilegx.c
gcc/config/tilepro/tilepro.c
gcc/config/xtensa/xtensa.c
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-gimplify.c
gcc/cp/error.c
gcc/cp/init.c
gcc/cp/optimize.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/cp/tree.c
gcc/cp/vtable-class-hierarchy.c
gcc/fold-const.c
gcc/fortran/ChangeLog
gcc/fortran/trans-expr.c
gcc/fortran/trans-openmp.c
gcc/function.c
gcc/gimple-expr.c
gcc/gimple-fold.c
gcc/gimple-iterator.h
gcc/gimple-ssa-strength-reduction.c
gcc/gimple.c
gcc/gimple.h
gcc/gimplify-me.c [new file with mode: 0644]
gcc/gimplify-me.h [new file with mode: 0644]
gcc/gimplify.c
gcc/gimplify.h
gcc/go/ChangeLog
gcc/go/go-lang.c
gcc/graphite-clast-to-gimple.c
gcc/graphite-sese-to-poly.c
gcc/ipa-prop.c
gcc/ipa-split.c
gcc/ipa.c
gcc/java/ChangeLog
gcc/java/java-gimplify.c
gcc/langhooks.c
gcc/objc/ChangeLog
gcc/objc/objc-act.c
gcc/omp-low.c
gcc/sese.c
gcc/stor-layout.c
gcc/targhooks.c
gcc/trans-mem.c
gcc/tree-affine.c
gcc/tree-cfg.c
gcc/tree-cfgcleanup.c
gcc/tree-complex.c
gcc/tree-if-conv.c
gcc/tree-inline.c
gcc/tree-loop-distribution.c
gcc/tree-nested.c
gcc/tree-parloops.c
gcc/tree-predcom.c
gcc/tree-profile.c
gcc/tree-scalar-evolution.c
gcc/tree-sra.c
gcc/tree-ssa-address.c
gcc/tree-ssa-ccp.c
gcc/tree-ssa-dce.c
gcc/tree-ssa-forwprop.c
gcc/tree-ssa-ifcombine.c
gcc/tree-ssa-loop-im.c
gcc/tree-ssa-loop-ivopts.c
gcc/tree-ssa-loop-manip.c
gcc/tree-ssa-loop-niter.c
gcc/tree-ssa-loop-prefetch.c
gcc/tree-ssa-loop-unswitch.c
gcc/tree-ssa-math-opts.c
gcc/tree-ssa-phiopt.c
gcc/tree-ssa-phiprop.c
gcc/tree-ssa-pre.c
gcc/tree-ssa-propagate.c
gcc/tree-ssa-reassoc.c
gcc/tree-ssa-sccvn.c
gcc/tree-ssa-strlen.c
gcc/tree-ssa.c
gcc/tree-switch-conversion.c
gcc/tree-tailcall.c
gcc/tree-vect-data-refs.c
gcc/tree-vect-generic.c
gcc/tree-vect-loop-manip.c
gcc/tree-vect-loop.c
gcc/tree-vect-patterns.c
gcc/tree-vect-stmts.c
gcc/tree.c
gcc/tsan.c
gcc/value-prof.c

index e9ae5c939bad830a508aeaae832b7831c44b2fea..e6f7a6d77139c87ef4547d1f90daee8ff4e4420d 100644 (file)
@@ -1,3 +1,106 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * gimplify-me.h:  New file.  Add prototypes.
+       * gimplify.h: Don't include gimple.h.
+       (struct gimplify_hasher, struct gimplify_ctx, is_gimple_sizepos):
+       Relocate from gimple.h.
+       * gimple.h (struct gimplify_hasher, struct gimplify_ctx,
+       is_gimple_sizepos): Move to gimplify.h.
+       (gimplify_hasher::hash, gimplify_hasher::equal): Move to gimplify.c.
+       (enum gsi_iterator_update): Move to gimple-iterator.h.
+       * gimple-iterator.h (enum gsi_iterator_update): Relocate from gimple.h.
+       * gimplify-me.c: New File.
+       (force_gimple_operand_1, force_gimple_operand,
+       force_gimple_operand_gsi_1, force_gimple_operand_gsi,
+       gimple_regimplify_operands): Relocate from gimplify.c.
+       * gimplify.c (force_gimple_operand_1, force_gimple_operand,
+       force_gimple_operand_gsi_1, force_gimple_operand_gsi,
+       gimple_regimplify_operands): Move to gimplify-me.c.
+       (gimplify_hasher::hash, gimplify_hasher::equal): Relocate from gimple.h.
+       * Makefile.in (OBJS): Add gimplify-me.o
+       * asan.c: Include only gimplify.h, gimplify-me.h, and/or gimple.h as
+       required.
+       * cfgloopmanip.c: Likewise.
+       * cgraphunit.c: Likewise.
+       * cilk-common.c: Likewise.
+       * fold-const.c: Likewise.
+       * function.c: Likewise.
+       * gimple-expr.c: Likewise.
+       * gimple-fold.c: Likewise.
+       * gimple-ssa-strength-reduction.c: Likewise.
+       * gimple.c: Likewise.
+       * graphite-clast-to-gimple.c: Likewise.
+       * graphite-sese-to-poly.c: Likewise.
+       * ipa-prop.c: Likewise.
+       * ipa-split.c: Likewise.
+       * ipa.c: Likewise.
+       * langhooks.c: Likewise.
+       * omp-low.c: Likewise.
+       * sese.c: Likewise.
+       * stor-layout.c: Likewise.
+       * targhooks.c: Likewise.
+       * trans-mem.c: Likewise.
+       * tree-affine.c: Likewise.
+       * tree-cfg.c: Likewise.
+       * tree-cfgcleanup.c: Likewise.
+       * tree-complex.c: Likewise.
+       * tree-if-conv.c: Likewise.
+       * tree-inline.c: Likewise.
+       * tree-loop-distribution.c: Likewise.
+       * tree-nested.c: Likewise.
+       * tree-parloops.c: Likewise.
+       * tree-predcom.c: Likewise.
+       * tree-profile.c: Likewise.
+       * tree-scalar-evolution.c: Likewise.
+       * tree-sra.c: Likewise.
+       * tree-ssa-address.c: Likewise.
+       * tree-ssa-ccp.c: Likewise.
+       * tree-ssa-dce.c: Likewise.
+       * tree-ssa-forwprop.c: Likewise.
+       * tree-ssa-ifcombine.c: Likewise.
+       * tree-ssa-loop-im.c: Likewise.
+       * tree-ssa-loop-ivopts.c: Likewise.
+       * tree-ssa-loop-manip.c: Likewise.
+       * tree-ssa-loop-niter.c: Likewise.
+       * tree-ssa-loop-prefetch.c: Likewise.
+       * tree-ssa-loop-unswitch.c: Likewise.
+       * tree-ssa-math-opts.c: Likewise.
+       * tree-ssa-phiopt.c: Likewise.
+       * tree-ssa-phiprop.c: Likewise.
+       * tree-ssa-pre.c: Likewise.
+       * tree-ssa-propagate.c: Likewise.
+       * tree-ssa-reassoc.c: Likewise.
+       * tree-ssa-sccvn.c: Likewise.
+       * tree-ssa-strlen.c: Likewise.
+       * tree-ssa.c: Likewise.
+       * tree-switch-conversion.c: Likewise.
+       * tree-tailcall.c: Likewise.
+       * tree-vect-data-refs.c: Likewise.
+       * tree-vect-generic.c: Likewise.
+       * tree-vect-loop-manip.c: Likewise.
+       * tree-vect-loop.c: Likewise.
+       * tree-vect-patterns.c: Likewise.
+       * tree-vect-stmts.c: Likewise.
+       * tree.c: Likewise.
+       * tsan.c: Likewise.
+       * value-prof.c: Likewise.
+       * config/aarch64/aarch64.c: Likewise.
+       * config/alpha/alpha.c: Likewise.
+       * config/darwin.c: Likewise.
+       * config/i386/i386.c: Likewise.
+       * config/ia64/ia64.c: Likewise.
+       * config/mep/mep.c: Likewise.
+       * config/mips/mips.c: Likewise.
+       * config/rs6000/rs6000.c: Likewise.
+       * config/s390/s390.c: Likewise.
+       * config/sh/sh.c: Likewise.
+       * config/sparc/sparc.c: Likewise.
+       * config/spu/spu.c: Likewise.
+       * config/stormy16/stormy16.c: Likewise.
+       * config/tilegx/tilegx.c: Likewise.
+       * config/tilepro/tilepro.c: Likewise.
+       * config/xtensa/xtensa.c: Likewise.
+
 2013-11-14  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        * config/arc/arc.md (doloop_begin_i): Remove extra alignment;
index 2987506e2983e011a3d8d96903e812ef0331f07c..806b6caa8ceb9f75005f3d48fe1a1bdec4fb9f94 100644 (file)
@@ -1242,6 +1242,7 @@ OBJS = \
        gimple-streamer-out.o \
        gimple-walk.o \
        gimplify.o \
+       gimplify-me.o \
        godump.o \
        graph.o \
        graphds.o \
index a3fb51fa8dbf552dd28329b1f7f1d8f49254c844..2a1dceba9584e5d87d2feb4fcfb62cfb08d8c472 100644 (file)
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "tree-iterator.h"
index e4e6163e0916cebf64cb9aacf433a99cc3fc8760..9deab9e7f58287caa5162731701a34a37e179b0a 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * c-common.c: Likewise.
+       * c-gimplify.c: Likewise.
+       * cilk.c: Likewise.
+
 2013-11-13  Joseph Myers  <joseph@codesourcery.com>
 
        * c-common.h (enum rid): Add RID_AUTO_TYPE.
 
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * c-family/c-common.c: Include gimplify.h.
-       * c-family/c-gimplify.c: Likewise.
-       * c-family/cilk.c: Likewise.
-       * c-family/c-omp.c: Include gimple-expr.h instead of gimple.h.
-       * c-family/c-ubsan.c: Don't include gimple.h.
+       * c-common.c: Include gimplify.h.
+       * c-gimplify.c: Likewise.
+       * cilk.c: Likewise.
+       * c-omp.c: Include gimple-expr.h instead of gimple.h.
+       * c-ubsan.c: Don't include gimple.h.
 
 2013-11-12  Joseph Myers  <joseph@codesourcery.com>
 
index 1f5e4ededa170c026c7632b77a4a9ad5480ac7ff..7955bb1bb155080aaaca044b3262911ec634d614 100644 (file)
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "opts.h"
 #include "cgraph.h"
 #include "target-def.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 cpp_reader *parse_in;          /* Declared in c-pragma.h.  */
index a7f29f8b4fc51b0adfc0e5b7d3e0d815b5c6764a..d3c304e11371fcaf9e10f9e99dd3ca0d63a98600 100644 (file)
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "tree.h"
 #include "c-common.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-inline.h"
 #include "diagnostic-core.h"
index f6d7dce01ce35df1eeba31575319c57f0cdd2b6a..165348f124cfacb7ed5b5026a8715995b39d6d52 100644 (file)
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tree.h"
 #include "langhooks.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-iterator.h"
 #include "tree-inline.h"
index b9b9dc9cacc61e0f78686ce5119f68f118bf852b..6d390095fdee5bb54875960d40bb926c88489d8d 100644 (file)
@@ -1,3 +1,7 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * c-typeck.c: Include only gimplify.h and gimple.h as needed.
+
 2013-11-13  Joseph Myers  <joseph@codesourcery.com>
 
        * c-tree.h (c_typespec_keyword): Add cts_auto_type.
@@ -16,7 +20,7 @@
 
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * c/c-typeck.c: Include gimplify.h.
+       * c-typeck.c: Include gimplify.h.
 
 2013-11-12  Joseph Myers  <joseph@codesourcery.com>
 
index 1cf9b4563bc2ab670f1bb9ca23540cdafc09d226..a9c9e6eb02aaf3103bb1a21c6f631bb13a5c2b73 100644 (file)
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "tree-iterator.h"
 #include "bitmap.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-inline.h"
 #include "omp-low.h"
index 6448605823b0bc35412c02937f67f767946a320a..0fc6552746bf9601d7ee0c6cc18f509b22dfda5c 100644 (file)
@@ -25,8 +25,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "cfgloop.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "tree-ssa-loop-manip.h"
 #include "dumpfile.h"
 
index 51961fc7a792d57b4ba0f3be53e3d859e9cf9d7a..8ab274b5640659d933b108beb06385318ad5e8a7 100644 (file)
@@ -164,8 +164,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "output.h"
 #include "rtl.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-into-ssa.h"
index 216c7d43607ffe1de904b4ae943b22e59cb2c395..8e070a3a32dd18fbc6579eea7b2e324d984c653e 100644 (file)
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "optabs.h"
 #include "recog.h"
 #include "tree-iterator.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "cilk.h"
 
index a8e7b7afca42181ddc8348cebc8a2b6099063efd..cfda95e04916dddfce966fcd93b8304e01bc00fe 100644 (file)
@@ -42,6 +42,7 @@
 #include "recog.h"
 #include "langhooks.h"
 #include "diagnostic-core.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "optabs.h"
 #include "dwarf2.h"
index 9c8d907cd23b5e7e685a9ebe8bdf9ac7185b2929..cc455e206f19f191998bf525b322fe8a08f8d529 100644 (file)
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "debug.h"
 #include "langhooks.h"
 #include "splay-tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-ssa.h"
 #include "tree-ssanames.h"
index 009e851835c88931517b4e19c53170a2470ce39b..3a5287fe744a5dcaaf911984295ea6ae30fb242a 100644 (file)
@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "df.h"
 #include "debug.h"
 #include "obstack.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "lto-streamer.h"
 
index 8716571346918d73e437744f4ffd7ab23546b057..d581b969b0b4b9b72ae0647fd0632773c68c4bfd 100644 (file)
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "langhooks.h"
 #include "reload.h"
 #include "cgraph.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "dwarf2.h"
 #include "df.h"
index a28575c0bf6710cd6e9f2e3443bbe48d54206382..e6bd96df881b9bbcaa12a8b54266ff45f4551f60 100644 (file)
@@ -49,6 +49,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "hash-table.h"
 #include "langhooks.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "intl.h"
 #include "df.h"
index f67bf855121daf6982945ec7dac41efbb7638cc3..489bef9c2d3dcf4bfdce4b72efe39e7499412c42 100644 (file)
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target-def.h"
 #include "langhooks.h"
 #include "df.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "opts.h"
 #include "dumpfile.h"
index ece4fec5413f7caca32c9a91ce6d3811b8a5f4b0..b2fd57bb5ffacfdd86926a2988235b29e53bdbc7 100644 (file)
@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "common/common-target.h"
 #include "langhooks.h"
 #include "sched-int.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "bitmap.h"
 #include "diagnostic.h"
index c6b61717538873da71ada4fcccd3acc970e8c8ac..539dc56153dabf3c9114be85a3857918cb23915d 100644 (file)
@@ -51,6 +51,7 @@
 #include "reload.h"
 #include "cfgloop.h"
 #include "sched-int.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
index ca6503540b15df49318eeee55f016a1902feccda..ed8eefa31f7a767740ce950da796debc10ec2fd5 100644 (file)
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "debug.h"
 #include "langhooks.h"
 #include "optabs.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "df.h"
 #include "params.h"
index 973d25ae38bb4bc569bc4822d1ae3f7fbb525bbe..b812b8c584bc31ea3ea776819e8b6791ad041cbb 100644 (file)
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "sched-int.h"
 #include "params.h"
 #include "ggc.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "cfgloop.h"
 #include "alloc-pool.h"
index f2552bea63cfe378348a6c94acd6af9f6e3d0df4..e72ee3f6b671c30799cc1c8e6b470e4c11b754f5 100644 (file)
@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "target-def.h"
 #include "common/common-target.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "langhooks.h"
 #include "reload.h"
index 7dedaed4e104bd45ead26dae4b862d874da904a3..e344b73fce68f60c84f667570223471b4f4861b1 100644 (file)
@@ -45,6 +45,7 @@
 #include "sched-int.h"
 #include "params.h"
 #include "machmode.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tm-constrs.h"
 #include "ddg.h"
index 7704fff073ac9c2733e20d2e4a6bbeaac736c79d..3a08534be517023c34014e55a4c143d3fc1f6515 100644 (file)
@@ -43,6 +43,7 @@
 #include "target-def.h"
 #include "tm_p.h"
 #include "langhooks.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "df.h"
 #include "reload.h"
index d20476f16106a5cb9fcb50aa3e70e0abc36eb8d0..bf13d11b8201769b68258c98881fab216955b762 100644 (file)
@@ -40,6 +40,7 @@
 #include "dwarf2.h"
 #include "timevar.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "cfgloop.h"
 #include "tilegx-builtins.h"
index 84b3ef53bb8c3b6338ec61031d28daede33e2197..d497f64125f55cbf3685fbefb1684f1a0427d029 100644 (file)
@@ -41,6 +41,7 @@
 #include "dwarf2.h"
 #include "timevar.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "cfgloop.h"
 #include "tilepro-builtins.h"
index 757314d58df2dfe8e27b0aacf904e800683fd4a0..6385c5df555174bfad4195ff3a298467346c1ed5 100644 (file)
@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "target-def.h"
 #include "langhooks.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "df.h"
 
index 7c6b2319e35c0b028b15dfd26e0f30dbf860c0b6..54e424f1678a3459bfbf67542ccb3ebeb7859867 100644 (file)
@@ -1,17 +1,29 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * class.c: Include only gimplify.h and gimple.h as needed.
+       * cp-gimplify.c: Likewise.
+       * error.c: Likewise.
+       * init.c: Likewise.
+       * optimize.c: Likewise.
+       * pt.c: Likewise.
+       * semantics.c: Likewise.
+       * tree.c: Likewise.
+       * vtable-class-hierarchy.c: Likewise.
+
 2013-11-12  Andrew MacLeod <amacleod@redhat.com>
 
-       * cp/class.c: Include gimplify.h.
-       * cp/cp-gimplify.c: Likewise.
-       * cp/error.c: Likewise.
-       * cp/init.c: Likewise.
-       * cp/optimize.c: Likewise.
-       * cp/pt.c: Likewise.
-       * cp/semantics.c: Likewise.
-       * cp/tree.c: Likewise.
-       * cp/vtable-class-hierarchy.c: Likewise.
-       * cp/decl2.c: Don't include gimple.h.
-       * cp/except.c: Likewise.
-       * cp/method.c: Include pointer-set.h instead of gimple.h.
+       * class.c: Include gimplify.h.
+       * cp-gimplify.c: Likewise.
+       * error.c: Likewise.
+       * init.c: Likewise.
+       * optimize.c: Likewise.
+       * pt.c: Likewise.
+       * semantics.c: Likewise.
+       * tree.c: Likewise.
+       * vtable-class-hierarchy.c: Likewise.
+       * decl2.c: Don't include gimple.h.
+       * except.c: Likewise.
+       * method.c: Include pointer-set.h instead of gimple.h.
 
 2013-11-12  Adam Butcher  <adam@jessamine.co.uk>
 
index b4cab542e2ed2565d3bd0f445b6339727e501b26..1df16d4ef8c6c436fc813425beae0febebeaffc5 100644 (file)
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "splay-tree.h"
 #include "pointer-set.h"
 #include "hash-table.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 /* The number of nested classes being processed.  If we are not in the
index e8ccf1aa561ba1c18c5d1ea3cf22ccbba378126b..c464719ad4235a894174b6ff74684aa3e397d25e 100644 (file)
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "cp-tree.h"
 #include "c-family/c-common.h"
 #include "tree-iterator.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "hashtab.h"
 #include "pointer-set.h"
index 3d72c1340dcf2c62f05cd2ceb1983ac9aa61e8cc..5f997c3ed2924a04617a01af167ba068c4b226de 100644 (file)
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "pointer-set.h"
 #include "c-family/c-objc.h"
 #include "ubsan.h"
-#include "gimplify.h"
 
 #include <new>                    // For placement-new.
 
index 1919603a7050058013ea565cdb44c433518dd1d1..fde2314e32658969c55819513b9dc64db9be925d 100644 (file)
@@ -28,6 +28,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "cp-tree.h"
 #include "flags.h"
 #include "target.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 static bool begin_init_stmts (tree *, tree *);
index 736dad9bec7289f02a19abf0aa0a62280d124010..c4ee8484bb95ab7197c0e6c69b59300e7e2e24c3 100644 (file)
@@ -34,7 +34,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "langhooks.h"
 #include "diagnostic-core.h"
 #include "dumpfile.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "tree-iterator.h"
 #include "cgraph.h"
 
index 96a7db58e2312e1f543cc1c7cb6f495b82be0869..b80591d473612e1e056bdf24a036b93bff371665 100644 (file)
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "timevar.h"
 #include "tree-iterator.h"
 #include "type-utils.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 /* The type of functions taking a tree, and some additional data, and
index 202f1cf6854aedd0a36c7a633df4fcffa3b73f11..81394faa62671bf9bc24b4deabaa172cd89e8225 100644 (file)
@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-iterator.h"
 #include "vec.h"
 #include "target.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "bitmap.h"
 #include "hash-table.h"
index eb7bd876817549ce5d37f7250a1a7ebb75a13a2b..d7af1d3a5510be4e1638efd1068450cadefd01e0 100644 (file)
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "convert.h"
 #include "cgraph.h"
 #include "splay-tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "hash-table.h"
 
index 39c75ce5c33ca929b26ba173350232a58f6f32fb..5e78ec9d3a75e16c0cb87d5b12215b00bc7b7159 100644 (file)
@@ -118,6 +118,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "cgraph.h"
 #include "tree-iterator.h"
 #include "vtable-verify.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 static int num_calls_to_regset = 0;
index 77f9fb8e581e8f3680f0c1a1794d34aa13dcc77b..5ca76912ca1dcee587ba5e424b81d18756e7b580 100644 (file)
@@ -57,6 +57,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "langhooks.h"
 #include "md5.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-dfa.h"
 
index 4f75b03bfb058b42d44fdcf07499993e7b85fcb9..e6c6244e745d8b1dce08939a1e3fe84591ebb857 100644 (file)
@@ -1,11 +1,16 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * trans-expr.c: Include only gimplify.h and gimple.h as needed.
+       * trans-openmp.c: Likewise.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * fortran/f95-lang.c: Don't include gimple.h.
-       * fortran/trans-array.c: Include gimple-expr.h instead of gimple.h.
-       * fortran/trans.c: Likewise.
-       * fortran/trans-decl.c: Likewise.
-       * fortran/trans-expr.c: Include gimplify.h.
-       * fortran/trans-openmp.c: Likewise.
+       * f95-lang.c: Don't include gimple.h.
+       * trans-array.c: Include gimple-expr.h instead of gimple.h.
+       * trans.c: Likewise.
+       * trans-decl.c: Likewise.
+       * trans-expr.c: Include gimplify.h.
+       * trans-openmp.c: Likewise.
 
 2013-11-07  Janus Weil  <janus@gcc.gnu.org>
 
index 8adada6beadc8ce5699dde1844352b7c5a35e6a5..b932fa4d715c5308888403ca87f411ba00667175 100644 (file)
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 /* Only for gfc_trans_assign and gfc_trans_pointer_assign.  */
 #include "trans-stmt.h"
 #include "dependency.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 
index 9d6d4d4df456caa2de4b7271a30532554b785c90..13c87058ddd605dd482ab5da127669cd310a765e 100644 (file)
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"  /* For create_tmp_var_raw.  */
 #include "diagnostic-core.h"   /* For internal_error.  */
 #include "gfortran.h"
index 9c7a9844b7f866b95c761018b663f97401cab664..eddffdbb9555de7ed119295e8812cb11845af0cb 100644 (file)
@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "langhooks.h"
 #include "target.h"
 #include "common/common-target.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-pass.h"
 #include "predict.h"
index c82abb7adab818536394c264d8cc8889858a3dc8..9156f952784e9750aee22027744652696cca48f3 100644 (file)
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "demangle.h"
 #include "gimple-ssa.h"
index f66d3e79e192c6a067c6fbae7e27c864fcf8c287..62c555093596f6ed9254902bd5aa13c89fe7ad77 100644 (file)
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "function.h"
 #include "dumpfile.h"
 #include "bitmap.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index a9360fd14a7e67bce4ca17fc007840ebf1c2db0f..24045f5248741f642f982b5010ced5faf0cbcd4b 100644 (file)
@@ -35,6 +35,16 @@ typedef struct gimple_stmt_iterator_d
   basic_block bb;
 } gimple_stmt_iterator;
  
+enum gsi_iterator_update
+{
+  GSI_NEW_STMT,                /* Only valid when single statement is added, move
+                          iterator to it.  */
+  GSI_SAME_STMT,       /* Leave the iterator at the same statement.  */
+  GSI_CONTINUE_LINKING /* Move iterator to whatever position is suitable
+                          for linking other statements in the same
+                          direction.  */
+};
+
 extern void gsi_insert_seq_before_without_update (gimple_stmt_iterator *,
                                                  gimple_seq,
                                                  enum gsi_iterator_update);
index 35a725054bdfcdb20d90f51b586a4412ec43a90f..6de20e396155876424d4c3b263ebbfce65a7a514 100644 (file)
@@ -37,8 +37,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "basic-block.h"
 #include "tree-pass.h"
 #include "cfgloop.h"
index 0e073460110db593ddbb7b42eedfecdb287be2da..ff798ff42b23aba3a8dde9a4c732bf9cbda5c80a 100644 (file)
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "diagnostic.h"
 #include "value-prof.h"
index 9ed323899a8d942d727465f43c4238089097e254..6a0c39b7fce089044edc7e12eafd1694e995bfda 100644 (file)
@@ -847,85 +847,6 @@ typedef struct gimple_temp_hash_elt
   tree temp;  /* Value */
 } elt_t;
 
-/* Gimplify hashtable helper.  */
-
-struct gimplify_hasher : typed_free_remove <elt_t>
-{
-  typedef elt_t value_type;
-  typedef elt_t compare_type;
-  static inline hashval_t hash (const value_type *);
-  static inline bool equal (const value_type *, const compare_type *);
-};
-
-inline hashval_t
-gimplify_hasher::hash (const value_type *p)
-{
-  tree t = p->val;
-  return iterative_hash_expr (t, 0);
-}
-
-inline bool
-gimplify_hasher::equal (const value_type *p1, const compare_type *p2)
-{
-  tree t1 = p1->val;
-  tree t2 = p2->val;
-  enum tree_code code = TREE_CODE (t1);
-
-  if (TREE_CODE (t2) != code
-      || TREE_TYPE (t1) != TREE_TYPE (t2))
-    return false;
-
-  if (!operand_equal_p (t1, t2, 0))
-    return false;
-
-#ifdef ENABLE_CHECKING
-  /* Only allow them to compare equal if they also hash equal; otherwise
-     results are nondeterminate, and we fail bootstrap comparison.  */
-  gcc_assert (hash (p1) == hash (p2));
-#endif
-
-  return true;
-}
-
-struct gimplify_ctx
-{
-  struct gimplify_ctx *prev_context;
-
-  vec<gimple> bind_expr_stack;
-  tree temps;
-  gimple_seq conditional_cleanups;
-  tree exit_label;
-  tree return_temp;
-
-  vec<tree> case_labels;
-  /* The formal temporary table.  Should this be persistent?  */
-  hash_table <gimplify_hasher> temp_htab;
-
-  int conditions;
-  bool save_stack;
-  bool into_ssa;
-  bool allow_rhs_cond_expr;
-  bool in_cleanup_point_expr;
-};
-
-/* Return true if gimplify_one_sizepos doesn't need to gimplify
-   expr (when in TYPE_SIZE{,_UNIT} and similar type/decl size/bitsize
-   fields).  */
-static inline bool
-is_gimple_sizepos (tree expr)
-{
-  /* gimplify_one_sizepos doesn't need to do anything if the value isn't there,
-     is constant, or contains A PLACEHOLDER_EXPR.  We also don't want to do
-     anything if it's already a VAR_DECL.  If it's a VAR_DECL from another
-     function, the gimplifier will want to replace it with a new variable,
-     but that will cause problems if this type is from outside the function.
-     It's OK to have that here.  */
-  return (expr == NULL_TREE
-         || TREE_CONSTANT (expr)
-         || TREE_CODE (expr) == VAR_DECL
-         || CONTAINS_PLACEHOLDER_P (expr));
-}                                        
-
 /* Get the number of the next statement uid to be allocated.  */
 static inline unsigned int
 gimple_stmt_max_uid (struct function *fn)
@@ -948,7 +869,6 @@ inc_gimple_stmt_max_uid (struct function *fn)
 }
 
 /* Miscellaneous helpers.  */
-struct gimplify_omp_ctx;
 extern tree canonicalize_cond_expr_cond (tree);
 extern void dump_decl_set (FILE *, bitmap);
 extern bool nonfreeing_call_p (gimple);
@@ -5202,16 +5122,6 @@ gimple_expr_type (const_gimple stmt)
     return void_type_node;
 }
 
-enum gsi_iterator_update
-{
-  GSI_NEW_STMT,                /* Only valid when single statement is added, move
-                          iterator to it.  */
-  GSI_SAME_STMT,       /* Leave the iterator at the same statement.  */
-  GSI_CONTINUE_LINKING /* Move iterator to whatever position is suitable
-                          for linking other statements in the same
-                          direction.  */
-};
-
 gimple gimple_call_copy_skip_args (gimple, bitmap);
 
 /* Enum and arrays used for allocation stats.  Keep in sync with
diff --git a/gcc/gimplify-me.c b/gcc/gimplify-me.c
new file mode 100644 (file)
index 0000000..c4818fa
--- /dev/null
@@ -0,0 +1,317 @@
+/* Tree lowering to gimple for middle end use only.  
+   This converts the GENERIC functions-as-trees tree representation into
+   the GIMPLE form.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   Major work done by Sebastian Pop <s.pop@laposte.net>,
+   Diego Novillo <dnovillo@redhat.com> and Jason Merrill <jason@redhat.com>.
+
+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/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tree.h"
+#include "gimple.h"
+#include "gimple-iterator.h"
+#include "gimplify.h"
+#include "gimplify-me.h"
+#include "gimple-ssa.h"
+#include "tree-ssanames.h"
+
+
+/* Expand EXPR to list of gimple statements STMTS.  GIMPLE_TEST_F specifies
+   the predicate that will hold for the result.  If VAR is not NULL, make the
+   base variable of the final destination be VAR if suitable.  */
+
+tree
+force_gimple_operand_1 (tree expr, gimple_seq *stmts,
+                       gimple_predicate gimple_test_f, tree var)
+{
+  enum gimplify_status ret;
+  struct gimplify_ctx gctx;
+  location_t saved_location;
+
+  *stmts = NULL;
+
+  /* gimple_test_f might be more strict than is_gimple_val, make
+     sure we pass both.  Just checking gimple_test_f doesn't work
+     because most gimple predicates do not work recursively.  */
+  if (is_gimple_val (expr)
+      && (*gimple_test_f) (expr))
+    return expr;
+
+  push_gimplify_context (&gctx);
+  gimplify_ctxp->into_ssa = gimple_in_ssa_p (cfun);
+  gimplify_ctxp->allow_rhs_cond_expr = true;
+  saved_location = input_location;
+  input_location = UNKNOWN_LOCATION;
+
+  if (var)
+    {
+      if (gimplify_ctxp->into_ssa
+         && is_gimple_reg (var))
+       var = make_ssa_name (var, NULL);
+      expr = build2 (MODIFY_EXPR, TREE_TYPE (var), var, expr);
+    }
+
+  if (TREE_CODE (expr) != MODIFY_EXPR
+      && TREE_TYPE (expr) == void_type_node)
+    {
+      gimplify_and_add (expr, stmts);
+      expr = NULL_TREE;
+    }
+  else
+    {
+      ret = gimplify_expr (&expr, stmts, NULL, gimple_test_f, fb_rvalue);
+      gcc_assert (ret != GS_ERROR);
+    }
+
+  input_location = saved_location;
+  pop_gimplify_context (NULL);
+
+  return expr;
+}
+
+/* Expand EXPR to list of gimple statements STMTS.  If SIMPLE is true,
+   force the result to be either ssa_name or an invariant, otherwise
+   just force it to be a rhs expression.  If VAR is not NULL, make the
+   base variable of the final destination be VAR if suitable.  */
+
+tree
+force_gimple_operand (tree expr, gimple_seq *stmts, bool simple, tree var)
+{
+  return force_gimple_operand_1 (expr, stmts,
+                                simple ? is_gimple_val : is_gimple_reg_rhs,
+                                var);
+}
+
+/* Invoke force_gimple_operand_1 for EXPR with parameters GIMPLE_TEST_F
+   and VAR.  If some statements are produced, emits them at GSI.
+   If BEFORE is true.  the statements are appended before GSI, otherwise
+   they are appended after it.  M specifies the way GSI moves after
+   insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING are the usual values).  */
+
+tree
+force_gimple_operand_gsi_1 (gimple_stmt_iterator *gsi, tree expr,
+                           gimple_predicate gimple_test_f,
+                           tree var, bool before,
+                           enum gsi_iterator_update m)
+{
+  gimple_seq stmts;
+
+  expr = force_gimple_operand_1 (expr, &stmts, gimple_test_f, var);
+
+  if (!gimple_seq_empty_p (stmts))
+    {
+      if (before)
+       gsi_insert_seq_before (gsi, stmts, m);
+      else
+       gsi_insert_seq_after (gsi, stmts, m);
+    }
+
+  return expr;
+}
+
+/* Invoke force_gimple_operand_1 for EXPR with parameter VAR.
+   If SIMPLE is true, force the result to be either ssa_name or an invariant,
+   otherwise just force it to be a rhs expression.  If some statements are
+   produced, emits them at GSI.  If BEFORE is true, the statements are
+   appended before GSI, otherwise they are appended after it.  M specifies
+   the way GSI moves after insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING
+   are the usual values).  */
+
+tree
+force_gimple_operand_gsi (gimple_stmt_iterator *gsi, tree expr,
+                         bool simple_p, tree var, bool before,
+                         enum gsi_iterator_update m)
+{
+  return force_gimple_operand_gsi_1 (gsi, expr,
+                                    simple_p
+                                    ? is_gimple_val : is_gimple_reg_rhs,
+                                    var, before, m);
+}
+
+/* Some transformations like inlining may invalidate the GIMPLE form
+   for operands.  This function traverses all the operands in STMT and
+   gimplifies anything that is not a valid gimple operand.  Any new
+   GIMPLE statements are inserted before *GSI_P.  */
+
+void
+gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
+{
+  size_t i, num_ops;
+  tree lhs;
+  gimple_seq pre = NULL;
+  gimple post_stmt = NULL;
+  struct gimplify_ctx gctx;
+
+  push_gimplify_context (&gctx);
+  gimplify_ctxp->into_ssa = gimple_in_ssa_p (cfun);
+
+  switch (gimple_code (stmt))
+    {
+    case GIMPLE_COND:
+      gimplify_expr (gimple_cond_lhs_ptr (stmt), &pre, NULL,
+                    is_gimple_val, fb_rvalue);
+      gimplify_expr (gimple_cond_rhs_ptr (stmt), &pre, NULL,
+                    is_gimple_val, fb_rvalue);
+      break;
+    case GIMPLE_SWITCH:
+      gimplify_expr (gimple_switch_index_ptr (stmt), &pre, NULL,
+                    is_gimple_val, fb_rvalue);
+      break;
+    case GIMPLE_OMP_ATOMIC_LOAD:
+      gimplify_expr (gimple_omp_atomic_load_rhs_ptr (stmt), &pre, NULL,
+                    is_gimple_val, fb_rvalue);
+      break;
+    case GIMPLE_ASM:
+      {
+       size_t i, noutputs = gimple_asm_noutputs (stmt);
+       const char *constraint, **oconstraints;
+       bool allows_mem, allows_reg, is_inout;
+
+       oconstraints
+         = (const char **) alloca ((noutputs) * sizeof (const char *));
+       for (i = 0; i < noutputs; i++)
+         {
+           tree op = gimple_asm_output_op (stmt, i);
+           constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
+           oconstraints[i] = constraint;
+           parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
+                                    &allows_reg, &is_inout);
+           gimplify_expr (&TREE_VALUE (op), &pre, NULL,
+                          is_inout ? is_gimple_min_lval : is_gimple_lvalue,
+                          fb_lvalue | fb_mayfail);
+         }
+       for (i = 0; i < gimple_asm_ninputs (stmt); i++)
+         {
+           tree op = gimple_asm_input_op (stmt, i);
+           constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
+           parse_input_constraint (&constraint, 0, 0, noutputs, 0,
+                                   oconstraints, &allows_mem, &allows_reg);
+           if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (op))) && allows_mem)
+             allows_reg = 0;
+           if (!allows_reg && allows_mem)
+             gimplify_expr (&TREE_VALUE (op), &pre, NULL,
+                            is_gimple_lvalue, fb_lvalue | fb_mayfail);
+           else
+             gimplify_expr (&TREE_VALUE (op), &pre, NULL,
+                            is_gimple_asm_val, fb_rvalue);
+         }
+      }
+      break;
+    default:
+      /* NOTE: We start gimplifying operands from last to first to
+        make sure that side-effects on the RHS of calls, assignments
+        and ASMs are executed before the LHS.  The ordering is not
+        important for other statements.  */
+      num_ops = gimple_num_ops (stmt);
+      for (i = num_ops; i > 0; i--)
+       {
+         tree op = gimple_op (stmt, i - 1);
+         if (op == NULL_TREE)
+           continue;
+         if (i == 1 && (is_gimple_call (stmt) || is_gimple_assign (stmt)))
+           gimplify_expr (&op, &pre, NULL, is_gimple_lvalue, fb_lvalue);
+         else if (i == 2
+                  && is_gimple_assign (stmt)
+                  && num_ops == 2
+                  && get_gimple_rhs_class (gimple_expr_code (stmt))
+                     == GIMPLE_SINGLE_RHS)
+           gimplify_expr (&op, &pre, NULL,
+                          rhs_predicate_for (gimple_assign_lhs (stmt)),
+                          fb_rvalue);
+         else if (i == 2 && is_gimple_call (stmt))
+           {
+             if (TREE_CODE (op) == FUNCTION_DECL)
+               continue;
+             gimplify_expr (&op, &pre, NULL, is_gimple_call_addr, fb_rvalue);
+           }
+         else
+           gimplify_expr (&op, &pre, NULL, is_gimple_val, fb_rvalue);
+         gimple_set_op (stmt, i - 1, op);
+       }
+
+      lhs = gimple_get_lhs (stmt);
+      /* If the LHS changed it in a way that requires a simple RHS,
+        create temporary.  */
+      if (lhs && !is_gimple_reg (lhs))
+       {
+         bool need_temp = false;
+
+         if (is_gimple_assign (stmt)
+             && num_ops == 2
+             && get_gimple_rhs_class (gimple_expr_code (stmt))
+                == GIMPLE_SINGLE_RHS)
+           gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
+                          rhs_predicate_for (gimple_assign_lhs (stmt)),
+                          fb_rvalue);
+         else if (is_gimple_reg (lhs))
+           {
+             if (is_gimple_reg_type (TREE_TYPE (lhs)))
+               {
+                 if (is_gimple_call (stmt))
+                   {
+                     i = gimple_call_flags (stmt);
+                     if ((i & ECF_LOOPING_CONST_OR_PURE)
+                         || !(i & (ECF_CONST | ECF_PURE)))
+                       need_temp = true;
+                   }
+                 if (stmt_can_throw_internal (stmt))
+                   need_temp = true;
+               }
+           }
+         else
+           {
+             if (is_gimple_reg_type (TREE_TYPE (lhs)))
+               need_temp = true;
+             else if (TYPE_MODE (TREE_TYPE (lhs)) != BLKmode)
+               {
+                 if (is_gimple_call (stmt))
+                   {
+                     tree fndecl = gimple_call_fndecl (stmt);
+
+                     if (!aggregate_value_p (TREE_TYPE (lhs), fndecl)
+                         && !(fndecl && DECL_RESULT (fndecl)
+                              && DECL_BY_REFERENCE (DECL_RESULT (fndecl))))
+                       need_temp = true;
+                   }
+                 else
+                   need_temp = true;
+               }
+           }
+         if (need_temp)
+           {
+             tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
+             if (gimple_in_ssa_p (cfun))
+               temp = make_ssa_name (temp, NULL);
+             gimple_set_lhs (stmt, temp);
+             post_stmt = gimple_build_assign (lhs, temp);
+           }
+       }
+      break;
+    }
+
+  if (!gimple_seq_empty_p (pre))
+    gsi_insert_seq_before (gsi_p, pre, GSI_SAME_STMT);
+  if (post_stmt)
+    gsi_insert_after (gsi_p, post_stmt, GSI_NEW_STMT);
+
+  pop_gimplify_context (NULL);
+}
+
+
diff --git a/gcc/gimplify-me.h b/gcc/gimplify-me.h
new file mode 100644 (file)
index 0000000..a995af1
--- /dev/null
@@ -0,0 +1,37 @@
+/* Header file for middle end gimplification.
+   Copyright (C) 2013 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_GIMPLIFY_ME_H
+#define GCC_GIMPLIFY_ME_H
+
+/* Validation of GIMPLE expressions.  Note that these predicates only check
+ *    the basic form of the expression, they don't recurse to make sure that
+ *       underlying nodes are also of the right form.  */
+typedef bool (*gimple_predicate)(tree);
+
+extern tree force_gimple_operand_1 (tree, gimple_seq *, gimple_predicate, tree);
+extern tree force_gimple_operand (tree, gimple_seq *, bool, tree);
+extern tree force_gimple_operand_gsi_1 (gimple_stmt_iterator *, tree,
+                                       gimple_predicate, tree,
+                                       bool, enum gsi_iterator_update);
+extern tree force_gimple_operand_gsi (gimple_stmt_iterator *, tree, bool, tree,
+                                     bool, enum gsi_iterator_update);
+extern void gimple_regimplify_operands (gimple, gimple_stmt_iterator *);
+
+#endif /* GCC_GIMPLIFY_ME_H */
index 3253f861958d3e4cec8f5cb933324f5e234e21a0..4e6f44898bacd4eef8a29cf01ad56f0a620404df 100644 (file)
@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
-#include "tm.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "tree-iterator.h"
@@ -37,24 +37,15 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-ssanames.h"
 #include "tree-ssa.h"
-#include "timevar.h"
-#include "hashtab.h"
-#include "flags.h"
-#include "function.h"
-#include "ggc.h"
 #include "diagnostic-core.h"
 #include "target.h"
-#include "pointer-set.h"
 #include "splay-tree.h"
-#include "vec.h"
 #include "omp-low.h"
 #include "gimple-low.h"
 #include "cilk.h"
 
 #include "langhooks-def.h"     /* FIXME: for lhd_set_decl_assembler_name */
 #include "tree-pass.h"         /* FIXME: only for PROP_gimple_any */
-#include "expr.h"
-#include "tm_p.h"
 
 enum gimplify_omp_var_data
 {
@@ -102,7 +93,7 @@ struct gimplify_omp_ctx
   bool combined_loop;
 };
 
-static struct gimplify_ctx *gimplify_ctxp;
+struct gimplify_ctx *gimplify_ctxp;
 static struct gimplify_omp_ctx *gimplify_omp_ctxp;
 
 
@@ -3393,7 +3384,7 @@ gimplify_init_ctor_eval (tree object, vec<constructor_elt, va_gc> *elts,
 
 /* Return the appropriate RHS predicate for this LHS.  */
 
-static gimple_predicate
+gimple_predicate
 rhs_predicate_for (tree lhs)
 {
   if (is_gimple_reg (lhs))
@@ -8590,287 +8581,6 @@ gimplify_function_tree (tree fndecl)
   pop_cfun ();
 }
 
-/* Some transformations like inlining may invalidate the GIMPLE form
-   for operands.  This function traverses all the operands in STMT and
-   gimplifies anything that is not a valid gimple operand.  Any new
-   GIMPLE statements are inserted before *GSI_P.  */
-
-void
-gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
-{
-  size_t i, num_ops;
-  tree lhs;
-  gimple_seq pre = NULL;
-  gimple post_stmt = NULL;
-  struct gimplify_ctx gctx;
-
-  push_gimplify_context (&gctx);
-  gimplify_ctxp->into_ssa = gimple_in_ssa_p (cfun);
-
-  switch (gimple_code (stmt))
-    {
-    case GIMPLE_COND:
-      gimplify_expr (gimple_cond_lhs_ptr (stmt), &pre, NULL,
-                    is_gimple_val, fb_rvalue);
-      gimplify_expr (gimple_cond_rhs_ptr (stmt), &pre, NULL,
-                    is_gimple_val, fb_rvalue);
-      break;
-    case GIMPLE_SWITCH:
-      gimplify_expr (gimple_switch_index_ptr (stmt), &pre, NULL,
-                    is_gimple_val, fb_rvalue);
-      break;
-    case GIMPLE_OMP_ATOMIC_LOAD:
-      gimplify_expr (gimple_omp_atomic_load_rhs_ptr (stmt), &pre, NULL,
-                    is_gimple_val, fb_rvalue);
-      break;
-    case GIMPLE_ASM:
-      {
-       size_t i, noutputs = gimple_asm_noutputs (stmt);
-       const char *constraint, **oconstraints;
-       bool allows_mem, allows_reg, is_inout;
-
-       oconstraints
-         = (const char **) alloca ((noutputs) * sizeof (const char *));
-       for (i = 0; i < noutputs; i++)
-         {
-           tree op = gimple_asm_output_op (stmt, i);
-           constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
-           oconstraints[i] = constraint;
-           parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
-                                    &allows_reg, &is_inout);
-           gimplify_expr (&TREE_VALUE (op), &pre, NULL,
-                          is_inout ? is_gimple_min_lval : is_gimple_lvalue,
-                          fb_lvalue | fb_mayfail);
-         }
-       for (i = 0; i < gimple_asm_ninputs (stmt); i++)
-         {
-           tree op = gimple_asm_input_op (stmt, i);
-           constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (op)));
-           parse_input_constraint (&constraint, 0, 0, noutputs, 0,
-                                   oconstraints, &allows_mem, &allows_reg);
-           if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (op))) && allows_mem)
-             allows_reg = 0;
-           if (!allows_reg && allows_mem)
-             gimplify_expr (&TREE_VALUE (op), &pre, NULL,
-                            is_gimple_lvalue, fb_lvalue | fb_mayfail);
-           else
-             gimplify_expr (&TREE_VALUE (op), &pre, NULL,
-                            is_gimple_asm_val, fb_rvalue);
-         }
-      }
-      break;
-    default:
-      /* NOTE: We start gimplifying operands from last to first to
-        make sure that side-effects on the RHS of calls, assignments
-        and ASMs are executed before the LHS.  The ordering is not
-        important for other statements.  */
-      num_ops = gimple_num_ops (stmt);
-      for (i = num_ops; i > 0; i--)
-       {
-         tree op = gimple_op (stmt, i - 1);
-         if (op == NULL_TREE)
-           continue;
-         if (i == 1 && (is_gimple_call (stmt) || is_gimple_assign (stmt)))
-           gimplify_expr (&op, &pre, NULL, is_gimple_lvalue, fb_lvalue);
-         else if (i == 2
-                  && is_gimple_assign (stmt)
-                  && num_ops == 2
-                  && get_gimple_rhs_class (gimple_expr_code (stmt))
-                     == GIMPLE_SINGLE_RHS)
-           gimplify_expr (&op, &pre, NULL,
-                          rhs_predicate_for (gimple_assign_lhs (stmt)),
-                          fb_rvalue);
-         else if (i == 2 && is_gimple_call (stmt))
-           {
-             if (TREE_CODE (op) == FUNCTION_DECL)
-               continue;
-             gimplify_expr (&op, &pre, NULL, is_gimple_call_addr, fb_rvalue);
-           }
-         else
-           gimplify_expr (&op, &pre, NULL, is_gimple_val, fb_rvalue);
-         gimple_set_op (stmt, i - 1, op);
-       }
-
-      lhs = gimple_get_lhs (stmt);
-      /* If the LHS changed it in a way that requires a simple RHS,
-        create temporary.  */
-      if (lhs && !is_gimple_reg (lhs))
-       {
-         bool need_temp = false;
-
-         if (is_gimple_assign (stmt)
-             && num_ops == 2
-             && get_gimple_rhs_class (gimple_expr_code (stmt))
-                == GIMPLE_SINGLE_RHS)
-           gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
-                          rhs_predicate_for (gimple_assign_lhs (stmt)),
-                          fb_rvalue);
-         else if (is_gimple_reg (lhs))
-           {
-             if (is_gimple_reg_type (TREE_TYPE (lhs)))
-               {
-                 if (is_gimple_call (stmt))
-                   {
-                     i = gimple_call_flags (stmt);
-                     if ((i & ECF_LOOPING_CONST_OR_PURE)
-                         || !(i & (ECF_CONST | ECF_PURE)))
-                       need_temp = true;
-                   }
-                 if (stmt_can_throw_internal (stmt))
-                   need_temp = true;
-               }
-           }
-         else
-           {
-             if (is_gimple_reg_type (TREE_TYPE (lhs)))
-               need_temp = true;
-             else if (TYPE_MODE (TREE_TYPE (lhs)) != BLKmode)
-               {
-                 if (is_gimple_call (stmt))
-                   {
-                     tree fndecl = gimple_call_fndecl (stmt);
-
-                     if (!aggregate_value_p (TREE_TYPE (lhs), fndecl)
-                         && !(fndecl && DECL_RESULT (fndecl)
-                              && DECL_BY_REFERENCE (DECL_RESULT (fndecl))))
-                       need_temp = true;
-                   }
-                 else
-                   need_temp = true;
-               }
-           }
-         if (need_temp)
-           {
-             tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
-             if (gimple_in_ssa_p (cfun))
-               temp = make_ssa_name (temp, NULL);
-             gimple_set_lhs (stmt, temp);
-             post_stmt = gimple_build_assign (lhs, temp);
-           }
-       }
-      break;
-    }
-
-  if (!gimple_seq_empty_p (pre))
-    gsi_insert_seq_before (gsi_p, pre, GSI_SAME_STMT);
-  if (post_stmt)
-    gsi_insert_after (gsi_p, post_stmt, GSI_NEW_STMT);
-
-  pop_gimplify_context (NULL);
-}
-
-/* Expand EXPR to list of gimple statements STMTS.  GIMPLE_TEST_F specifies
-   the predicate that will hold for the result.  If VAR is not NULL, make the
-   base variable of the final destination be VAR if suitable.  */
-
-tree
-force_gimple_operand_1 (tree expr, gimple_seq *stmts,
-                       gimple_predicate gimple_test_f, tree var)
-{
-  enum gimplify_status ret;
-  struct gimplify_ctx gctx;
-  location_t saved_location;
-
-  *stmts = NULL;
-
-  /* gimple_test_f might be more strict than is_gimple_val, make
-     sure we pass both.  Just checking gimple_test_f doesn't work
-     because most gimple predicates do not work recursively.  */
-  if (is_gimple_val (expr)
-      && (*gimple_test_f) (expr))
-    return expr;
-
-  push_gimplify_context (&gctx);
-  gimplify_ctxp->into_ssa = gimple_in_ssa_p (cfun);
-  gimplify_ctxp->allow_rhs_cond_expr = true;
-  saved_location = input_location;
-  input_location = UNKNOWN_LOCATION;
-
-  if (var)
-    {
-      if (gimplify_ctxp->into_ssa
-         && is_gimple_reg (var))
-       var = make_ssa_name (var, NULL);
-      expr = build2 (MODIFY_EXPR, TREE_TYPE (var), var, expr);
-    }
-
-  if (TREE_CODE (expr) != MODIFY_EXPR
-      && TREE_TYPE (expr) == void_type_node)
-    {
-      gimplify_and_add (expr, stmts);
-      expr = NULL_TREE;
-    }
-  else
-    {
-      ret = gimplify_expr (&expr, stmts, NULL, gimple_test_f, fb_rvalue);
-      gcc_assert (ret != GS_ERROR);
-    }
-
-  input_location = saved_location;
-  pop_gimplify_context (NULL);
-
-  return expr;
-}
-
-/* Expand EXPR to list of gimple statements STMTS.  If SIMPLE is true,
-   force the result to be either ssa_name or an invariant, otherwise
-   just force it to be a rhs expression.  If VAR is not NULL, make the
-   base variable of the final destination be VAR if suitable.  */
-
-tree
-force_gimple_operand (tree expr, gimple_seq *stmts, bool simple, tree var)
-{
-  return force_gimple_operand_1 (expr, stmts,
-                                simple ? is_gimple_val : is_gimple_reg_rhs,
-                                var);
-}
-
-/* Invoke force_gimple_operand_1 for EXPR with parameters GIMPLE_TEST_F
-   and VAR.  If some statements are produced, emits them at GSI.
-   If BEFORE is true.  the statements are appended before GSI, otherwise
-   they are appended after it.  M specifies the way GSI moves after
-   insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING are the usual values).  */
-
-tree
-force_gimple_operand_gsi_1 (gimple_stmt_iterator *gsi, tree expr,
-                           gimple_predicate gimple_test_f,
-                           tree var, bool before,
-                           enum gsi_iterator_update m)
-{
-  gimple_seq stmts;
-
-  expr = force_gimple_operand_1 (expr, &stmts, gimple_test_f, var);
-
-  if (!gimple_seq_empty_p (stmts))
-    {
-      if (before)
-       gsi_insert_seq_before (gsi, stmts, m);
-      else
-       gsi_insert_seq_after (gsi, stmts, m);
-    }
-
-  return expr;
-}
-
-/* Invoke force_gimple_operand_1 for EXPR with parameter VAR.
-   If SIMPLE is true, force the result to be either ssa_name or an invariant,
-   otherwise just force it to be a rhs expression.  If some statements are
-   produced, emits them at GSI.  If BEFORE is true, the statements are
-   appended before GSI, otherwise they are appended after it.  M specifies
-   the way GSI moves after insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING
-   are the usual values).  */
-
-tree
-force_gimple_operand_gsi (gimple_stmt_iterator *gsi, tree expr,
-                         bool simple_p, tree var, bool before,
-                         enum gsi_iterator_update m)
-{
-  return force_gimple_operand_gsi_1 (gsi, expr,
-                                    simple_p
-                                    ? is_gimple_val : is_gimple_reg_rhs,
-                                    var, before, m);
-}
-
 /* Return a dummy expression of type TYPE in order to keep going after an
    error.  */
 
@@ -8991,3 +8701,32 @@ gimplify_assign (tree dst, tree src, gimple_seq *seq_p)
   return gimple_seq_last_stmt (*seq_p);
 }
 
+inline hashval_t
+gimplify_hasher::hash (const value_type *p)
+{
+  tree t = p->val;
+  return iterative_hash_expr (t, 0);
+}
+
+inline bool
+gimplify_hasher::equal (const value_type *p1, const compare_type *p2)
+{
+  tree t1 = p1->val;
+  tree t2 = p2->val;
+  enum tree_code code = TREE_CODE (t1);
+
+  if (TREE_CODE (t2) != code
+      || TREE_TYPE (t1) != TREE_TYPE (t2))
+    return false;
+
+  if (!operand_equal_p (t1, t2, 0))
+    return false;
+
+#ifdef ENABLE_CHECKING
+  /* Only allow them to compare equal if they also hash equal; otherwise
+     results are nondeterminate, and we fail bootstrap comparison.  */
+  gcc_assert (hash (p1) == hash (p2));
+#endif
+
+  return true;
+}
index 5f81cf2fe774d310e381ca9f81e799c6fcf87ab8..3f7e1b327a9661a6a9cc0500d5078944e6da1b26 100644 (file)
@@ -20,8 +20,6 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_GIMPLIFY_H
 #define GCC_GIMPLIFY_H
 
-#include "gimple.h"
-
 /* Validation of GIMPLE expressions.  Note that these predicates only check
    the basic form of the expression, they don't recurse to make sure that
    underlying nodes are also of the right form.  */
@@ -50,7 +48,38 @@ enum gimplify_status {
   GS_OK                = 0,    /* We did something, maybe more to do.  */
   GS_ALL_DONE  = 1     /* The expression is fully gimplified.  */
 };
+/* Gimplify hashtable helper.  */
+
+struct gimplify_hasher : typed_free_remove <elt_t>
+{
+  typedef elt_t value_type;
+  typedef elt_t compare_type;
+  static inline hashval_t hash (const value_type *);
+  static inline bool equal (const value_type *, const compare_type *);
+};
+
+struct gimplify_ctx
+{
+  struct gimplify_ctx *prev_context;
+
+  vec<gimple> bind_expr_stack;
+  tree temps;
+  gimple_seq conditional_cleanups;
+  tree exit_label;
+  tree return_temp;
+
+  vec<tree> case_labels;
+  /* The formal temporary table.  Should this be persistent?  */
+  hash_table <gimplify_hasher> temp_htab;
+
+  int conditions;
+  bool save_stack;
+  bool into_ssa;
+  bool allow_rhs_cond_expr;
+  bool in_cleanup_point_expr;
+};
 
+extern struct gimplify_ctx *gimplify_ctxp;
 extern void push_gimplify_context (struct gimplify_ctx *);
 extern void pop_gimplify_context (gimple);
 extern gimple gimple_current_bind_expr (void);
@@ -67,6 +96,7 @@ extern tree build_and_jump (tree *);
 extern enum gimplify_status gimplify_self_mod_expr (tree *, gimple_seq *,
                                                    gimple_seq *, bool, tree);
 extern tree gimple_boolify (tree);
+extern gimple_predicate rhs_predicate_for (tree);
 extern bool gimplify_stmt (tree *, gimple_seq *);
 extern void omp_firstprivatize_variable (struct gimplify_omp_ctx *, tree);
 extern enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *,
@@ -76,17 +106,27 @@ extern void gimplify_type_sizes (tree, gimple_seq *);
 extern void gimplify_one_sizepos (tree *, gimple_seq *);
 extern gimple gimplify_body (tree, bool);
 extern void gimplify_function_tree (tree);
-extern void gimple_regimplify_operands (gimple, gimple_stmt_iterator *);
-extern tree force_gimple_operand_1 (tree, gimple_seq *, gimple_predicate, tree);
-extern tree force_gimple_operand (tree, gimple_seq *, bool, tree);
-extern tree force_gimple_operand_gsi_1 (gimple_stmt_iterator *, tree,
-                                       gimple_predicate, tree,
-                                       bool, enum gsi_iterator_update);
-extern tree force_gimple_operand_gsi (gimple_stmt_iterator *, tree, bool, tree,
-                                     bool, enum gsi_iterator_update);
-
 extern enum gimplify_status gimplify_va_arg_expr (tree *, gimple_seq *,
                                                  gimple_seq *);
 gimple gimplify_assign (tree, tree, gimple_seq *);
 
+/* Return true if gimplify_one_sizepos doesn't need to gimplify
+   expr (when in TYPE_SIZE{,_UNIT} and similar type/decl size/bitsize
+   fields).  */
+
+static inline bool
+is_gimple_sizepos (tree expr)
+{
+  /* gimplify_one_sizepos doesn't need to do anything if the value isn't there,
+     is constant, or contains A PLACEHOLDER_EXPR.  We also don't want to do
+     anything if it's already a VAR_DECL.  If it's a VAR_DECL from another
+     function, the gimplifier will want to replace it with a new variable,
+     but that will cause problems if this type is from outside the function.
+     It's OK to have that here.  */
+  return (expr == NULL_TREE
+         || TREE_CONSTANT (expr)
+         || TREE_CODE (expr) == VAR_DECL
+         || CONTAINS_PLACEHOLDER_P (expr));
+}                                        
+
 #endif /* GCC_GIMPLIFY_H */
index 49775b9778c55ce5448088b6dbece252402ff2e6..54d9f3bf9b4fe40251849011a7a1e167cf6dcabf 100644 (file)
@@ -1,6 +1,10 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * go-lang.c: Include only gimplify.h and gimple.h as needed.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * go/go-lang.c: Include gimplify.h.
+       * go-lang.c: Include gimplify.h.
 
 2013-11-06  Ian Lance Taylor  <iant@google.com>
 
index 90cabb57181e9099cc622bee98f091508157745e..aa1d80b5be2bc498ac6567f1b118a053976c471c 100644 (file)
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "opts.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "ggc.h"
 #include "toplev.h"
index 38404f4ee408e97588388994da613ddf91cf49cf..44aecfbebf6a440b7b8325fa89c3e781399fa4b8 100644 (file)
@@ -36,8 +36,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "diagnostic-core.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop.h"
index b10bb46e33e096e439cd3aa2c5dbc1278ad5fdd2..a07e047832e34e48cac5e7347865e79c2999f9b8 100644 (file)
@@ -34,8 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 327bca9e597b64ea0ec460b2efb839871f58cd8c..eb464e4d51ea2a516448a342fbaa7a8616d4fb25 100644 (file)
@@ -21,8 +21,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "langhooks.h"
 #include "ggc.h"
index 40b876653a897e27ba10dee1b0e1e9a92f2d85da..e55b3f59dbcc4d0463b45c6164027a9ee005448b 100644 (file)
@@ -78,8 +78,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "target.h"
 #include "ipa-prop.h"
index a11b1c753043efdbb337c903c30d9428bd698a9e..f43986214d1d202af570743a3a8989a93c36241f 100644 (file)
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "cgraph.h"
 #include "tree-pass.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "ggc.h"
 #include "flags.h"
index 2b2d963631e0a05c1d106efb9fb9e4d0a90afe65..a474ccc0d7f2e5bff427fd2e852177451b353b35 100644 (file)
@@ -1,6 +1,10 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * java-gimplify.c: Include only gimplify.h and gimple.h as needed.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * java/java-gimplify.c: Include gimplify.h.
+       * java-gimplify.c: Include gimplify.h.
 
 2013-11-07  Jeff Law  <law@redhat.com>
 
index d604cf82e97b3c4ad14a67ea9715c67b7d65e663..f2d0460ae31ace6848d4d386d692a2025633379c 100644 (file)
@@ -27,6 +27,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "tree.h"
 #include "java-tree.h"
 #include "dumpfile.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 static tree java_gimplify_block (tree);
index a5be398751d2aabdda08dc474d8ed541ca6fccc2..ec0dd4d75ee367683bb9c6b3fcf256f08acff7d5 100644 (file)
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "toplev.h"
 #include "tree.h"
 #include "tree-inline.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "rtl.h"
 #include "insn-config.h"
index 7c44fd7e2843cb31cf164799b6cff8b12a33aede..8777efba1521e8e38a75889191892acf9c0feabf 100644 (file)
@@ -1,6 +1,10 @@
+2013-11-14  Andrew MacLeod  <amacleod@redhat.com>
+
+       * objc-act.c: Include only gimplify.h and gimple.h as needed.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
-       * objc/objc-act.c: Include gimplify.h.
+       * objc-act.c: Include gimplify.h.
 
 2013-11-07  Andrew MacLeod  <amacleod@redhat.com>
 
index 34c528287053f3a13c40abb95fd2538dc9a9d2cc..9a640a3edd3641bf29f92f1cfac8d9505770fbb7 100644 (file)
@@ -60,6 +60,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 
 /* For enum gimplify_status */
+#include "gimple.h"
 #include "gimplify.h"
 
 /* For encode_method_prototype().  */
index 86f95a1152d98126bd6473c9c727e1d5c5b0e59e..5be9ff8ec406227f3f43516b65e7d41ae398b132 100644 (file)
@@ -27,8 +27,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "tree.h"
 #include "rtl.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "tree-iterator.h"
 #include "tree-inline.h"
index 169ed9a845d7527f598a030caffa3f152f1bd620..d05b14afbb80d387dea9ce4d80c48e157f9cfdd4 100644 (file)
@@ -25,8 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "tree.h"
 #include "tree-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index a4ee040e26cacb0932a8d188212072a488ee07c4..264c33e3a0b7ad6f40571460ea1a4b994a4805da 100644 (file)
@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "cgraph.h"
 #include "tree-inline.h"
 #include "tree-dump.h"
+#include "gimple.h"
 #include "gimplify.h"
 
 /* Data type for the expressions representing sizes of data types.
index 352b3c845d5914c56bfb476deade5325981eb3fd..55ab7d07b6704ecfa6fdaceb0422102a9c13a5f7 100644 (file)
@@ -68,6 +68,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "recog.h"
 #include "intl.h"
 #include "opts.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-alias.h"
index 748fd5edf603dd66200ac4851c5e1c50de1f9b3d..b56ff73508130b1fc18f5614de9fc139ed0215e0 100644 (file)
 #include "coretypes.h"
 #include "hash-table.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
index 7004a460761e10c15d77c1df3b90d96e8d214db3..d6d5686ef159a72ad4e1902bf7927a2e0c733431 100644 (file)
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 #include "pointer-set.h"
 #include "tree-affine.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "flags.h"
 #include "dumpfile.h"
index 9cdb1a5b9781b1a5a24111c6405e5d1350c53886..d7f62125e4a5f42886dcc0d4fa767735ccb460ef 100644 (file)
@@ -30,8 +30,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "function.h"
 #include "ggc.h"
 #include "gimple-pretty-print.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
index fbda06ab745cad4f9a67e107b566683cfe6f904f..e864eed94f8bfef52851a7fec3f88d082e06859e 100644 (file)
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "function.h"
 #include "ggc.h"
 #include "langhooks.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index 188bf1a9336493a2b1870320623e70fffd47ce81..130674e673f56125baba1b7131fa86e2c6cfee83 100644 (file)
@@ -23,8 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "tree.h"
 #include "flags.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index dc630e2d1146d3ff49d76f9c23f66d777dc59465..81403f25aa09da5b9c1017b2e770c7385f60f2af 100644 (file)
@@ -88,8 +88,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index fe5c0cb73677ee28784cdf40632e55117e42449a..fb9d2c41eb3ec7875cf703a87b339adc32ec080d 100644 (file)
@@ -34,8 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "tree-iterator.h"
 #include "intl.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
index 75d069bbbf372e17ffb7b98acd6f9f229257d359..331af04b5feaf5f1ccba7547d933fbb76c477b52 100644 (file)
@@ -45,8 +45,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index f6baf00042d9f8ed2e6c2a8b779fd6334e9cc1f1..9b4493bade0152fc971968fe6507083ed0249f14 100644 (file)
@@ -26,6 +26,7 @@
 #include "function.h"
 #include "tree-dump.h"
 #include "tree-inline.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
index 3a478f916b0283163b54a6797877f9c624efe0dd..867992b6bb94f50b3f1e005b2afbc400b8d46a91 100644 (file)
@@ -23,8 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
index e08e9b6c69730058c6ff99d37d6d1471afba938f..77a15ab5523ff6272123a4a26dd7b747509c2994 100644 (file)
@@ -191,8 +191,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "tm_p.h"
 #include "cfgloop.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
index 428ffc7c46454e5a6db69997a8c3ef8ea1b74722..f3f97b2e0dc0b5667740cb04dc770eae325192b5 100644 (file)
@@ -34,8 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "coverage.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
index ffc6d3d09c414eff23486f74d677f860c781eb52..115683de833654eb1db4aa999a54d396b7e7e8d7 100644 (file)
@@ -259,8 +259,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "hash-table.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 31fcdfeee3f84fbee2c4964109e1a03256388d0e..d97af132d39c5007db9278224d0dd0bfeea01bc1 100644 (file)
@@ -78,8 +78,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "alloc-pool.h"
 #include "tm.h"
 #include "tree.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-walk.h"
 #include "bitmap.h"
 #include "gimple-ssa.h"
index 3984e79ce1230b446eaf385ea7d22d5c921f8afe..cf245675796b66685212ed86e1c82b45ca61cf06 100644 (file)
@@ -28,7 +28,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
-#include "gimplify.h"
+#include "gimple.h"
+#include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-dfa.h"
index c98c742d8b3aff760472870620f1e5efc08cd034..50006abdc052253ce8e30023bf9db32efdc5d756 100644 (file)
@@ -119,6 +119,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "function.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index 5da2106b7e7d51b77d71ed222970153e90c2839c..d138f92f195c6a4236f7c37a057db0ea695c88f9 100644 (file)
@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "gimple-pretty-print.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index 71c56a050ac14f0f748241bbaf20d7536a917712..ce9c0114f82f5b8bb188857091c0980d3a0f1d61 100644 (file)
@@ -25,8 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 3fbaba7920b80a3a4b806c4d5d86f3f13b797378..d3bb5b246cdefd4298af0068b44cedfdae09b615 100644 (file)
@@ -29,8 +29,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 48697c7fa246adfd489357d12fb32123fe07f4df..ad34d76e84082dce1e8ddbaa59992c29737d26c8 100644 (file)
@@ -25,8 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 4eb615f1296bf0ff024a789b96ecd28463c62215..6d5eeb5de99a8983796cffc191dfee88e2b39c8b 100644 (file)
@@ -69,8 +69,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
index 66c51280152cfac3854b98d4f0240e6dd4d59280..ae51ee66f07b3864d5cc70ddb4c91ba7b13197a7 100644 (file)
@@ -24,8 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "tm_p.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 79e7eff98b240ed75866fcf7f93f38e619832634..547185694fb2f3501088205812f8ffb4f6b2e15b 100644 (file)
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "intl.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index edb49dbde8859bf937d901de6472e4048e20ffcf..0939541746e68719c1149f7984aaf2d0491ee94b 100644 (file)
@@ -25,8 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
index a345a4c6fe3f01ace6dc8b5f4ea7bb03254f3a8f..236b89b8a128473be9ffca88cd9c5d9831f0343e 100644 (file)
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "tm_p.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
index cd654d2502ec9fc0bf98a00ea793bcef4dfd2553..ca3596c8a0e6510d95a852d4847c35a717a62b9b 100644 (file)
@@ -90,8 +90,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "flags.h"
 #include "tree.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index caa4925cfb503956cc4b8ff3507f382d06c22de2..7f4a3fddb8073cd739214b6bc3a0e66f5adf053f 100644 (file)
@@ -27,8 +27,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "tm_p.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 904d0a432ce99739b8db8abdf572e427d8923f45..070b8ed3f0bf773dd8c126d04be9a5b2d6f25106 100644 (file)
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index 5b075077d3e1b8029981bda0f9f042769a0b6f1b..7052d94e49a46878d32c01f0f6d3a6c29061c074 100644 (file)
@@ -27,8 +27,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index b10544836ff04ccc7973bc6a42cfc0097004a42d..078b04afdbce7da5b6e2c466a5ccc6a44b31f209 100644 (file)
@@ -30,6 +30,7 @@
 #include "gimple-pretty-print.h"
 #include "dumpfile.h"
 #include "sbitmap.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index d55c943324baac5cbfef65da14539fb89e16cf02..4d0e5e4aa4722d00cdd711a760d50ca09fe826cf 100644 (file)
@@ -29,8 +29,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 36ef0184e7712e4bf9ad1ff1bf913f6089b43f38..1be324e8d5da1292dde6d1ad0bf4bb3693009319 100644 (file)
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
index 565def76ca11d0d075b168944dcb026e9cca90e6..cfd7b00c6a8ddd09a483636568568d43a49372d0 100644 (file)
@@ -24,8 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "hash-table.h"
 #include "bitmap.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
index c774198e9abfd7760cc0b0d2f43c167bd7099f47..f16e77b53f5a63494fce78031210d2022837ddb2 100644 (file)
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "function.h"
 #include "gimple-pretty-print.h"
 #include "pointer-set.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
index e7ffd434888f47771c86cadfe56a7e1b02994231..9d5734a54531005a4808bb1ad7bfec6b318c4e02 100644 (file)
@@ -31,8 +31,10 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 #include "flags.h"
 #include "tree.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
index eded4b690efd10bcd778c2c9d0a95934f619876c..185bf165149e9ab4743af09a9c45cb9121278ad6 100644 (file)
@@ -25,8 +25,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "basic-block.h"
 #include "function.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 7164684c5067dfed51a24eb1fca2f7ae87388dc8..1e5ee3dd07b06d00f61de0f97a9a30f198afcdb7 100644 (file)
@@ -30,8 +30,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
index a82ecb2cd8159787efee11b5532be636c678a1fe..0fcc4ea94a2ab64f671f55ac3079659d7cd09e69 100644 (file)
@@ -23,8 +23,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "tm.h"
 #include "langhooks.h"
-#include "gimplify.h"
+#include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-ssanames.h"
index 01414ecae9126a405e37be323d3a8382e26a3593..46e9df5da0df7ecbc65be99850baa54f295e1249 100644 (file)
@@ -28,8 +28,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index 8dd3c430b479713002166df7d4411458d8e4fb4f..491d8c6a3db81349cc686b43212e047dac65eca1 100644 (file)
@@ -28,8 +28,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
index 8cca6c67fc34714d8d6ba325c1dc58bccaf36f16..11f7beed3a096422e741e590962cccc042ddb05f 100644 (file)
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
index 9dfa7bdd88ba3e451fda54e281b3879d6cda1dfb..54d821af9c0fe492d3a2ca152142273f5b0b4252 100644 (file)
@@ -29,8 +29,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
index c4484536e82790a7bcaa4772e0b77851632a12a5..97c9c8ac37d0b84cb4ab46937a4424e9d7c6ffd5 100644 (file)
@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "bitmap.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
+#include "gimplify.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-phinodes.h"
index 0de971319add51b6d09944a494e26ed920282f9f..544d535f0cf218584fa2b101ef0ee98d0f7031e2 100644 (file)
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "intl.h"
 #include "tm.h"
 #include "basic-block.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "function.h"
index 6f822f65bd1a5fab97a2c53162a0cd304bd436ac..719cf9a59f0f9bf3642cc86916038452efc159f2 100644 (file)
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "optabs.h"
 #include "regs.h"
 #include "ggc.h"
+#include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"