diff mbox

[3/4] Separate gimple.[ch] and gimplify.[ch] - front end files

Message ID 52814709.6080904@redhat.com
State New
Headers show

Commit Message

Andrew MacLeod Nov. 11, 2013, 9:07 p.m. UTC
This one covers the front end files which included gimple.h

Bootstraps on x86_64-unknown-linux-gnu with no new regressions.  OK?

Andrew

Comments

Richard Biener Nov. 13, 2013, 9:40 a.m. UTC | #1
On Mon, Nov 11, 2013 at 10:07 PM, Andrew MacLeod <amacleod@redhat.com> wrote:
> This one covers the front end files which included gimple.h
>
> Bootstraps on x86_64-unknown-linux-gnu with no new regressions.  OK?

       * c-family/c-omp.c: Include gimple-expr.h instead of gimple.h.

can you explain why gimple-expr.h is not as bad as gimple.h?
(gimple-expr.h sounds oxymoronish ... but I didn't follow the thread
that ended up creating this beast, it seems a better matching name
would be gimple-tree.h ... haha).

Otherwise gimple.h -> gimplify.h indeed looks like an improvement.

Thanks,
Richard.

> Andrew
Andrew MacLeod Nov. 13, 2013, 2:12 p.m. UTC | #2
On 11/13/2013 04:40 AM, Richard Biener wrote:
> On Mon, Nov 11, 2013 at 10:07 PM, Andrew MacLeod <amacleod@redhat.com> wrote:
>> This one covers the front end files which included gimple.h
>>
>> Bootstraps on x86_64-unknown-linux-gnu with no new regressions.  OK?
>         * c-family/c-omp.c: Include gimple-expr.h instead of gimple.h.
>
> can you explain why gimple-expr.h is not as bad as gimple.h?
> (gimple-expr.h sounds oxymoronish ... but I didn't follow the thread
> that ended up creating this beast, it seems a better matching name
> would be gimple-tree.h ... haha).
>
> Otherwise gimple.h -> gimplify.h indeed looks like an improvement.
>
>
There needs to be a place which has gimple componentry  that is not 
related to or require a statement.  gimple.h is becoming  the home for 
just 0gimple statements.     There are 3 (for the moment) major classes 
of things that are in statements and are also used by other parts of the 
compiler  .. Types, Decls, and Expressions.  I could have split it into 
those 3 files right now, but it didn't seem like that granularity was 
needed yet.

I was going to call it gimple-decl.h since most of the things are decl 
related... but I figured that eventually there will be all 3 files, and 
its likely that gimple-expr.h will eventually include gimple-type.h and 
gimple-decl.,h so just include gimple-expr.h now and have less include 
turmoil eventually.   Perhaps that wont be the case and  gimple-decl.h 
may have been a more appropriate name for now.

Its true that gimple-tree would in fact be a more appropriate name at 
the moment, but these gimple-* files are the core ones I'll be changing 
first, so the tree part would no longer be meaningful.  the 'expr' part 
is suppose to represent the abstract purpose...  The stuff required to 
represent an expression in gimple IL.  And yes, that is currently a tree :-)

Andrew
Michael Matz Nov. 14, 2013, 3:26 p.m. UTC | #3
Hi,

On Wed, 13 Nov 2013, Andrew MacLeod wrote:

> There needs to be a place which has gimple componentry that is not 
> related to or require a statement.  gimple.h is becoming the home for 
> just 0gimple statements.  There are 3 (for the moment) major classes of 
> things that are in statements and are also used by other parts of the 
> compiler .. Types, Decls, and Expressions.

Actually I wouldn't say gimple statements contain expressions.  They 
refer to objects (and unfortunately also sometimes to types directly, 
namely in the call stmt and in the exception statements, though the latter 
don't exist anymore after lowering).  It's those objects which have types.

Currently those objects are trees and hence can be more complex than just 
singletons (which are the decls, constants and ssa names), that is most of 
the SINGLE_RHS objects.  If you want to get rid of trees you somehow need 
to represent those objects in a different way, but they still aren't 
expressions in the common meaning.

E.g. there won't ever be something like a gimple arithmetic addition 
expression (or I hope there never will be).  It's always a gimple 
statement that assigns the addition result somewhere.  Even the 
non-singleton objects don't exist in isolation, they're always part of 
some action (i.e. statement) to operate on those objects.

That's why I think talking about a gimple expression as if they were 
somehow some stand-alone concept is fairly confusing, and introducing it 
now as if it would somewhen exist would lead to going down some inferior 
design paths.

> Its true that gimple-tree would in fact be a more appropriate name at 
> the moment, but these gimple-* files are the core ones I'll be changing 
> first, so the tree part would no longer be meaningful.  the 'expr' part 
> is suppose to represent the abstract purpose...  The stuff required to 
> represent an expression in gimple IL.  And yes, that is currently a tree 
> :-)

Put another way: what do you envision that gimple expressions would be.  
For example what would you propose we could do with them?


Ciao,
Michael.
Diego Novillo Nov. 14, 2013, 3:31 p.m. UTC | #4
On Thu, Nov 14, 2013 at 10:26 AM, Michael Matz <matz@suse.de> wrote:

> Put another way: what do you envision that gimple expressions would be.
> For example what would you propose we could do with them?

The only expressions I have in mind are memory references and
aggregates, which can get pretty convoluted.

Perhaps we could label them something different than expressions. They
would be in the same taxonomy of "gimple values".  They are operands
to gimple statements, they can have multiple symbol references inside
and they may have a tree like structure.


Diego.
Andrew MacLeod Nov. 14, 2013, 3:34 p.m. UTC | #5
On 11/14/2013 10:26 AM, Michael Matz wrote:
> Hi,
>
> On Wed, 13 Nov 2013, Andrew MacLeod wrote:
>
>> There needs to be a place which has gimple componentry that is not
>> related to or require a statement.  gimple.h is becoming the home for
>> just 0gimple statements.  There are 3 (for the moment) major classes of
>> things that are in statements and are also used by other parts of the
>> compiler .. Types, Decls, and Expressions.
>
> E.g. there won't ever be something like a gimple arithmetic addition
> expression (or I hope there never will be).  It's always a gimple
> statement that assigns the addition result somewhere.  Even the
> non-singleton objects don't exist in isolation, they're always part of
> some action (i.e. statement) to operate on those objects.
>
> That's why I think talking about a gimple expression as if they were
> somehow some stand-alone concept is fairly confusing, and introducing it
> now as if it would somewhen exist would lead to going down some inferior
> design paths.
Well, for gimple expressions I was thinking more about the addressing 
expressions we currently leave as trees... MEM stuff... that where most 
of the remaining 'expressions' are I guess, so perhaps gimple-addressing 
is a better term...

in any case, it refers mostly to the parts of trees which are 
tcc_expression and are not subsumed by gimple_statement contructs. So I 
use expression for lack of a better term since I don't know what exact 
uses there are yet.

Andrew
Diego Novillo Nov. 14, 2013, 3:37 p.m. UTC | #6
On Thu, Nov 14, 2013 at 10:34 AM, Andrew MacLeod <amacleod@redhat.com> wrote:
> On 11/14/2013 10:26 AM, Michael Matz wrote:
>>
>> Hi,
>>
>> On Wed, 13 Nov 2013, Andrew MacLeod wrote:
>>
>>> There needs to be a place which has gimple componentry that is not
>>> related to or require a statement.  gimple.h is becoming the home for
>>> just 0gimple statements.  There are 3 (for the moment) major classes of
>>> things that are in statements and are also used by other parts of the
>>> compiler .. Types, Decls, and Expressions.
>>
>>
>> E.g. there won't ever be something like a gimple arithmetic addition
>> expression (or I hope there never will be).  It's always a gimple
>> statement that assigns the addition result somewhere.  Even the
>> non-singleton objects don't exist in isolation, they're always part of
>> some action (i.e. statement) to operate on those objects.
>>
>> That's why I think talking about a gimple expression as if they were
>> somehow some stand-alone concept is fairly confusing, and introducing it
>> now as if it would somewhen exist would lead to going down some inferior
>> design paths.
>
> Well, for gimple expressions I was thinking more about the addressing
> expressions we currently leave as trees... MEM stuff... that where most of
> the remaining 'expressions' are I guess, so perhaps gimple-addressing is a
> better term...
>
> in any case, it refers mostly to the parts of trees which are tcc_expression
> and are not subsumed by gimple_statement contructs. So I use expression for
> lack of a better term since I don't know what exact uses there are yet.

I think we'll end up with a hierarchy that will have some generic
"value" at its base, with constants, symbols, aggregates, arrays,
memrefs, etc as children. But perhaps we can wait until we have a
better idea of how we want it to look like.


Diego.
Andrew MacLeod Nov. 14, 2013, 3:40 p.m. UTC | #7
On 11/14/2013 10:37 AM, Diego Novillo wrote:
> On Thu, Nov 14, 2013 at 10:34 AM, Andrew MacLeod <amacleod@redhat.com> wrote:
>> On 11/14/2013 10:26 AM, Michael Matz wrote:
>>> Hi,
>>>
>>> On Wed, 13 Nov 2013, Andrew MacLeod wrote:
>>>
>>>> There needs to be a place which has gimple componentry that is not
>>>> related to or require a statement.  gimple.h is becoming the home for
>>>> just 0gimple statements.  There are 3 (for the moment) major classes of
>>>> things that are in statements and are also used by other parts of the
>>>> compiler .. Types, Decls, and Expressions.
>>>
>>> E.g. there won't ever be something like a gimple arithmetic addition
>>> expression (or I hope there never will be).  It's always a gimple
>>> statement that assigns the addition result somewhere.  Even the
>>> non-singleton objects don't exist in isolation, they're always part of
>>> some action (i.e. statement) to operate on those objects.
>>>
>>> That's why I think talking about a gimple expression as if they were
>>> somehow some stand-alone concept is fairly confusing, and introducing it
>>> now as if it would somewhen exist would lead to going down some inferior
>>> design paths.
>> Well, for gimple expressions I was thinking more about the addressing
>> expressions we currently leave as trees... MEM stuff... that where most of
>> the remaining 'expressions' are I guess, so perhaps gimple-addressing is a
>> better term...
>>
>> in any case, it refers mostly to the parts of trees which are tcc_expression
>> and are not subsumed by gimple_statement contructs. So I use expression for
>> lack of a better term since I don't know what exact uses there are yet.
> I think we'll end up with a hierarchy that will have some generic
> "value" at its base, with constants, symbols, aggregates, arrays,
> memrefs, etc as children. But perhaps we can wait until we have a
> better idea of how we want it to look like.
>
>
That is pretty much what my prototypes at th cauldron had...   I just 
hadn't fit expressions into it yet... so just left the term. but that 
why it is lumped in with decls and types... things that will have their 
tree replaced.  In any case... thats all to come...

Andrew
Michael Matz Nov. 14, 2013, 3:57 p.m. UTC | #8
Hi,

On Thu, 14 Nov 2013, Andrew MacLeod wrote:

> > That's why I think talking about a gimple expression as if they were
> > somehow some stand-alone concept is fairly confusing, and introducing it
> > now as if it would somewhen exist would lead to going down some inferior
> > design paths.
> 
> Well, for gimple expressions I was thinking more about the addressing 
> expressions we currently leave as trees... MEM stuff... that where most 
> of the remaining 'expressions' are I guess, so perhaps gimple-addressing 
> is a better term...
> 
> in any case, it refers mostly to the parts of trees which are 
> tcc_expression and are not subsumed by gimple_statement contructs. So I 
> use expression for lack of a better term since I don't know what exact 
> uses there are yet.

Well, I can precisely name you the set of things you mean then, and I 
wouldn't call any of them expressions (all of them either represent a 
(sub)object or a statement of fact, not a computation (except as part of 
how to get at the specified object)):

  CODE_CLASS == tcc_reference
     : COMPONENT_REF, BIT_FIELD_REF, ARRAY_REF, ARRAY_RANGE_REF,
       REALPART_EXPR, IMAGPART_EXPR, VIEW_CONVERT_EXPR, INDIRECT_REF,
       TARGET_MEM_REF, MEM_REF
  CODE ==
     : CONSTRUCTOR, OBJ_TYPE_REF, ASSERT_EXPR, ADDR_EXPR, WITH_SIZE_EXPR

The rest is the trivial SSA_NAME, tcc_constant and tcc_declaration, what I 
called singletons.

Most of the codes above have a shallow one- or two-level structure in what 
they operate on, or can be made so by some more lowering.  A few of them 
can contain arbitrarily deep recursive structures (but not of all possible 
trees), and I think that's the only thing that would remain if the above 
would be better melded into serveral new statement types.  That's of 
course also the difficult part to get sensibly rid of, because the 
recursive structure lends itself to something that terribly looks like 
'tree'.

I think if following through with the whole plan there would (and should) 
be nothing remaining that could be called a gimple expression.


Ciao,
Michael.
Andrew MacLeod Nov. 14, 2013, 4:13 p.m. UTC | #9
On 11/14/2013 10:57 AM, Michael Matz wrote:
> Hi,
>
> On Thu, 14 Nov 2013, Andrew MacLeod wrote:
>
>>> That's why I think talking about a gimple expression as if they were
>>> somehow some stand-alone concept is fairly confusing, and introducing it
>>> now as if it would somewhen exist would lead to going down some inferior
>>> design paths.
>> Well, for gimple expressions I was thinking more about the addressing
>> expressions we currently leave as trees... MEM stuff... that where most
>> of the remaining 'expressions' are I guess, so perhaps gimple-addressing
>> is a better term...
>>
>> in any case, it refers mostly to the parts of trees which are
>> tcc_expression and are not subsumed by gimple_statement contructs. So I
>> use expression for lack of a better term since I don't know what exact
>> uses there are yet.
> Well, I can precisely name you the set of things you mean then, and I
> wouldn't call any of them expressions (all of them either represent a
> (sub)object or a statement of fact, not a computation (except as part of
> how to get at the specified object)):
>
>    CODE_CLASS == tcc_reference
>       : COMPONENT_REF, BIT_FIELD_REF, ARRAY_REF, ARRAY_RANGE_REF,
>         REALPART_EXPR, IMAGPART_EXPR, VIEW_CONVERT_EXPR, INDIRECT_REF,
>         TARGET_MEM_REF, MEM_REF
>    CODE ==
>       : CONSTRUCTOR, OBJ_TYPE_REF, ASSERT_EXPR, ADDR_EXPR, WITH_SIZE_EXPR
>
> The rest is the trivial SSA_NAME, tcc_constant and tcc_declaration, what I
> called singletons.
>
> Most of the codes above have a shallow one- or two-level structure in what
> they operate on, or can be made so by some more lowering.  A few of them
> can contain arbitrarily deep recursive structures (but not of all possible
> trees), and I think that's the only thing that would remain if the above
> would be better melded into serveral new statement types.  That's of
> course also the difficult part to get sensibly rid of, because the
> recursive structure lends itself to something that terribly looks like
> 'tree'.
>
> I think if following through with the whole plan there would (and should)
> be nothing remaining that could be called a gimple expression.
>
>
very possibly, i just haven't gotten to those parts yet. I can change 
the name back to gimple-decl.[ch] or some such thing if you like that 
better.

Andrew
Michael Matz Nov. 14, 2013, 4:23 p.m. UTC | #10
Hi,

On Thu, 14 Nov 2013, Andrew MacLeod wrote:

> > I think if following through with the whole plan there would (and 
> > should) be nothing remaining that could be called a gimple expression.
> 
> very possibly, i just haven't gotten to those parts yet. I can change 
> the name back to gimple-decl.[ch] or some such thing if you like that 
> better.

-object? -operand? -stuff? ;-)  Will all of these splits land at trunk, 
i.e. 4.9?  Why the hurry when not even such high-level things are clear?  
I mean how can you think about rearchitecting the gimple data structures 
without having looked at the current details.  It's clear that not every 
detail of the design can be fixated at this point, but basic questions 
like "what's the operands?", "will there be expressions?", "how do we 
iterate?", "recursive structures or not?" should at least get some answer 
before really starting grind work, shouldn't they?


Ciao,
Michael.
Diego Novillo Nov. 14, 2013, 4:24 p.m. UTC | #11
On Thu, Nov 14, 2013 at 11:13 AM, Andrew MacLeod <amacleod@redhat.com> wrote:

> very possibly, i just haven't gotten to those parts yet. I can change the
> name back to gimple-decl.[ch] or some such thing if you like that better.

As much as I hate to paint name sheds: gimple-val.[ch].


Diego.
Andrew MacLeod Nov. 14, 2013, 4:34 p.m. UTC | #12
On 11/14/2013 11:23 AM, Michael Matz wrote:
> Hi,
>
> On Thu, 14 Nov 2013, Andrew MacLeod wrote:
>
>>> I think if following through with the whole plan there would (and
>>> should) be nothing remaining that could be called a gimple expression.
>> very possibly, i just haven't gotten to those parts yet. I can change
>> the name back to gimple-decl.[ch] or some such thing if you like that
>> better.
> -object? -operand? -stuff? ;-)  Will all of these splits land at trunk,
> i.e. 4.9?  Why the hurry when not even such high-level things are clear?
> I mean how can you think about rearchitecting the gimple data structures
> without having looked at the current details.  It's clear that not every
> detail of the design can be fixated at this point, but basic questions
> like "what's the operands?", "will there be expressions?", "how do we
> iterate?", "recursive structures or not?" should at least get some answer
> before really starting grind work, shouldn't they?
>
The splits are for header file cleanup and re-structuring into logical 
components.  As I mentioned in the original post,  the file is needed to 
break dependency cycles between gimple.h (the statements) , the 
iterators, and gimplification.  It is for the gimple stuff which doesn't 
need any of those things but is consumed by them.

This really has nothing to do with my future plans, other than the fact 
that I also said whatever is in this file is will eventually be split 
into more things, but I'm not ready to do those splits yet, thus the 
gimple-blah name doesn't matter to me.  gimple-expr seemed convenient at 
the time but clearly you don't like it, and I'll happily call it 
whatever you want.  It's a grab bag of all the gimple values which are 
still trees...

maybe the suggested  gimple-val.[ch] is ok?

Andrew
Richard Biener Nov. 14, 2013, 5:57 p.m. UTC | #13
Diego Novillo <dnovillo@google.com> wrote:
>On Thu, Nov 14, 2013 at 11:13 AM, Andrew MacLeod <amacleod@redhat.com>
>wrote:
>
>> very possibly, i just haven't gotten to those parts yet. I can change
>the
>> name back to gimple-decl.[ch] or some such thing if you like that
>better.
>
>As much as I hate to paint name sheds: gimple-val.[ch].

Yeah, everything that is a gimple value ...

Richard.

>
>Diego.
diff mbox

Patch


	* ada/gcc-interface/trans.c: Include gimplify.h.

	* c/c-typeck.c: Include gimplify.h.

	* 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.

	* 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.

	* 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.

	* go/go-lang.c: Include gimplify.h.
	* go/gofrontend/expressions.cc: Likewise.
	* go/gofrontend/gogo-tree.cc: Likewise.
	* go/gofrontend/types.cc: Likewise.

	* java/java-gimplify.c: Include gimplify.h.

	* objc/objc-act.c: Include gimplify.h.

Index: ada/gcc-interface/trans.c
===================================================================
*** ada/gcc-interface/trans.c	(revision 204496)
--- ada/gcc-interface/trans.c	(working copy)
***************
*** 33,39 ****
  #include "output.h"
  #include "libfuncs.h"	/* For set_stack_check_libfunc.  */
  #include "tree-iterator.h"
! #include "gimple.h"
  #include "bitmap.h"
  #include "cgraph.h"
  #include "diagnostic.h"
--- 33,39 ----
  #include "output.h"
  #include "libfuncs.h"	/* For set_stack_check_libfunc.  */
  #include "tree-iterator.h"
! #include "gimplify.h"
  #include "bitmap.h"
  #include "cgraph.h"
  #include "diagnostic.h"
Index: c/c-typeck.c
===================================================================
*** c/c-typeck.c	(revision 204496)
--- c/c-typeck.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 36,42 ****
  #include "target.h"
  #include "tree-iterator.h"
  #include "bitmap.h"
! #include "gimple.h"
  #include "tree-inline.h"
  #include "omp-low.h"
  #include "c-family/c-objc.h"
--- 36,42 ----
  #include "target.h"
  #include "tree-iterator.h"
  #include "bitmap.h"
! #include "gimplify.h"
  #include "tree-inline.h"
  #include "omp-low.h"
  #include "c-family/c-objc.h"
Index: c-family/c-common.c
===================================================================
*** c-family/c-common.c	(revision 204496)
--- c-family/c-common.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 42,47 ****
--- 42,48 ----
  #include "opts.h"
  #include "cgraph.h"
  #include "target-def.h"
+ #include "gimplify.h"
  
  cpp_reader *parse_in;		/* Declared in c-pragma.h.  */
  
Index: c-family/c-gimplify.c
===================================================================
*** c-family/c-gimplify.c	(revision 204496)
--- c-family/c-gimplify.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 29,35 ****
  #include "tm.h"
  #include "tree.h"
  #include "c-common.h"
! #include "gimple.h"
  #include "tree-inline.h"
  #include "diagnostic-core.h"
  #include "langhooks.h"
--- 29,35 ----
  #include "tm.h"
  #include "tree.h"
  #include "c-common.h"
! #include "gimplify.h"
  #include "tree-inline.h"
  #include "diagnostic-core.h"
  #include "langhooks.h"
Index: c-family/cilk.c
===================================================================
*** c-family/cilk.c	(revision 204496)
--- c-family/cilk.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 25,31 ****
  #include "coretypes.h"
  #include "tree.h"
  #include "langhooks.h"
! #include "gimple.h"
  #include "tree-iterator.h"
  #include "tree-inline.h"
  #include "c-family/c-common.h"
--- 25,31 ----
  #include "coretypes.h"
  #include "tree.h"
  #include "langhooks.h"
! #include "gimplify.h"
  #include "tree-iterator.h"
  #include "tree-inline.h"
  #include "c-family/c-common.h"
Index: c-family/c-omp.c
===================================================================
*** c-family/c-omp.c	(revision 204496)
--- c-family/c-omp.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 27,33 ****
  #include "tree.h"
  #include "c-common.h"
  #include "c-pragma.h"
! #include "gimple.h"		/* For create_tmp_var_raw.  */
  #include "langhooks.h"
  
  
--- 27,33 ----
  #include "tree.h"
  #include "c-common.h"
  #include "c-pragma.h"
! #include "gimple-expr.h"
  #include "langhooks.h"
  
  
Index: c-family/c-ubsan.c
===================================================================
*** c-family/c-ubsan.c	(revision 204496)
--- c-family/c-ubsan.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 24,30 ****
  #include "tree.h"
  #include "alloc-pool.h"
  #include "cgraph.h"
- #include "gimple.h"
  #include "output.h"
  #include "toplev.h"
  #include "ubsan.h"
--- 24,29 ----
Index: cp/class.c
===================================================================
*** cp/class.c	(revision 204496)
--- cp/class.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 36,42 ----
  #include "splay-tree.h"
  #include "pointer-set.h"
  #include "hash-table.h"
+ #include "gimplify.h"
  
  /* The number of nested classes being processed.  If we are not in the
     scope of any class, this is zero.  */
Index: cp/cp-gimplify.c
===================================================================
*** cp/cp-gimplify.c	(revision 204496)
--- cp/cp-gimplify.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 27,33 ****
  #include "cp-tree.h"
  #include "c-family/c-common.h"
  #include "tree-iterator.h"
! #include "gimple.h"
  #include "hashtab.h"
  #include "pointer-set.h"
  #include "flags.h"
--- 27,33 ----
  #include "cp-tree.h"
  #include "c-family/c-common.h"
  #include "tree-iterator.h"
! #include "gimplify.h"
  #include "hashtab.h"
  #include "pointer-set.h"
  #include "flags.h"
Index: cp/error.c
===================================================================
*** cp/error.c	(revision 204496)
--- cp/error.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 33,38 ****
--- 33,39 ----
  #include "pointer-set.h"
  #include "c-family/c-objc.h"
  #include "ubsan.h"
+ #include "gimplify.h"
  
  #include <new>                    // For placement-new.
  
Index: cp/init.c
===================================================================
*** cp/init.c	(revision 204496)
--- cp/init.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 28,33 ****
--- 28,34 ----
  #include "cp-tree.h"
  #include "flags.h"
  #include "target.h"
+ #include "gimplify.h"
  
  static bool begin_init_stmts (tree *, tree *);
  static tree finish_init_stmts (bool, tree, tree);
Index: cp/optimize.c
===================================================================
*** cp/optimize.c	(revision 204496)
--- cp/optimize.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 34,40 ****
  #include "langhooks.h"
  #include "diagnostic-core.h"
  #include "dumpfile.h"
! #include "gimple.h"
  #include "tree-iterator.h"
  #include "cgraph.h"
  
--- 34,40 ----
  #include "langhooks.h"
  #include "diagnostic-core.h"
  #include "dumpfile.h"
! #include "gimplify.h"
  #include "tree-iterator.h"
  #include "cgraph.h"
  
Index: cp/pt.c
===================================================================
*** cp/pt.c	(revision 204496)
--- cp/pt.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 42,47 ****
--- 42,48 ----
  #include "timevar.h"
  #include "tree-iterator.h"
  #include "type-utils.h"
+ #include "gimplify.h"
  
  /* The type of functions taking a tree, and some additional data, and
     returning an int.  */
Index: cp/semantics.c
===================================================================
*** cp/semantics.c	(revision 204496)
--- cp/semantics.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 41,47 ****
  #include "tree-iterator.h"
  #include "vec.h"
  #include "target.h"
! #include "gimple.h"
  #include "bitmap.h"
  #include "hash-table.h"
  #include "omp-low.h"
--- 41,47 ----
  #include "tree-iterator.h"
  #include "vec.h"
  #include "target.h"
! #include "gimplify.h"
  #include "bitmap.h"
  #include "hash-table.h"
  #include "omp-low.h"
Index: cp/tree.c
===================================================================
*** cp/tree.c	(revision 204496)
--- cp/tree.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 30,36 ****
  #include "convert.h"
  #include "cgraph.h"
  #include "splay-tree.h"
! #include "gimple.h" /* gimple_has_body_p */
  #include "hash-table.h"
  
  static tree bot_manip (tree *, int *, void *);
--- 30,36 ----
  #include "convert.h"
  #include "cgraph.h"
  #include "splay-tree.h"
! #include "gimplify.h"
  #include "hash-table.h"
  
  static tree bot_manip (tree *, int *, void *);
Index: cp/vtable-class-hierarchy.c
===================================================================
*** cp/vtable-class-hierarchy.c	(revision 204496)
--- cp/vtable-class-hierarchy.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 118,124 ****
  #include "cgraph.h"
  #include "tree-iterator.h"
  #include "vtable-verify.h"
! #include "gimple.h"
  
  static int num_calls_to_regset = 0;
  static int num_calls_to_regpair = 0;
--- 118,124 ----
  #include "cgraph.h"
  #include "tree-iterator.h"
  #include "vtable-verify.h"
! #include "gimplify.h"
  
  static int num_calls_to_regset = 0;
  static int num_calls_to_regpair = 0;
Index: cp/decl2.c
===================================================================
*** cp/decl2.c	(revision 204496)
--- cp/decl2.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 45,51 ****
  #include "c-family/c-pragma.h"
  #include "dumpfile.h"
  #include "intl.h"
- #include "gimple.h"
  #include "pointer-set.h"
  #include "splay-tree.h"
  #include "langhooks.h"
--- 45,50 ----
Index: cp/except.c
===================================================================
*** cp/except.c	(revision 204496)
--- cp/except.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 31,37 ****
  #include "tree-inline.h"
  #include "tree-iterator.h"
  #include "target.h"
- #include "gimple.h"
  
  static void push_eh_cleanup (tree);
  static tree prepare_eh_type (tree);
--- 31,36 ----
Index: cp/method.c
===================================================================
*** cp/method.c	(revision 204496)
--- cp/method.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 34,40 ****
  #include "common/common-target.h"
  #include "diagnostic.h"
  #include "cgraph.h"
! #include "gimple.h"
  
  /* Various flags to control the mangling process.  */
  
--- 34,40 ----
  #include "common/common-target.h"
  #include "diagnostic.h"
  #include "cgraph.h"
! #include "pointer-set.h"
  
  /* Various flags to control the mangling process.  */
  
Index: fortran/f95-lang.c
===================================================================
*** fortran/f95-lang.c	(revision 204496)
--- fortran/f95-lang.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 28,34 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
- #include "gimple.h"
  #include "flags.h"
  #include "langhooks.h"
  #include "langhooks-def.h"
--- 28,33 ----
Index: fortran/trans-array.c
===================================================================
*** fortran/trans-array.c	(revision 204496)
--- fortran/trans-array.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 79,85 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimple.h"		/* For create_tmp_var_name.  */
  #include "diagnostic-core.h"	/* For internal_error/fatal_error.  */
  #include "flags.h"
  #include "gfortran.h"
--- 79,85 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimple-expr.h"
  #include "diagnostic-core.h"	/* For internal_error/fatal_error.  */
  #include "flags.h"
  #include "gfortran.h"
Index: fortran/trans.c
===================================================================
*** fortran/trans.c	(revision 204496)
--- fortran/trans.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 22,28 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimple.h"	/* For create_tmp_var_raw.  */
  #include "tree-iterator.h"
  #include "diagnostic-core.h"  /* For internal_error.  */
  #include "flags.h"
--- 22,28 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimple-expr.h"	/* For create_tmp_var_raw.  */
  #include "tree-iterator.h"
  #include "diagnostic-core.h"  /* For internal_error.  */
  #include "flags.h"
Index: fortran/trans-decl.c
===================================================================
*** fortran/trans-decl.c	(revision 204496)
--- fortran/trans-decl.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 26,32 ****
  #include "tm.h"
  #include "tree.h"
  #include "tree-dump.h"
! #include "gimple.h"	/* For create_tmp_var_raw.  */
  #include "ggc.h"
  #include "diagnostic-core.h"	/* For internal_error.  */
  #include "toplev.h"	/* For announce_function.  */
--- 26,32 ----
  #include "tm.h"
  #include "tree.h"
  #include "tree-dump.h"
! #include "gimple-expr.h"	/* For create_tmp_var_raw.  */
  #include "ggc.h"
  #include "diagnostic-core.h"	/* For internal_error.  */
  #include "toplev.h"	/* For announce_function.  */
Index: fortran/trans-expr.c
===================================================================
*** fortran/trans-expr.c	(revision 204496)
--- fortran/trans-expr.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 38,43 ****
--- 38,44 ----
  /* Only for gfc_trans_assign and gfc_trans_pointer_assign.  */
  #include "trans-stmt.h"
  #include "dependency.h"
+ #include "gimplify.h"
  
  
  /* Convert a scalar to an array descriptor. To be used for assumed-rank
Index: fortran/trans-openmp.c
===================================================================
*** fortran/trans-openmp.c	(revision 204496)
--- fortran/trans-openmp.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimple.h"	/* For create_tmp_var_raw.  */
  #include "diagnostic-core.h"	/* For internal_error.  */
  #include "gfortran.h"
  #include "trans.h"
--- 23,29 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
! #include "gimplify.h"	/* For create_tmp_var_raw.  */
  #include "diagnostic-core.h"	/* For internal_error.  */
  #include "gfortran.h"
  #include "trans.h"
Index: go/go-lang.c
===================================================================
*** go/go-lang.c	(revision 204496)
--- go/go-lang.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  #include "coretypes.h"
  #include "opts.h"
  #include "tree.h"
! #include "gimple.h"
  #include "ggc.h"
  #include "toplev.h"
  #include "debug.h"
--- 23,29 ----
  #include "coretypes.h"
  #include "opts.h"
  #include "tree.h"
! #include "gimplify.h"
  #include "ggc.h"
  #include "toplev.h"
  #include "debug.h"
Index: go/gofrontend/expressions.cc
===================================================================
*** go/gofrontend/expressions.cc	(revision 204496)
--- go/gofrontend/expressions.cc	(working copy)
***************
*** 12,17 ****
--- 12,18 ----
  #include "intl.h"
  #include "tree.h"
  #include "gimple.h"
+ #include "gimplify.h"
  #include "tree-iterator.h"
  #include "convert.h"
  #include "real.h"
Index: go/gofrontend/gogo-tree.cc
===================================================================
*** go/gofrontend/gogo-tree.cc	(revision 204496)
--- go/gofrontend/gogo-tree.cc	(working copy)
***************
*** 9,14 ****
--- 9,15 ----
  #include "toplev.h"
  #include "tree.h"
  #include "gimple.h"
+ #include "gimplify.h"
  #include "tree-iterator.h"
  #include "cgraph.h"
  #include "langhooks.h"
Index: go/gofrontend/types.cc
===================================================================
*** go/gofrontend/types.cc	(revision 204496)
--- go/gofrontend/types.cc	(working copy)
***************
*** 10,15 ****
--- 10,16 ----
  #include "intl.h"
  #include "tree.h"
  #include "gimple.h"
+ #include "gimplify.h"
  #include "real.h"
  #include "convert.h"
  
Index: java/java-gimplify.c
===================================================================
*** java/java-gimplify.c	(revision 204496)
--- java/java-gimplify.c	(working copy)
*************** The Free Software Foundation is independ
*** 27,33 ****
  #include "tree.h"
  #include "java-tree.h"
  #include "dumpfile.h"
! #include "gimple.h"
  
  static tree java_gimplify_block (tree);
  static enum gimplify_status java_gimplify_modify_expr (tree *);
--- 27,33 ----
  #include "tree.h"
  #include "java-tree.h"
  #include "dumpfile.h"
! #include "gimplify.h"
  
  static tree java_gimplify_block (tree);
  static enum gimplify_status java_gimplify_modify_expr (tree *);
Index: objc/objc-act.c
===================================================================
*** objc/objc-act.c	(revision 204496)
--- objc/objc-act.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 60,66 ****
  #include "tree-pretty-print.h"
  
  /* For enum gimplify_status */
! #include "gimple.h"
  
  /* For encode_method_prototype().  */
  #include "objc-encoding.h"
--- 60,66 ----
  #include "tree-pretty-print.h"
  
  /* For enum gimplify_status */
! #include "gimplify.h"
  
  /* For encode_method_prototype().  */
  #include "objc-encoding.h"