Re: why mult generated for unsigned int multiply on mips?

2010-04-07 Thread Amker.Cheng
found the cause, sorry to disturb, please ignore this message.

-- 
Best Regards.


Re: VTA/debugging vs reload-v2

2010-04-07 Thread Alexandre Oliva
On Apr  5, 2010, Jeff Law  wrote:

> On 04/05/10 14:32, Alexandre Oliva wrote:
>> 2. When renaming references from P to P' in a region, do take debug
>> insns in the region into account, renaming references in debug insns as
>> you would in any other insn.

> OK.  So presumably the 2nd argument in a VAR_LOCATION can be any rtl
> expression?  Meaning I have to parse it looking for things that need
> changing?Right?

If DU can't help you get straight to them, yeah.

> Or I might be able to get away with changing regno_reg_rtx to point to
> the appropriate memref...

+1

> Everything you noted seems to be designed to keep the existing
> debug_insns updated -- under what circumstances are debug_insns
> created (which ought to give me a clue about whether or not I'm going
> to need to create new ones).

You don't.  debug insns are created out of debug stmts, created only at
points in which a user variable changes values: at assignments and at
confluences between possibly-different values (PHI nodes).

There's no need to emit debug insns at loads or stores.  Value tracking
will realize, at the load and at the store, that the same value is in
both operands at the end of the instruction, and will automatically
issue debug notes as needed.

ATM, the “as needed” is taken a bit too literally: only when a location
for a variable or sub-expression dies is another location computed; some
day we'll produce complete information, with *all* locations in which
the value of a variable is stored.  We may then have to be able to tell
whether or not a location is shared with other variables, and if so,
whether it's an LVALUE or RVALUE, so to speak, for each variable that
refers to it.

> FWIW, I don't see any references to debug_insn or var_location in
> gcc/doc/*.texi.   Somehow I think this must be unintentional.

Indeed.  Now that we're out of P1 VTA bugs for 4.5, I'll make it a
priority to come up with something.  Thanks!

-- 
Alexandre Oliva, freedom fighterhttp://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist  Red Hat Brazil Compiler Engineer


Re: GCC 4.5.0 release candidate available

2010-04-07 Thread Richard Guenther
On Tue, 6 Apr 2010, Jack Howarth wrote:

> On Tue, Apr 06, 2010 at 03:45:27PM +0200, Richard Guenther wrote:
> > 
> > A GCC 4.5.0 release candidate is available at:
> > 
> > ftp://gcc.gnu.org/pub/gcc/snapshots/4.5.0-RC-20100406/
> > 
> > Please test the tarballs and report any problems to Bugzilla.
> > CC me on the bugs if you believe they are regressions from
> > previous releases severe enough to block the 4.5.0 release.
> > 
> > Thanks,
> > Richard.
> > 
> > -- 
> > Richard Guenther 
> > Novell / SUSE Labs
> > SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 - GF: 
> > Markus Rex
> > 
> 
> Richard,
>Any chance we can get r157822 reapplied on gcc 4.5 branch 
> along with...
> 
> http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00129.html
> 
> to fix emutls? As can be seen from the testsuite run on
> x86_64-apple-darwin10...
> 
> http://gcc.gnu.org/ml/gcc-testresults/2010-04/msg00444.html
> 
> when all the "dg-require-effective-target tls_native" tests
> are converted to "dg-require-effective-target tls", we only
> see failures in...
> 
> FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc1@
> FAIL: gcc.dg/tls/opt-4.c scan-assembler tcc2@
> FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc...@]
> FAIL: gcc.dg/tls/opt-4.c scan-assembler-not tcc...@]
> FAIL: gcc.dg/tls/section-1.c conflict with user-defined section (test for 
> errors, line 12)
> 
> at -m32 and...
> 
> FAIL: gcc.dg/tls/section-1.c conflict with user-defined section (test for 
> errors, line 12)
> 
> at -m64. Iain thinks the gcc.dg/tls/opt-4.c failures are expected
> but the gcc.dg/tls/section-1.c failure might be showing up a
> previously unknown bug in emutls.

Not before the 4.5.0 release.

Richard.


compiler operations research

2010-04-07 Thread roy rosen
Hi,

Are there any known methodologies/tools/flows that enable operations
research on the compiler generated assembly?

The reasoning behind the question is that compiler heuristics
complexity are restricted by compilation time, while test environment
can run for a long time taking into account both intermediate outputs
of the different compilation stages and profiling of execution on real
targets.

The question does not relate to traditional profiler feedback
techniques which are usually restricted for the positioning of code
blocks/functions to minimize change of flow penalty but rather to the
ISA utilization (whether the correct instruction is utilized in the
correct places).

Thanks, Roy.


Re: compiler operations research

2010-04-07 Thread Dave Korn
On 07/04/2010 12:29, roy rosen wrote:
> Hi,
> 
> Are there any known methodologies/tools/flows that enable operations
> research on the compiler generated assembly?

  Something like MILEPOST+ICI?  An automated machine learning version of gcc:

http://ctuning.org/wiki/index.php/CTools:MilepostGCC
http://unidapt.org/index.php/Developments:ICI

  Might also be some interesting links at

http://www.hipeac.net/tools

cheers,
  DaveK


Re: compiler operations research

2010-04-07 Thread roy rosen
Thanks Dave,

I'll have a look at these.

Roy.

2010/4/7, Dave Korn :
> On 07/04/2010 12:29, roy rosen wrote:
> > Hi,
> >
> > Are there any known methodologies/tools/flows that enable operations
> > research on the compiler generated assembly?
>
>  Something like MILEPOST+ICI?  An automated machine learning version of gcc:
>
> http://ctuning.org/wiki/index.php/CTools:MilepostGCC
> http://unidapt.org/index.php/Developments:ICI
>
>  Might also be some interesting links at
>
> http://www.hipeac.net/tools
>
>cheers,
>  DaveK
>


RFC: merging GUPC into the GCC trunk?

2010-04-07 Thread Gary Funck
Now that GCC 4.5 has been branched from the main line,
it seems that this is an appropriate time to consider
GUPC for inclusion into the GCC trunk.

GUPC was recently checked in as a GCC branch:
http://gcc.gnu.org/projects/gupc.html

What is the recommended process for having GUPC reviewed
(and hopefully, subsequently approved) for being merged
into the GCC mainline?

Thanks,
- Gary


Re: RFC: merging GUPC into the GCC trunk?

2010-04-07 Thread Diego Novillo
On Wed, Apr 7, 2010 at 11:05, Gary Funck  wrote:

> What is the recommended process for having GUPC reviewed
> (and hopefully, subsequently approved) for being merged
> into the GCC mainline?

I would suggest splitting patches across reviewer domains.  See
previous merges from big branches for examples.  This makes it easier
for maintainers and reviewers to review the relevant parts.
Additionally, make sure that the branch bootstraps and tests on all
primary/secondary platforms with all languages enabled.

I can help reviewing patches in my areas.  Please CC me, so it lands
on my Inbox.

Presumably, all the other requirements are met?  (copyright paperwork, etc).


Diego.


GCC primary/secondary platforms?

2010-04-07 Thread Gary Funck
On 04/07/10 11:11:05, Diego Novillo wrote:
> I would suggest splitting patches across reviewer domains.  See
> previous merges from big branches for examples.  This makes it easier
> for maintainers and reviewers to review the relevant parts.
> Additionally, make sure that the branch bootstraps and tests on all
> primary/secondary platforms with all languages enabled.

Diego, thanks for your prompt reply and suggestions.  Regarding
the primary/secondary platforms.  Are those listed here?
  http://gcc.gnu.org/gcc-4.5/criteria.html
We have access to only a few of the listed platforms,
(and in the case of IA64 the underlying OS is SuSE not
"unknown-linux-gnu").

How are the following targets handled?
  arm-eabi, mipsisa64-elf
Are these cross-compilers targetting some sort of instruction
set simulator?  Is there "how to" for setting up those
platforms and running tests?

Given the nature of UPC we're not sure that some of those
targets are applicable or will be initially supported;
though I can certainly see the value of making sure that we
don't break anything in the main line that would impact
those platforms.

Typically, how is this situation handled - where tests need
to be run on hardware/software platforms that we don't have
access to, prior to merging into the GCC trunk?

thanks,
- Gary


Re: why mult generated for unsigned int multiply on mips?

2010-04-07 Thread Jan-Benedict Glaw
On Wed, 2010-04-07 15:05:09 +0800, Amker.Cheng  wrote:
> found the cause, sorry to disturb, please ignore this message.

It would, however, be nice if you actually posted an answer to your
(now solved) question. That way, any casual reader may learn something
new.

MfG, JBG

-- 
  Jan-Benedict Glaw  jbg...@lug-owl.de  +49-172-7608481
  Signature of:  Zensur im Internet? Nein danke!
  the second  :


signature.asc
Description: Digital signature


[alpha] Wrong code produced at -Os, -O2, and -O3

2010-04-07 Thread Matt Turner
Hi Uros and Richard,
I was rewriting the Alpha sched_find_first_bit implementation for the
Linux Kernel, and in the process I think I've come across a gcc bug.

I rewrote the function using cmov instructions, and wrote a small
program to test its correctness and performance. I wrote the function
initially as an external .S file, and once I was reasonably sure it
was correct, converted it to C function with inline assembly.
Compiling both produce the exact same output, as shown.

:
ldq t0,0(a0)
clr t2
ldq t1,8(a0)
cmoveq  t0,0x40,t2
cmoveq  t0,t1,t0
cttzt0,t3
addqt3,t2,v0
ret

In my test program, I found that when I executed the rewritten
implementation _before_ the reference implementation that it produced
bogus results. This only happens when using the C/inline asm function.
When compiled with the external .S file, the results are correct.

Attached is a tar.gz with my test code. Compile the test program with
`gcc -O -mcpu=... find.c rewritten.S test.c -o test` with optional
-D__REWRITTEN_INLINE and -D__REWRITTEN_FIRST. At -Os, -O2, or -O3 and
-D__REWRITTEN_INLINE and -D__REWRITTEN_FIRST the program will produce
incorrect results and assert(). At -O0 or -O1 or without one or both
of the -D flags, it will produce correct results. I've tested with
gcc-4.3.4 and gcc-4.4.2.

Thanks. Let me know what I can do to help further.

Matt Turner


sched_find_first_bit.tar.gz
Description: GNU Zip compressed data


Re: GCC primary/secondary platforms?

2010-04-07 Thread Tim Prince

On 4/7/2010 9:17 AM, Gary Funck wrote:

On 04/07/10 11:11:05, Diego Novillo wrote:
   

Additionally, make sure that the branch bootstraps and tests on all
primary/secondary platforms with all languages enabled.
 

Diego, thanks for your prompt reply and suggestions.  Regarding
the primary/secondary platforms.  Are those listed here?
   http://gcc.gnu.org/gcc-4.5/criteria.html

   
Will there be a notification if and when C++ run-time will be ready to 
test on secondary platforms, or will platforms like cygwin be struck 
from the secondary list?  I'm 26 hours into testsuite for 4.5 RC for 
cygwin gcc/gfortran, didn't know of any other supported languages worth 
testing.
My ia64 box died a few months ago, but suse-linux surely was at least as 
popular as unknown-linux in recent years.


--
Tim Prince



Re: GCC primary/secondary platforms?

2010-04-07 Thread Laurent GUERBY
On Wed, 2010-04-07 at 09:17 -0700, Gary Funck wrote:
> On 04/07/10 11:11:05, Diego Novillo wrote:
> > I would suggest splitting patches across reviewer domains.  See
> > previous merges from big branches for examples.  This makes it easier
> > for maintainers and reviewers to review the relevant parts.
> > Additionally, make sure that the branch bootstraps and tests on all
> > primary/secondary platforms with all languages enabled.
> 
> Diego, thanks for your prompt reply and suggestions.  Regarding
> the primary/secondary platforms.  Are those listed here?
>   http://gcc.gnu.org/gcc-4.5/criteria.html
> We have access to only a few of the listed platforms,
> (and in the case of IA64 the underlying OS is SuSE not
> "unknown-linux-gnu").
> 
> How are the following targets handled?
>   arm-eabi, mipsisa64-elf

Hi,

I don't know if these are formally equivalent (any taker?) but on the
compile farm we have arm-linux and mips64-linux machines. I don't think
unknown/suse/whatever version of Linux makes any difference for the
criteria.

Feel free to apply for an account on the compile farm, instructions are
given here:

http://gcc.gnu.org/wiki/CompileFarm

Sincerely,

Laurent





Subversion Status

2010-04-07 Thread Andrew John Hughes
Has anyone else seen this error from trunk?

$ svn status
svn: Error at entry 15 in entries file for 'gcc/testsuite/g++.dg/warn':
svn: Bogus date

Even if I delete the gcc/testsuite/g++.dg/warn tree, an update brings
the error back.

svn is 1.6.9.
-- 
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8


Re: lower subreg optimization

2010-04-07 Thread roy rosen
2010/4/6, Jim Wilson :
> On 04/06/2010 02:24 AM, roy rosen wrote:
> > (insn 33 32 34 7 a.c:25 (set (subreg:V2HI (reg:V4HI 114) 0)
> > (plus:V2HI (subreg:V2HI (reg:V4HI 112) 0)
> > (subreg:V2HI (reg:V4HI 113) 0))) 118 {addv2hi3} (nil))
> >
>
> Only subregs are decomposed.  So use vec_select instead of subreg.  I see
> you already have a vec_concat to combine the two v2hi into one v4hi, so
> there is no need for the subreg in the dest.  You should try eliminating
> that first and see if that helps.  If that isn't enough, then replace the
> subregs in the source with vec_select operations.
>
> Jim
>

Thanks Jim,

I have implemented your suggestion and now I am using vec_select and
the subreg optimization does not decomopose the instruction.
The problem now is that I get stuck with redundent instructions (that
I translate to move insns).
For example:

(insn 37 32 38 7 a.c:25 (set (reg:V2HI 116)
(vec_concat:V2HI (vec_select:HI (reg:V4HI 112)
(parallel [
(const_int 0 [0x0])
]))
(vec_select:HI (reg:V4HI 112)
(parallel [
(const_int 1 [0x1])
] 121 {v4hi_extract_low_v2hi}
(expr_list:REG_DEAD (reg:V4HI 112)
(nil)))

This instruction eventually has to be optimized out somehow. It is
dealing with extracting V2HI from V4HI. V4HI is stored in a register
pair (like r0:r1) and V2HI would simply mean to take one of these
registers - this does not need an instruction.

I saw in arm/neon.md that they have a similar problem:

; FIXME: We wouldn't need the following insns if we could write subregs of
; vector registers. Make an attempt at removing unnecessary moves, though
; we're really at the mercy of the register allocator.

(define_insn "move_lo_quad_v4si"
  [(set (match_operand:V4SI 0 "s_register_operand" "+w")
(vec_concat:V4SI
  (match_operand:V2SI 1 "s_register_operand" "w")
  (vec_select:V2SI (match_dup 0)
   (parallel [(const_int 2) (const_int 3)]]
  "TARGET_NEON"
{
  int dest = REGNO (operands[0]);
  int src = REGNO (operands[1]);

  if (dest != src)
return "vmov\t%e0, %P1";
  else
return "";
}
  [(set_attr "neon_type" "neon_bp_simple")]
)

Their solution is also not complete.
What is the proper way to handle such a case and how do I let gcc know
that this is a simple move instruction so that gcc would be able to
optimize it out?

Thanks, Roy.


Re: [alpha] Wrong code produced at -Os, -O2, and -O3

2010-04-07 Thread Uros Bizjak
On Wed, Apr 7, 2010 at 8:38 PM, Matt Turner  wrote:

> I was rewriting the Alpha sched_find_first_bit implementation for the
> Linux Kernel, and in the process I think I've come across a gcc bug.

[...]

> Thanks. Let me know what I can do to help further.

Please fill a Bugzilla bugreport with your problem. Otherwise, it will
be lost in the mailing lists.

Uros.