cc0 -> CCmode questions

2019-11-02 Thread Georg-Johann Lay

Segher Boessenkool schrieb:
Btw, does GCC support clobbering registers in branches (or 
cbranch4 for that matter)?  This requirement would come up when 
transitioning avr to cc_mode because cbranches would live post reload.


Of course.  You cannot have *reloads* on branches, that is all.

Segher


Does this also apply to input reloads?

Suppose cbranch with constraints like

"d,r"
"n,r"

for the operands to be compared, where d is a register class that
can be compared against immediate, but registers in r can't be
compared to n in general.

For a case #2 target (only ccmode clobbers before reload), reload might
generate an input reload for the constant in the cbranch.

So this is for bidden?

Johann



Re: cc0 -> CCmode questions

2019-11-02 Thread Jeff Law
On 11/2/19 9:51 AM, Georg-Johann Lay wrote:
> Segher Boessenkool schrieb:
>>> Btw, does GCC support clobbering registers in branches (or
>>> cbranch4 for that matter)?  This requirement would come up when
>>> transitioning avr to cc_mode because cbranches would live post reload.
>>
>> Of course.  You cannot have *reloads* on branches, that is all.
>>
>> Segher
> 
> Does this also apply to input reloads?
> 
> Suppose cbranch with constraints like
> 
> "d,r"
> "n,r"
> 
> for the operands to be compared, where d is a register class that
> can be compared against immediate, but registers in r can't be
> compared to n in general.
> 
> For a case #2 target (only ccmode clobbers before reload), reload might
> generate an input reload for the constant in the cbranch.
> 
> So this is for bidden?
This should work in the LRA world just fine.  The problems are with
output reloads, not input reloads.

With an output reload on a branch you have to emit the reload at the
target(s) of the branch as well as the fallthru path (if one exists).
In theory we could do this for simple branches, but for indirects it'd
be virtually impossible.


jeff



Re: Fixing cvs2svn branchpoints

2019-11-02 Thread Eric S. Raymond
Joseph Myers :
> And here are corresponding lists of tags where the commit cvs2svn 
> generated for the tag should be reparented.

Make that issue 2, please.  Also, open an issue 3 about how you want those
mid-branch deletes handled.  I agree that the right thing is just to nuke
them, but I have a lot of plates in the air right now...

Also please open reposurgeon issues about the svnmerge properties and the
missing documentation.  I might get to the svnmerge thing today, it
should be a trivial tweak.

The repository comparison is still grinding.  It has turned up some
content mismatches, fewer than last time, most in trunk/libgo.

The reason for the "fewer" is that the Go version has learned how to
correctly handle a corner case the Python did not - tag/branch delete
followed by a recreation at a different root point.  That's why this
is commented out in the lift script:

# Squash accidental trunk deletion and recreation.
# Should no longer be needed due to branch recoloring.
#<130803.1>,<138077>,<184996.1> squash

I used to have to find defects like that by hand and patch them. Now
there's a recoloring phase where branches and tags with multiple
creations are handled by renaming all but the last such branch in each
clique to a unique nonce name.  This makes all the results from branch
copies come out right, and none of the nonce names are ever visible in
the final conversion.

I'll go dive into the defect analysis now.
-- 
http://www.catb.org/~esr/";>Eric S. Raymond




Re: cc0 -> CCmode questions

2019-11-02 Thread Segher Boessenkool
On Sat, Nov 02, 2019 at 10:14:15AM -0600, Jeff Law wrote:
> On 11/2/19 9:51 AM, Georg-Johann Lay wrote:
> > Segher Boessenkool schrieb:
> >>> Btw, does GCC support clobbering registers in branches (or
> >>> cbranch4 for that matter)?  This requirement would come up when
> >>> transitioning avr to cc_mode because cbranches would live post reload.
> >>
> >> Of course.  You cannot have *reloads* on branches, that is all.

Sigh.  *Output reloads*, sorry for dropping a crucial word here :-/

> > Does this also apply to input reloads?
>
> This should work in the LRA world just fine.  The problems are with
> output reloads, not input reloads.

In the old reload world as well.  Only output reloads are a problem.

> With an output reload on a branch you have to emit the reload at the
> target(s) of the branch as well as the fallthru path (if one exists).

Or you can do something *before* the branch, but that is different for
every case, and harder to do anyway.

If you insert the reloads at the jump target, you'll need to make a
separate predecessor of the jump target and insert the reload *there*,
if we aren't the only predecessor of that target.

> In theory we could do this for simple branches, but for indirects it'd
> be virtually impossible.

Yup.  Luckily most branches with outputs are not indirect branches.

I would love if this problem was fixed once and for all (I only care
about LRA here of course).


Segher


gcc-9-20191102 is now available

2019-11-02 Thread gccadmin
Snapshot gcc-9-20191102 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/9-20191102/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 9 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-9-branch 
revision 277745

You'll find:

 gcc-9-20191102.tar.xzComplete GCC

  SHA256=ccca50ed5b09b825f985b42f4ad6aae628cd4b7e511ae90180443409c70ab920
  SHA1=2d721464a01f8a90a0141526d1b8f404a75fb2ab

Diffs from 9-20191026 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-9
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.