Re: Massive SPEC failures on trunk

2007-03-06 Thread Vladimir Sysoev

FYI
Bug has been already reported
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31037

-Vladimir


Re: new auto-inc-dec pass

2007-03-06 Thread Joern Rennecke
In http://gcc.gnu.org/ml/gcc/2007-03/msg00128.html, you wrote:
> One case is about multiple increments, the tree optimizer merges them and
> increments the register only once, so if one only looks at the size of the
> pointer value one misses them, e.g. something like this:
>
>   (set (mem (reg)) (x))
>   (set (mem (plus (reg) (const_int 4))) (x))
>   (set (reg) (plus (reg) (const_int 8))

The patches attached to PR20211 handle this case.



Re: Is "FTZ/DAZ for SSE via fast math" available for x86 arch other than Linux?

2007-03-06 Thread Zuxy Meng
Hello,

"Zuxy Meng" <[EMAIL PROTECTED]> дÈëÏûÏ¢ÐÂÎÅ:[EMAIL PROTECTED]
>I saw the patch in http://gcc.gnu.org/ml/gcc/2005-08/msg00281.html but is 
>it
> available for other hosts, like mingw32?

I've uploaded a proposed patch for this bug 
(http://gcc.gnu.org/bugzilla/attachment.cgi?id=13151&action=diff). Putting 
crtfastmath.o in the endfile section of specs causes undefined reference to 
memset, so I moved it to the startfile section. Anyone to review this? Quite 
trivial anyway.

-- 
Zuxy 





Re: subreg pass

2007-03-06 Thread Roman Zippel
Hi,

On Mon, 5 Mar 2007, Roman Zippel wrote:

> > Yes, it is in general better now to split double-word length
> > operations before reload.  It's not necessarily better to split as
> > early as possible, as that will essentially disable the RTL level loop
> > optimizations. 
> 
> I was worried about that too, since some patterns would be more 
> complicated, which may make some optimizations more difficult, e.g. where 
> I noticed it first was mulsidi3, which currently looks like this:

Ok, I played a little more with umulsidi3 (see attached patch, only the 
umulsidi3 pattern are relevant for this) and I think found a bug somwhere, 
although I'm not sure whether the subreg pass causes it or only trigggers 
it (it goes away with -fno-split-wide-types).

I removed the '%' from the constraint to test proper reloads (which may 
not be here, but probably in other cases) and used the following testcase:

unsigned long long f(void)
{
register unsigned int a asm ("%d0");
register unsigned int b asm ("%d1");
asm ("# %0  %1" : "=d" (a), "=d" (b));
return ((unsigned long long)b * (unsigned long long)a);
}

This is the situation prior to subreg2:

(insn 32 10 30 2 (parallel [
(set (strict_low_part (subreg:SI (reg:DI 33) 4))
(mult:SI (reg/v:SI 0 %d0 [ a ])
(reg/v:SI 1 %d1 [ b ])))
(set (strict_low_part (subreg:SI (reg:DI 33) 0))
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (reg/v:SI 0 
%d0 [ a ]))
(zero_extend:DI (reg/v:SI 1 %d1 [ b ])))
(const_int 32 [0x20]
]) -1 (nil)
(expr_list:REG_DEAD (reg/v:SI 0 %d0 [ a ])
(expr_list:REG_DEAD (reg/v:SI 1 %d1 [ b ])
(nil

(insn 30 32 31 2 (set (reg:SI 0 %d0 [  ])
(subreg:SI (reg:DI 33) 0)) 31 {*m68k.md:673} (insn_list:REG_DEP_TRUE 11 
(nil))
(nil))

(insn 31 30 23 2 (set (reg:SI 1 %d1 [orig:0 +4 ] [0])
(subreg:SI (reg:DI 33) 4)) 31 {*m68k.md:673} (nil)
(expr_list:REG_DEAD (reg:DI 33)
(nil)))

(insn 23 31 0 2 (use (reg/i:DI 0 %d0 [  ])) -1 (insn_list:REG_DEP_TRUE 
30 (nil))
(nil))


subreg2 produces this (which looks correct):

(insn 32 10 30 2 (parallel [
(set (strict_low_part (reg:SI 38 [+4 ]))
(mult:SI (reg/v:SI 0 %d0 [ a ])
(reg/v:SI 1 %d1 [ b ])))
(set (strict_low_part (reg:SI 37))
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (reg/v:SI 0 
%d0 [ a ]))
(zero_extend:DI (reg/v:SI 1 %d1 [ b ])))
(const_int 32 [0x20]
]) 181 {*umulsidi3_subreg} (nil)
(expr_list:REG_DEAD (reg/v:SI 0 %d0 [ a ])
(expr_list:REG_DEAD (reg/v:SI 1 %d1 [ b ])
(nil

(insn 30 32 31 2 (set (reg:SI 0 %d0 [  ])
(reg:SI 37)) 31 {*m68k.md:673} (insn_list:REG_DEP_TRUE 11 (nil))
(expr_list:REG_DEAD (reg:SI 37)
(nil)))

(insn 31 30 23 2 (set (reg:SI 1 %d1 [orig:0 +4 ] [0])
(reg:SI 38 [+4 ])) 31 {*m68k.md:673} (nil)
(expr_list:REG_DEAD (reg:SI 38 [+4 ])
(nil)))

(insn 23 31 0 2 (use (reg/i:DI 0 %d0 [  ])) -1 (insn_list:REG_DEP_TRUE 
30 (nil))
(nil))


Reload has now to match (reg %d0) and (reg 38) above in insn 32 and after 
pseudo register replacement it looks like this:

(insn 32 10 30 2 (parallel [
(set (strict_low_part (reg:SI 1 %d1 [orig:38+4 ] [38]))
(mult:SI (reg/v:SI 0 %d0 [ a ])
(reg/v:SI 1 %d1 [ b ])))
(set (strict_low_part (reg:SI 0 %d0 [37]))
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (reg/v:SI 0 
%d0 [ a ]))
(zero_extend:DI (reg/v:SI 1 %d1 [ b ])))
(const_int 32 [0x20]
]) 181 {*umulsidi3_subreg} (nil)
(expr_list:REG_DEAD (reg/v:SI 0 %d0 [ a ])
(expr_list:REG_DEAD (reg/v:SI 1 %d1 [ b ])
(nil

Notice that the REG_DEAD notes are not correct anymore, reload produces 
now the following reload:

Reloads for insn # 32
Reload 0: reload_in (SI) = (reg/v:SI 0 %d0 [ a ])
reload_out (SI) = (reg:SI 1 %d1 [orig:38+4 ] [38])
DATA_REGS, RELOAD_OTHER (opnum = 0)
reload_in_reg: (reg/v:SI 0 %d0 [ a ])
reload_out_reg: (reg:SI 1 %d1 [orig:38+4 ] [38])
reload_reg_rtx: (reg/v:SI 0 %d0 [ a ])

The problem here is it can't use %d0 as reload register (but it does it 
anyway, because it thinks it's dead), as it's used for (reg 37) and reload 
produces this:

(insn 32 10 34 2 (parallel [
(set (strict_low_part (reg/v:SI 0 %d0 [ a ]))
(mult:SI (reg/v:SI 0 %d0 [ a ])
(reg/v:SI 1 %d1 [ b ])))
(set (strict_low_part (reg:SI 0 %d0 [37]))
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (reg/v:SI 0 
%d0 [ a ]))
(zero_extend:DI (reg/v:SI 1 %d1 [ b ])))
  

Re: new auto-inc-dec pass

2007-03-06 Thread Roman Zippel
Hi,

On Tue, 6 Mar 2007, Joern Rennecke wrote:

> In http://gcc.gnu.org/ml/gcc/2007-03/msg00128.html, you wrote:
> > One case is about multiple increments, the tree optimizer merges them and
> > increments the register only once, so if one only looks at the size of the
> > pointer value one misses them, e.g. something like this:
> >
> > (set (mem (reg)) (x))
> > (set (mem (plus (reg) (const_int 4))) (x))
> > (set (reg) (plus (reg) (const_int 8))
> 
> The patches attached to PR20211 handle this case.

Hmm, it seems to do a bit more. I have to agree with the last comment 
insofar, that regmove.c is probably not the best place for this. Most of 
the auto-inc-dec business should be done before combine.

bye, Roman


Re: subreg pass

2007-03-06 Thread Roman Zippel


On Tue, 6 Mar 2007, Roman Zippel wrote:

> Reload has now to match (reg %d0) and (reg 38) above in insn 32 and after 
> pseudo register replacement it looks like this:
> 
> (insn 32 10 30 2 (parallel [
> (set (strict_low_part (reg:SI 1 %d1 [orig:38+4 ] [38]))
> (mult:SI (reg/v:SI 0 %d0 [ a ])
> (reg/v:SI 1 %d1 [ b ])))
> (set (strict_low_part (reg:SI 0 %d0 [37]))
> (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (reg/v:SI 
> 0 %d0 [ a ]))
> (zero_extend:DI (reg/v:SI 1 %d1 [ b ])))
> (const_int 32 [0x20]
> ]) 181 {*umulsidi3_subreg} (nil)
> (expr_list:REG_DEAD (reg/v:SI 0 %d0 [ a ])
> (expr_list:REG_DEAD (reg/v:SI 1 %d1 [ b ])
> (nil
> 
> Notice that the REG_DEAD notes are not correct anymore,
> 
[..]
> 
> %d0 is used in both set destinations and postreload dies because of it.
> The question is now, who is responsible for telling reload that %d0/%d1 
> are not really dead anymore after register allocation?

Below is possible approach, I hijacked mark_not_eliminable to scan all 
register stores and remove the obsolete REG_DEAD notes. With this reload 
produces the correct reload.

bye, Roman


Index: gcc/reload1.c
===
--- gcc/reload1.c   (revision 122519)
+++ gcc/reload1.c   (working copy)
@@ -842,7 +842,7 @@
  cannot be done.  */
   for (insn = first; insn && num_eliminable; insn = NEXT_INSN (insn))
 if (INSN_P (insn))
-  note_stores (PATTERN (insn), mark_not_eliminable, NULL);
+  note_stores (PATTERN (insn), mark_not_eliminable, insn);
 
   maybe_fix_stack_asms ();
 
@@ -3398,8 +3398,9 @@
the insns of the function.  */
 
 static void
-mark_not_eliminable (rtx dest, rtx x, void *data ATTRIBUTE_UNUSED)
+mark_not_eliminable (rtx dest, rtx x, void *data)
 {
+  rtx note, insn = data;
   unsigned int i;
 
   /* A SUBREG of a hard register here is just changing its mode.  We should
@@ -3408,6 +3409,9 @@
   if (GET_CODE (dest) == SUBREG)
 dest = SUBREG_REG (dest);
 
+  if (REG_P (dest) && (note = find_regno_note (insn, REG_DEAD, REGNO (dest
+remove_note (insn, note);
+
   if (dest == hard_frame_pointer_rtx)
 return;
 


Re: subreg pass

2007-03-06 Thread Andi Kleen
Roman Zippel <[EMAIL PROTECTED]> writes:


> The new subreg lowering pass seems to generate a bit worse code on m68k 
> than before, let's take simple example:

FWIW 

I see the opposite on i386: I have a function that strangely ran
slower with -fomit-frame-pointer than without on 4.1. With a 4.3
snapshot -fomit-frame-pointer is faster as expected.

-Andi


Mainline bug in RTL fwprop.

2007-03-06 Thread Andrew MacLeod

I was working on a a patch for PR 21596, and it seems to have triggered
a bug in fwprop on x86 in mainline.

The testcase is simple:

register int *reg __asm__("%edi");
int test () { return *--reg <= 0; }


I've attached the patch for TER which changes the tree produced in
mainline from:

  reg.0 = reg;
  reg.27 = reg.0 - 4B;
  reg = reg.27;
  return *reg.27 <= 0;

to

  reg.27 = reg - 4B;
  reg = reg.27;
  return *reg.27 <= 0;

which eliminates one extraneous copy.


Going into fwprop1, the rtl looks like:

(insn 7 5 8 2 (parallel [
(set (reg:SI 58 [ reg.27 ])
(plus:SI (reg/v:SI 5 di [ reg ])
(const_int -4 [0xfffc])))
(clobber (reg:CC 17 flags))
]) 148 {*addsi_1} (nil)
(nil))

(insn 8 7 9 2 (set (reg/v:SI 5 di [ reg ])
(reg:SI 58 [ reg.27 ])) 34 {*movsi_1} (nil)
(nil))

(insn 9 8 10 2 (set (reg:CCNO 17 flags)
(compare:CCNO (mem:SI (reg:SI 58 [ reg.27 ]) [3 S4 A32])
(const_int 0 [0x0]))) 0 {*cmpsi_ccno_1} (nil)
(nil))


and fwprop decides to propagate:

   (compare:CCNO (mem:SI (reg:SI 58 [ reg.27 ]) [3 S4 A32])
  (const_int 0 [0x0]))
   with (compare:CCNO (mem:SI (plus:SI (reg/v:SI 5 di [ reg ])
  (const_int -4 [0xfffc])) [3 S4 A32])
  (const_int 0 [0x0]))

resulting in:

(insn 7 5 8 2 (parallel [
(set (reg:SI 58 [ reg.27 ])
(plus:SI (reg/v:SI 5 di [ reg ])
(const_int -4 [0xfffc])))
(clobber (reg:CC 17 flags))
]) 148 {*addsi_1} (nil)
(nil))

(insn 8 7 9 2 (set (reg/v:SI 5 di [ reg ])
(reg:SI 58 [ reg.27 ])) 34 {*movsi_1} (nil)
(nil))

(insn 9 8 10 2 (set (reg:CCNO 17 flags)
(compare:CCNO (mem:SI (plus:SI (reg/v:SI 5 di [ reg ])
(const_int -4 [0xfffc])) [3 S4 A32])
(const_int 0 [0x0]))) 0 {*cmpsi_ccno_1} (nil)
(nil))


note that it has propagated 'di - 4' past insn 8 which sets di to di
-4. 

The compare in insn 9 is now comparing an additional -4 offset to di,
which is wrong.

It would be really sweet if we propagated the 'di - 4' into insn 8, then
recognized that di is now the value of SI 58, and propagated di into the
compare.  insn 7 would be dead and we'd get the code the PR is looking
for :-)
 
Andrew

2007-03-05  Andrew MacLeod  <[EMAIL PROTECTED]>

	* tree-ssa-ter.c  (find_replaceable_in_bb): Allow expression replacement
	of same basename variables for stmts with a single ssa_name use.

Index: tree-ssa-ter.c
===
*** tree-ssa-ter.c	(revision 122131)
--- tree-ssa-ter.c	(working copy)
*** find_replaceable_in_bb (temp_expr_table_
*** 555,565 
--- 555,567 
var_map map = tab->map;
ssa_op_iter iter;
bool stmt_replaceable;
+   bool single_use_stmt;
  
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
  {
stmt = bsi_stmt (bsi);
ann = stmt_ann (stmt);
+   single_use_stmt = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_USE) != NULL_TREE;
  
stmt_replaceable = is_replaceable_p (stmt);
/* Determine if this stmt finishes an existing expression.  */
*** find_replaceable_in_bb (temp_expr_table_
*** 577,583 
  	  /* See if the root variables are the same.  If they are, we
  		 do not want to do the replacement to avoid problems with
  		 code size, see PR tree-optimization/17549.  */
! 	  if (!bitmap_empty_p (vars))
  		FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter2, SSA_OP_DEF)
  		  {
  		if (bitmap_bit_p (vars, DECL_UID (SSA_NAME_VAR (def
--- 579,590 
  	  /* See if the root variables are the same.  If they are, we
  		 do not want to do the replacement to avoid problems with
  		 code size, see PR tree-optimization/17549.  */
! 
! 	  /* If this stmt is not accumulating more than one variable (ie, 
! 		 it has a single use), then an exponential growth rate is not
! 		 possible.  This makes it safe to allow TER to proceed.  See 
! 		 PR tree-optimization/21596.  */
! 	  if (!bitmap_empty_p (vars) && !single_use_stmt)
  		FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter2, SSA_OP_DEF)
  		  {
  		if (bitmap_bit_p (vars, DECL_UID (SSA_NAME_VAR (def


Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

Hi all,

I've just added a new gcc subdir : head/gcc/myproj with structures and
utilities for my ipa pass which lives in head/gcc. Now I have to tell
gcc to compile the files inside myproj. Is there a standard way to do
this? I've looked into head/gcc/Makefile.in but it seem quite
cluttered and I don't really know where to begin since the gcc build
is quite complex.

Any suggestions? (Probably I can have my Makefile.in in myproj dir)
but then where should I tell gcc to compile them)

Regards,

--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


Re: Massive SPEC failures on trunk

2007-03-06 Thread Ian Lance Taylor
"Vladimir Sysoev" <[EMAIL PROTECTED]> writes:

> Bug has been already reported
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31037

I don't think this one could have anything to do with my VRP changes,
but I'll try to take a look later today.

Ian


Re: Massive SPEC failures on trunk

2007-03-06 Thread Diego Novillo
Ian Lance Taylor wrote on 03/06/07 09:49:
> "Vladimir Sysoev" <[EMAIL PROTECTED]> writes:
> 
>> Bug has been already reported
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31037
> 
> I don't think this one could have anything to do with my VRP changes,
> but I'll try to take a look later today.
> 
Actually, this looks more related to my aliasing patch.  I'll be dealing
with this one soon.



BUG: wrong function call

2007-03-06 Thread W. Ivanov
Hi, I use multiple inheritance in my project. In the child class i have 
functions GetParam() and SetParam().
In the cpp-file I call GetParam() function, but I fell to SetParam() 
function.

Can You help me?


Re: BUG: wrong function call

2007-03-06 Thread Paulo J. Matos

On 3/6/07, W. Ivanov <[EMAIL PROTECTED]> wrote:

Hi, I use multiple inheritance in my project. In the child class i have
functions GetParam() and SetParam().
In the cpp-file I call GetParam() function, but I fell to SetParam()
function.
Can You help me?



Don't take me wrong but it is most likely a bug in your code. Still,
you might want to inform the developers (not me) through this mailing
list which code you're compiling and which version of gcc you're
using.

Cheers,

--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


Re: Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

On 3/6/07, Paulo J. Matos <[EMAIL PROTECTED]> wrote:

Hi all,

I've just added a new gcc subdir : head/gcc/myproj with structures and
utilities for my ipa pass which lives in head/gcc. Now I have to tell
gcc to compile the files inside myproj. Is there a standard way to do
this? I've looked into head/gcc/Makefile.in but it seem quite
cluttered and I don't really know where to begin since the gcc build
is quite complex.

Any suggestions? (Probably I can have my Makefile.in in myproj dir)
but then where should I tell gcc to compile them)



Well, added a couple of lines to gcc/Makefile.in referring to files in
myproj. Still, although it is partly working one thing is annoying me.
It's using these flags by default:
-W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition
-Wmissing-format-attribute

Which means using C90, which means no mixed declarations and code, no
C++ comments, etc. Is there any way to compile at least, my files with
c99 constructs?
Or all gcc code should be built like this??

Regards,

Paulo Matos


Regards,

--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK




--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


Doxygen documentation nearly unreadable

2007-03-06 Thread Jens Seidel
Hi,

I try from time to time to find some information related GNU's C++ STL
implemention e.g. in
http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/classstd_1_1basic__string.html

But this page (and others) are nearly unreadable because there is no way
to recognise member function declarations such as

template 
basic_string< _CharT, _Traits, _Alloc > & std::basic_string< _CharT, _Traits, 
_Alloc >::assign

because of missing contrast.
The default doxygen styles use a color box around such declarations but
this is not true for your documentation!

This makes this pages really unreadable. Please fix it.

(I first thought it's a browser problem with CSS or something similar
but it looks equally ugly in konqueror and firefox).

Jens


Re: BUG: wrong function call

2007-03-06 Thread W. Ivanov

Paulo J. Matos wrote:

On 3/6/07, W. Ivanov <[EMAIL PROTECTED]> wrote:

Hi, I use multiple inheritance in my project. In the child class i have
functions GetParam() and SetParam().
In the cpp-file I call GetParam() function, but I fell to SetParam()
function.
Can You help me?



Don't take me wrong but it is most likely a bug in your code. Still,
you might want to inform the developers (not me) through this mailing
list which code you're compiling and which version of gcc you're
using.

Cheers,


Please, give me a mail address of developers.


RE: Adding a new gcc dir

2007-03-06 Thread Dave Korn
On 06 March 2007 16:07, Paulo J. Matos wrote:


> Well, added a couple of lines to gcc/Makefile.in referring to files in
> myproj. Still, although it is partly working one thing is annoying me.
> It's using these flags by default:
> -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
> -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition
> -Wmissing-format-attribute
> 
> Which means using C90, which means no mixed declarations and code, no
> C++ comments, etc. Is there any way to compile at least, my files with
> c99 constructs?

  Take a look at the section of gcc/Makefile.in beginning "# Various ways of
specifying flags for compilations:" and go from there.

> Or all gcc code should be built like this??

  Well, for your own personal purposes, you can do whatever you like, but it
is part of the coding standard that all gcc code should be bog-standard C90,
so that it is possible for end-users to build gcc on any machine, even a very
old one with a very old compiler.

cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Re: Adding a new gcc dir

2007-03-06 Thread Paul Brook
> Which means using C90, which means no mixed declarations and code, no
> C++ comments, etc. Is there any way to compile at least, my files with
> c99 constructs?
> Or all gcc code should be built like this??

This is a feature. gcc can be bootstrapped using an arbitrary c90 compiler. 
The warning options you mentioned help to enforce this.

Paul


Re: BUG: wrong function call

2007-03-06 Thread Steven Bosscher

On 3/6/07, W. Ivanov <[EMAIL PROTECTED]> wrote:

Paulo J. Matos wrote:
> On 3/6/07, W. Ivanov <[EMAIL PROTECTED]> wrote:
>> Hi, I use multiple inheritance in my project. In the child class i have
>> functions GetParam() and SetParam().
>> In the cpp-file I call GetParam() function, but I fell to SetParam()
>> function.
>> Can You help me?
>>
>
> Don't take me wrong but it is most likely a bug in your code. Still,
> you might want to inform the developers (not me) through this mailing
> list which code you're compiling and which version of gcc you're
> using.
>
> Cheers,
>
Please, give me a mail address of developers.


You're already reaching pretty much all of them through this mailing list.

Gr.
Steven


Re: BUG: wrong function call

2007-03-06 Thread Manuel López-Ibáñez

On 06/03/07, W. Ivanov <[EMAIL PROTECTED]> wrote:

Paulo J. Matos wrote:
> On 3/6/07, W. Ivanov <[EMAIL PROTECTED]> wrote:
>> Hi, I use multiple inheritance in my project. In the child class i have
>> functions GetParam() and SetParam().
>> In the cpp-file I call GetParam() function, but I fell to SetParam()
>> function.
>> Can You help me?
>>
>
> Don't take me wrong but it is most likely a bug in your code. Still,
> you might want to inform the developers (not me) through this mailing
> list which code you're compiling and which version of gcc you're
> using.
>
> Cheers,
>
Please, give me a mail address of developers.



What Paulo surely means is that when reporting a bug you should
provide a testcase, the current output, the desired output, the
command you used to obtain the output and the result of running gcc
--version. That is the minimum for reporting a bug.

In this case, since you are not sure whether this is a bug, you should
first ask in [EMAIL PROTECTED] since that list is for user issues
and this list is for developing GCC.

Cheers,

Manuel.


Re: Mainline bug in RTL fwprop.

2007-03-06 Thread Paolo Bonzini

> It would be really sweet if we propagated the 'di - 4' into insn 8, then
> recognized that di is now the value of SI 58, and propagated di into the
> compare.  insn 7 would be dead and we'd get the code the PR is looking
> for :-)

Unfortunately there's no hope of that because fwprop doesn't do value
numbering, but I'll try to look at it because it's a wrong code bug.
(It would be great if you had a testcase for mainline...).

Paolo


build broken

2007-03-06 Thread Mike Stump

It appears that one of these:


r122580 | doko | 2007-03-05 15:23:18 -0800 (Mon, 05 Mar 2007) | 6 lines

2007-03-02  Mario Torre  <[EMAIL PROTECTED]>

   PR classpath/31017:
   committed for Petteri R<83>ty  
<[EMAIL PROTECTED]>

   * configure.ac: fix broken build for gcj browser plugin


r122573 | doko | 2007-03-05 12:24:50 -0800 (Mon, 05 Mar 2007) | 5 lines

2007-03-05  Matthias Klose  <[EMAIL PROTECTED]>

* doc/Makefile.am(man_MANS): Add $(TOOLS_MANFILES).
* doc/Makefile.in: Regenerate.



Did this:

2007-03-04T22:54:20Z 2007-03-05T05:50:09Z regress-3 native 122532
2007-03-05T05:53:26Z 2007-03-05T12:49:35Z regress-3 native 122539
2007-03-05T12:52:59Z 2007-03-05T19:53:13Z regress-3 native 122546
2007-03-05T19:56:35Z 2007-03-06T02:53:47Z regress-3 native 122566
2007-03-06T02:57:13Z 2007-03-06T05:18:43Z build native 122594
2007-03-06T07:48:12Z 2007-03-06T10:11:04Z build native 122597
2007-03-06T10:14:03Z 2007-03-06T12:32:47Z build native 122618
2007-03-06T14:18:12Z 2007-03-06T16:37:20Z build native 122619

to the darwin nightly tester.  From the log file:

perl /Users/regress/tbox/svn-gcc/libjava/classpath/../../contrib/ 
texi2pod.pl -D gkeytool < /Users/regress/tbox/svn-gcc/libjava/ 
classpath/doc/cp-tools.texinfo > gkeytool.pod
perl /Users/regress/tbox/svn-gcc/libjava/classpath/../../contrib/ 
texi2pod.pl -D gnative2ascii < /Users/regress/tbox/svn-gcc/libjava/ 
classpath/doc/cp-tools.texinfo > gnative2ascii.pod
perl /Users/regress/tbox/svn-gcc/libjava/classpath/../../contrib/ 
texi2pod.pl -D gorbd < /Users/regress/tbox/svn-gcc/libjava/classpath/ 
doc/cp-tools.texinfo > gorbd.pod
sed -i -e 's/^For more details.*/See I for more  
details./' \

-e 's/1\.<\([^>]*\)>/- \1/' \
gkeytool.pod
sed: lstat: No such file or directory
make[7]: *** [gkeytool.pod] Error 1
make[7]: *** Waiting for unfinished jobs
rm gnative2ascii.pod gorbd.pod gjar.pod gappletviewer.pod  
gkeytool.pod gjavah.pod gjarsigner.pod

make[6]: *** [all-recursive] Error 1
make[5]: *** [all-recursive] Error 1
make[4]: *** [all-recursive] Error 1
make[3]: *** [multi-do] Error 1
make[2]: *** [all-multi] Error 2
make[1]: *** [all-target-libjava] Error 2
make: *** [bootstrap] Error 2
+ '[' -s .bad_compare ']'
+ exit 1

I have a feeling sed -i isn't our friend.


Re: Improvements of the haifa scheduler

2007-03-06 Thread Daniel Berlin

On 3/5/07, Maxim Kuvyrkov <[EMAIL PROTECTED]> wrote:

Diego Novillo wrote:
> Maxim Kuvyrkov wrote on 03/05/07 02:14:
>
>>o Fix passes that invalidate tree-ssa alias export.
>
> Yes, this should be good and shouldn't need a lot of work.
>
>>o { Fast but unsafe Gupta's aliasing patch, Unsafe tree-ssa alias
>> export } in scheduler's data speculation.
>
> "unsafe" alias export?  I would definitely like to see the tree->rtl
> alias information transfer fixed once and for all.  Finishing RAS's
> tree->rtl work would probably make a good SoC project.

"Unsafe" doesn't mean not fixed.  My thought is that it would be nice to
have a switch in aliasing that will turn such operations as

join (pt_anything, points_to) -> pt_anything

into

join (pt_anything, points_to) -> points_to

This transformation will sacrifice correctness for sake of additional
information.


In 4.3, doesn't exist outside of the confines of tree-ssa-structalias.c
We transform it into a conservatively correct set of variables, rather
than giving up like we used to.

This alone should significantly improve your export results.


Re: Improvements of the haifa scheduler

2007-03-06 Thread Daniel Berlin

On 3/6/07, Daniel Berlin <[EMAIL PROTECTED]> wrote:

On 3/5/07, Maxim Kuvyrkov <[EMAIL PROTECTED]> wrote:
> Diego Novillo wrote:
> > Maxim Kuvyrkov wrote on 03/05/07 02:14:
> >
> >>o Fix passes that invalidate tree-ssa alias export.
> >
> > Yes, this should be good and shouldn't need a lot of work.
> >
> >>o { Fast but unsafe Gupta's aliasing patch, Unsafe tree-ssa alias
> >> export } in scheduler's data speculation.
> >
> > "unsafe" alias export?  I would definitely like to see the tree->rtl
> > alias information transfer fixed once and for all.  Finishing RAS's
> > tree->rtl work would probably make a good SoC project.
>
> "Unsafe" doesn't mean not fixed.  My thought is that it would be nice to
> have a switch in aliasing that will turn such operations as
>
> join (pt_anything, points_to) -> pt_anything
>
> into
>
> join (pt_anything, points_to) -> points_to
>
> This transformation will sacrifice correctness for sake of additional
> information.

In 4.3, doesn't exist outside of the confines of tree-ssa-structalias.c

^
pt_anything doesn't exist


We transform it into a conservatively correct set of variables, rather
than giving up like we used to.

This alone should significantly improve your export results.



Re: Mainline bug in RTL fwprop.

2007-03-06 Thread Andrew MacLeod
On Tue, 2007-03-06 at 18:18 +0100, Paolo Bonzini wrote:
> > It would be really sweet if we propagated the 'di - 4' into insn 8, then
> > recognized that di is now the value of SI 58, and propagated di into the
> > compare.  insn 7 would be dead and we'd get the code the PR is looking
> > for :-)
> 
> Unfortunately there's no hope of that because fwprop doesn't do value
> numbering, but I'll try to look at it because it's a wrong code bug.
> (It would be great if you had a testcase for mainline...).

Apply the small patch to mainline which I attached to the note (it only
causes tree-ssa-ter.c to be recompiled), and the provided 2 line
testcase causes this situation. 

I plan to check the patch in, but not until this wrong code bug is
resolved.
 

Andrew 



Re: reload.c as a bugzilla quip

2007-03-06 Thread Daniel Berlin

On 3/5/07, Joe Buck <[EMAIL PROTECTED]> wrote:

On Sun, Mar 04, 2007 at 09:45:13AM +0100, FX Coudert wrote:
> One of the bugzilla quips (the headlines appearing at random for each
> bug list) is actually the head of gcc/reload.c (full text below).

That is really obnoxious and should be removed.



Gone.
Along with the 10 huge quotes of somebody quoting themselves.


Re: reload.c as a bugzilla quip

2007-03-06 Thread Joe Buck
On Tue, Mar 06, 2007 at 12:50:47PM -0500, Daniel Berlin wrote:
> On 3/5/07, Joe Buck <[EMAIL PROTECTED]> wrote:
> >On Sun, Mar 04, 2007 at 09:45:13AM +0100, FX Coudert wrote:
> >> One of the bugzilla quips (the headlines appearing at random for each
> >> bug list) is actually the head of gcc/reload.c (full text below).
> >
> >That is really obnoxious and should be removed.
> >
> 
> Gone.
> Along with the 10 huge quotes of somebody quoting themselves.

Could you add a length limit?  The idea was to have a cute little quip at
the top; if it's more than about four lines of text it's a PITA.



Re: Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

On 3/6/07, Dave Korn <[EMAIL PROTECTED]> wrote:

On 06 March 2007 16:07, Paulo J. Matos wrote:


> Well, added a couple of lines to gcc/Makefile.in referring to files in
> myproj. Still, although it is partly working one thing is annoying me.
> It's using these flags by default:
> -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
> -pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition
> -Wmissing-format-attribute
>
> Which means using C90, which means no mixed declarations and code, no
> C++ comments, etc. Is there any way to compile at least, my files with
> c99 constructs?

  Take a look at the section of gcc/Makefile.in beginning "# Various ways of
specifying flags for compilations:" and go from there.

> Or all gcc code should be built like this??

  Well, for your own personal purposes, you can do whatever you like, but it
is part of the coding standard that all gcc code should be bog-standard C90,
so that it is possible for end-users to build gcc on any machine, even a very
old one with a very old compiler.



OK, thank you. I'll adhere to this standard them. :-)


cheers,
  DaveK
--
Can't think of a witty .sigline today





--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


Re: Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

On 3/6/07, Paulo J. Matos <[EMAIL PROTECTED]> wrote:

Hi all,

I've just added a new gcc subdir : head/gcc/myproj with structures and
utilities for my ipa pass which lives in head/gcc. Now I have to tell
gcc to compile the files inside myproj. Is there a standard way to do
this? I've looked into head/gcc/Makefile.in but it seem quite
cluttered and I don't really know where to begin since the gcc build
is quite complex.

Any suggestions? (Probably I can have my Makefile.in in myproj dir)
but then where should I tell gcc to compile them)



Thank you for the issue on C90, which I will adhere to.
Still, I cannot compile my files living on a new dir. So, exactly what
I did. Under gcc I created a subdir gsvt with files symbol-tables.c,
symbol-tables.h and symbol-tables-priv.h. My pass which requires these
files to build is with all other passes inside gcc and it is called
ipa-gsvt-pass.c. So, I have this in gcc/Makefile.in
In OBJS-common I added: ipa-gsvt-pass.o symbol-tables.o
Then I created a target for my pass and symbol-tables:
ipa-gsvt-pass.o : ipa-gsvt-pass.c ...
symbol-tables.o : gsvt/symbol-tables.c gsvt/symbol-tables.h
gsvt/symbol-tables-priv.h ../../../acocc/data_structures/trie/trie.o

Everything seems to compile perfectly but when linking I get:
i686-pc-linux-gnu-ar rc libbackend.a tree-chrec.o
tree-scalar-evolution.o tree-data-ref.o tree-cfg.o tree-dfa.o
tree-eh.o tree-ssa.o tree-optimize.o tree-gimple.o gimplify.o
tree-pretty-print.o tree-into-ssa.o ipa-gsvt-pass.o symbol-tables.o
tree-outof-ssa.o tree-ssa-ccp.o tree-vn.o tree-ssa-uncprop.o
tree-ssa-dce.o  tree-ssa-copy.o tree-nrv.o tree-ssa-copyrename.o
tree-ssa-pre.o tree-ssa-live.o tree-ssa-operands.o tree-ssa-alias.o
tree-ssa-phiopt.o tree-ssa-forwprop.o tree-nested.o tree-ssa-dse.o
tree-ssa-dom.o domwalk.o tree-tailcall.o gimple-low.o tree-iterator.o
tree-phinodes.o tree-ssanames.o tree-sra.o tree-complex.o
tree-vect-generic.o tree-ssa-loop.o tree-ssa-loop-niter.o
tree-ssa-loop-manip.o tree-ssa-threadupdate.o tree-vectorizer.o
tree-vect-analyze.o tree-vect-transform.o tree-ssa-loop-ivcanon.o
tree-ssa-propagate.o tree-ssa-address.o tree-ssa-math-opts.o
tree-ssa-loop-ivopts.o tree-if-conv.o tree-ssa-loop-unswitch.o alias.o
bb-reorder.o bitmap.o builtins.o caller-save.o calls.o cfg.o cfganal.o
cfgbuild.o cfgcleanup.o cfglayout.o cfgloop.o cfgloopanal.o
cfgloopmanip.o loop-init.o loop-unswitch.o loop-unroll.o cfgrtl.o
combine.o conflict.o convert.o coverage.o cse.o cselib.o dbxout.o
ddg.o tree-ssa-loop-ch.o loop-invariant.o tree-ssa-loop-im.o debug.o
df.o diagnostic.o dojump.o dominance.o loop-doloop.o dwarf2asm.o
dwarf2out.o emit-rtl.o except.o explow.o loop-iv.o expmed.o expr.o
final.o flow.o fold-const.o function.o gcse.o genrtl.o ggc-common.o
global.o graph.o gtype-desc.o haifa-sched.o hooks.o ifcvt.o
insn-attrtab.o insn-emit.o insn-modes.o insn-extract.o insn-opinit.o
insn-output.o insn-peep.o insn-recog.o integrate.o intl.o jump.o
langhooks.o lcm.o lists.o local-alloc.o loop.o mode-switching.o
modulo-sched.o optabs.o options.o opts.o params.o postreload.o
postreload-gcse.o predict.o insn-preds.o pointer-set.o print-rtl.o
print-tree.o profile.o value-prof.o var-tracking.o real.o recog.o
reg-stack.o regclass.o regmove.o regrename.o reload.o reload1.o
reorg.o resource.o rtl.o rtlanal.o rtl-error.o sbitmap.o sched-deps.o
sched-ebb.o sched-rgn.o sched-vis.o sdbout.o simplify-rtx.o sreal.o
stmt.o stor-layout.o stringpool.o targhooks.o timevar.o toplev.o
tracer.o tree.o tree-dump.o varasm.o varray.o vec.o version.o
vmsdbgout.o xcoffout.o alloc-pool.o et-forest.o cfghooks.o bt-load.o
pretty-print.o ggc-page.o web.o passes.o tree-profile.o rtlhooks.o
cfgexpand.o lambda-mat.o lambda-trans.o  lambda-code.o
tree-loop-linear.o tree-ssa-sink.o tree-vrp.o tree-stdarg.o
tree-cfgcleanup.o tree-ssa-reassoc.o tree-ssa-structalias.o
tree-object-size.o i386.o  host-linux.o tree-inline.o cgraph.o
cgraphunit.o tree-nomudflap.o ipa.o ipa-inline.o ipa-utils.o
ipa-reference.o ipa-pure-const.o ipa-type-escape.o ipa-prop.o ipa-cp.o
i686-pc-linux-gnu-ar: symbol-tables.o: No such file or directory

And in fact there is no symbol-tables.o but I saw it being compiled so
I wonder where it has gone to.


Any suggestions ??
Regards,

Paulo Matos


Regards,

--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK




--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


RE: Adding a new gcc dir

2007-03-06 Thread Dave Korn
On 06 March 2007 18:22, Paulo J. Matos wrote:


> i686-pc-linux-gnu-ar: symbol-tables.o: No such file or directory
> 
> And in fact there is no symbol-tables.o but I saw it being compiled so
> I wonder where it has gone to.
> 
> 
> Any suggestions ??

  1.  Always pipe the build output to a file so you can review it after the
build and see what went wrong.

  2.  Learn about the unix 'find' command.

  3.  Don't use a subdirectory, none of the other passes do that,
subdirectories are for separate languages.  Think of it like this: a compile
taking place in a subdirectory of the gcc build dir can reference the core gcc
.o files built in the parent dir, but the core gcc build in the parent dir
can't reference files in a sub-dir.  (This isn't strictly true, I'm sure
there's a way to make it work, but all the existing build machinery works this
way round and it's probably easiest to keep to the same scheme).


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Re: build broken

2007-03-06 Thread Matthias Klose

Mike Stump schrieb:

It appears that one of these:
+ '[' -s .bad_compare ']'
+ exit 1

I have a feeling sed -i isn't our friend.


fixed.

  Matthias

2007-03-06  Matthias Klose  <[EMAIL PROTECTED]>

* doc/Makefile.am(gkeytool.pod): Don't use sed -i.
* doc/Makefile.in: Regenerate.

Index: doc/Makefile.am
===
--- doc/Makefile.am (Revision 122631)
+++ doc/Makefile.am (Arbeitskopie)
@@ -67,10 +67,10 @@
 
 # hack around the cross references and the enumeration
 gkeytool.pod: $(srcdir)/cp-tools.texinfo
-   -$(TEXI2POD) -D gkeytool < $< > $@
-   sed -i -e 's/^For more details.*/See I for more 
details./' \
+   -$(TEXI2POD) -D gkeytool < $< \
+ | sed -e 's/^For more details.*/See I for more 
details./' \
-e 's/1\.<\([^>]*\)>/- \1/' \
-   $@
+   > $@
 
 gnative2ascii.pod: $(srcdir)/cp-tools.texinfo
-$(TEXI2POD) -D gnative2ascii < $< > $@


Re: Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

On 3/6/07, Dave Korn <[EMAIL PROTECTED]> wrote:

On 06 March 2007 18:22, Paulo J. Matos wrote:


> i686-pc-linux-gnu-ar: symbol-tables.o: No such file or directory
>
> And in fact there is no symbol-tables.o but I saw it being compiled so
> I wonder where it has gone to.
>
>
> Any suggestions ??

  1.  Always pipe the build output to a file so you can review it after the
build and see what went wrong.



Yes, so? What help would that be right now?


  2.  Learn about the unix 'find' command.



I know about the find command! Why should I need it here? To do "find
. -name symbol-tables.o" ? I told you, there's no such file.


  3.  Don't use a subdirectory, none of the other passes do that,
subdirectories are for separate languages.  Think of it like this: a compile
taking place in a subdirectory of the gcc build dir can reference the core gcc
.o files built in the parent dir, but the core gcc build in the parent dir
can't reference files in a sub-dir.  (This isn't strictly true, I'm sure
there's a way to make it work, but all the existing build machinery works this
way round and it's probably easiest to keep to the same scheme).



So, any auxiliar files to the pass should be in the same directory as
the pass itself. Or do you advise me to have _all_ the code in the
pass file?

Cheers,

Paulo Matos



cheers,
  DaveK
--
Can't think of a witty .sigline today





--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


RE: Adding a new gcc dir

2007-03-06 Thread Dave Korn
On 06 March 2007 20:12, Paulo J. Matos wrote:

> On 3/6/07, Dave Korn <[EMAIL PROTECTED]> wrote:
>> On 06 March 2007 18:22, Paulo J. Matos wrote:
>> 
>> 
>>> i686-pc-linux-gnu-ar: symbol-tables.o: No such file or directory
>>> 
>>> And in fact there is no symbol-tables.o but I saw it being compiled so
>>> I wonder where it has gone to.
>>> 
>>> 
>>> Any suggestions ??
>> 
>>   1.  Always pipe the build output to a file so you can review it after the
>> build and see what went wrong.
>> 
> 
> Yes, so? What help would that be right now?

  You would be able to look again at the command-line that was invoked when
you "saw it being compiled" and see what the -o option said.  You could also
see if there were any errors when it was compiled.
 
>>   2.  Learn about the unix 'find' command.
>> 
> 
> I know about the find command! Why should I need it here? To do "find
> . -name symbol-tables.o" ? I told you, there's no such file.

  You also told me you "saw it being compiled", from which I inferred that it
/was/ compiled, from which I inferred that there had to be an output file
somewhere.  The only way I could reconcile those two seemingly-contradictory
statements was to assume that you must not have looked for it in the place
where it actually ended up.

  Of course, it's possible that it was compiled one minute and automagically
deleted the next.  If you had had that log file, you'd be able to see *that*
too.

>>   3.  Don't use a subdirectory, none of the other passes do that,
>> subdirectories are for separate languages.  Think of it like this: a
>> compile taking place in a subdirectory of the gcc build dir can reference
>> the core gcc .o files built in the parent dir, but the core gcc build in
>> the parent dir can't reference files in a sub-dir.  (This isn't strictly
>> true, I'm sure there's a way to make it work, but all the existing build
>> machinery works this way round and it's probably easiest to keep to the
>> same scheme). 
>> 
> 
> So, any auxiliar files to the pass should be in the same directory as
> the pass itself.

  Well, that is how every other pass has been implemented.

> Or do you advise me to have _all_ the code in the
> pass file?

  No, I advise that when adding a pass, regardless of whether the code can fit
in a single file or is large enough to need to use several separate files,
it's consistent to put all the files that implement the pass in the main 'gcc'
source directory.


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Re: GCC 4.2.0 Status Report (2007-03-04)

2007-03-06 Thread Manuel López-Ibáñez

On 05/03/07, Manuel López-Ibáñez <[EMAIL PROTECTED]> wrote:

On 05/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:
> After reviewing all of the traffic[1] that stemmed from my previous
> status report, I've decided that, indeed, it makes sense to steam ahead
> with GCC 4.2.0 based on current GCC 4.2.0 release branch.
>

I ask special permission to apply this patch:

http://gcc.gnu.org/ml/gcc-patches/2007-02/msg01461.html

to GCC 4.2.0. This patch is trivial and it has been in GCC 4.3 for a
few weeks already.

It replaces two options that are introduced in GCC 4.2 with a single
switch -Waddress. I think we should replace them before releasing, to
minimise the effect of the change in users.



Mark,

Do you have an opinion about this? Whatever decision is made, I would
like to delete it from my TODO list.

Cheers,

Manuel.


Re: Adding a new gcc dir

2007-03-06 Thread Paulo J. Matos

On 3/6/07, Dave Korn <[EMAIL PROTECTED]> wrote:

  No, I advise that when adding a pass, regardless of whether the code can fit
in a single file or is large enough to need to use several separate files,
it's consistent to put all the files that implement the pass in the main 'gcc'
source directory.




OK, thank you.


cheers,
  DaveK
--
Can't think of a witty .sigline today





--
Paulo Jorge Matos - pocm at soton.ac.uk
http://www.personal.soton.ac.uk/pocm
PhD Student @ ECS
University of Southampton, UK


Re: GCC 4.2.0 Status Report (2007-03-04)

2007-03-06 Thread Mark Mitchell
Manuel López-Ibáñez wrote:
> On 05/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:
>> After reviewing all of the traffic[1] that stemmed from my previous
>> status report, I've decided that, indeed, it makes sense to steam ahead
>> with GCC 4.2.0 based on current GCC 4.2.0 release branch.
>>
> 
> I ask special permission to apply this patch:
> 
> http://gcc.gnu.org/ml/gcc-patches/2007-02/msg01461.html
> 
> to GCC 4.2.0. This patch is trivial and it has been in GCC 4.3 for a
> few weeks already.

This patch is OK for 4.2.0, on the grounds that the -Walways-true option
has not yet appeared in any FSF release, and we don't want to release
the option with semantics different than what are eventually intended.

Thanks,

-- 
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713


Re: which opt. flags go where? - references

2007-03-06 Thread Grigori Fursin
Hi Kenneth,

Just found your post in the gcc archive ;) - wanted to say that there have been 
many projects 
on the topic of optimal compiler flag selections. Actually, there are several 
free and commercial 
tools available for several years already: PathOpt from PathScale and ESTO from 
IBM, for example.
We switched to PathOpt in 2003 and currently use it for our research since it 
is 
easily configurable, works with any languages, does not require project 
modifications and
has many extendable basic search strategies (random, one by one, all but one). 
We easily 
coupled it with the PAPI library to obtain hardware counters, retargeted it to 
work with GCC
and Intel Compilers, and added different machine learning algorithms. 

If you are interested, you can find more information about these tools and 
search techniques 
on global and fine-grain level, including publications and links to groups 
working on iterative 
optimizations at my webpage here:
http://fursin.net/research_iter.html

Also, if you are interested, we will present our new paper "Rapidly Selecting 
Good Compiler
Optimizations using Performance Counters"
at the CGO in a few days where we use hardware counters and machine learning to 
select best
optimization flags for the PathScale compiler (Open64/ORC compiler). 
Unfortunately, I will
not be able to come to CGO and present it due to some passport problems, but 
there will be 
my colleagues whom you can chat with about iterative optimizations ...

By the way, we now move most of our tools and techniques to the GCC within 
MilePost project 
and HiPEAC network, and would be happy for any comments and suggestions.
Our development website is here:
http://gcc-ici.sourceforge.net

Cheers,
Grigori

=
Grigori Fursin, PhD
Research Fellow, INRIA Futurs, France
http://fursin.net





* From: Kenneth Hoste 
* To: Diego Novillo 
* Cc: gcc at gcc dot gnu dot org, Ben Elliston 
* Date: Wed, 7 Feb 2007 15:35:15 +0100
* Subject: Re: which opt. flags go where? - references
* References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>

Hi,

On 07 Feb 2007, at 15:22, Diego Novillo wrote:

Kenneth Hoste wrote on 02/07/07 08:56:

[1] Almagor et al., Finding effective compilation sequences (LCES'04)
[2] Cooper et al., Optimizing for Reduced Code Space using Genetic 
Algorithms (LCTES'99)
[3] Almagor et al., Compilation Order Matters: Exploring the Structure 
of the Space of
Compilation Sequences Using Randomized Search Algorithms (Tech.Report)
[3] Acovea: Using Natural Selection to Investigate Software Complexities
(http://www.coyotegulch.com/products/acovea/) 

You should also contact Ben Elliston (CC'd) and Grigori Fursin (sorry, no 
email).

Ben worked on dynamic reordering of passes, his thesis will have more 
information about it.

Grigori is working on an API for iterative an adaptive optimization, 
implemented in GCC. He
presented at the last HiPEAC 2007 GCC workshop. Their presentation should be
available at http://www.hipeac.net/node/746


I actually talked to Grigori about the -Ox flags, I was at the HiPEAC 
conference too ;-) I didn't
include references to his work, because my aim wouldn't be at reordering of 
passes, but just
selecting them. I understand that reordering is of great importance while 
optimizing, but I think
this project is big enough as is.

Some other questions:
* I'm planning to do this work on an x86 platform (i.e. Pentium4), but 
richi told me that's
probably not a good idea, because of the low number of registers available on 
x86. Comments? 

When deriving ideal flag combinations for -Ox, we will probably want common 
sets for the more
popular architectures, so I would definitely include x86. 


OK. I think richi's comment on x86 was the fact that evaluating the technique 
we are thinking about
might produce results which are hard to 'port' to a different architecture. But 
then again, we won't
be stating we have found _the_ best set of flags for a given goal... Thank you 
for your comment.


* Since we have done quite some analysis on the SPEC2k benchmarks, 
we'll also be using them
for this work. Other suggestions are highly appreciated. 

We have a collection of tests from several user communities that we use as 
performance
benchmarks (DLV, TRAMP3D, MICO). There should be links to the testers somewhere 
in
http://gcc.gnu.org/ 


OK, sounds interesting, I'll look into it. In which way are these benchmarks 
used? Just to test the
general performance of GCC? Have they been compared to say, SPEC CPU, or other 
'research/industrial'
benchmark suites (such as MiBench, MediaBench, EEMBC, ...) ?


* Since there has been some previous work on this, I wonder why none of 
it has made it into
GCC development. Were the methods proposed unfeasible for some reason? What 
would be needed to make
an approach to automatically find suitable flags for -

GCC Interactive Compilation Interface development

2007-03-06 Thread Grigori Fursin
Dear all,

Just wanted to announce that we are working
on the GCC Interactive Compilation Interface to enable 
automatic tuning of optimization heuristic. This interface
is used in HiPEAC, MilePost, SARC and GCCC projects.

A website with latest patches, software, forums, mailing lists,
publications is available here: 

http://gcc-ici.sourceforge.net

Current prototype of GCC-ICI has an ability to reorder compiler 
optimization phases and fine-tune several transformations.
We are currently working on the following issues: 
 
* incrementally modifying Tree-SSA to support dynamic pass reordering  
* splitting analysis and optimization code  
* extracting program features 
* adding support for fine-grain tuning of most of the GCC optimizations  
* developing a component model for passes to enable dynamic linking of external 
optimization plugins

* developing a scripting language inside GCC to simplify and automatize 
transformations &
optimization process 

We presented our preliminary work at the SMART'07 workshop and GCC HiPEAC 
Tutorial
where I had a chat with Diego Novillo et al about further GCC-ICI developments.
We now plan to have an open discussion at the GCC-ICI forum about further 
developments and will be happy for any comments and suggestions.

Here is the formal motivation for our research and developments:

Current innovations in science and industry demand ever-increasing
computing resources while placing strict requirements on system
performance, power consumption, code size, response, reliability,
portability and design time. However compilers often fail to deliver
satisfactory levels of performance on modern processors, due to
rapidly evolving hardware, lack/cost of expert resources, fixed and
black-box optimization heuristics, simplistic hardware models,
inability to fine-tune the application of transformations, and highly
dynamic behavior of the system.

Recently, we started developing an Interactive Compilation Interface
(ICI) to connect external optimization drivers to the GCC. This
interface is meant to facilitate the prototyping and evaluation of
iterative optimization, fine-grain customization and design-space
exploration strategies. The early design to enable non-intrusive
feature extraction and meddling with heuristic's decisions was
presented at the SMART'07 workshop. Currently, we are working on a 
more advanced design, incrementally modifying Tree-SSA to support dynamic
pass reordering, structured split of analysis and optimization code,
and a component model for passes to enable dynamic linking of external
optimization plugins. We believe these modification will simplify the
tuning process of new optimization heuristics and will eventually
simplify the whole compiler design where compiler heuristics will be
learned automatically, continuously and transparently for a user using
statistical and machine learning techniques.

Looking forward to your input,
Grigori Fursin

=
Grigori Fursin, PhD
Research Fellow, INRIA Futurs, France
http://fursin.net/research_desc.html



Re: GCC 4.2.0 Status Report (2007-03-04)

2007-03-06 Thread Manuel López-Ibáñez

On 06/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:

Manuel López-Ibáñez wrote:
> On 05/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:
>> After reviewing all of the traffic[1] that stemmed from my previous
>> status report, I've decided that, indeed, it makes sense to steam ahead
>> with GCC 4.2.0 based on current GCC 4.2.0 release branch.
>>
>
> I ask special permission to apply this patch:
>
> http://gcc.gnu.org/ml/gcc-patches/2007-02/msg01461.html
>
> to GCC 4.2.0. This patch is trivial and it has been in GCC 4.3 for a
> few weeks already.

This patch is OK for 4.2.0, on the grounds that the -Walways-true option
has not yet appeared in any FSF release, and we don't want to release
the option with semantics different than what are eventually intended.

Thanks,



As far as I know, it was introduced in GCC 4.2 revision 108489.

Also:

$ svn log svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch | grep -n
-e "Walways.true"
63424:  * gcc.dg/20031012-1.c: Add -Walways-true option.
63978:  * doc/invoke.texi (Warning Options): Document -Walways-true being
64532:  * common.opt (Walways-true): New option.

while

$ svn log svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch | grep -n
-e "Walways.true"

shows nothing.

Cheers,

Manuel.


Re: build broken

2007-03-06 Thread Mike Stump

On Mar 6, 2007, at 11:14 AM, Matthias Klose wrote:

Mike Stump schrieb:

I have a feeling sed -i isn't our friend.


fixed.


I can confirm that this fixed my build.  I'm expected the regression  
tester to follow shortly.


Thanks.


Re: GCC 4.2.0 Status Report (2007-03-04)

2007-03-06 Thread Gabriel Dos Reis
"Manuel López-Ibáñez" <[EMAIL PROTECTED]> writes:

| On 06/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:
| > Manuel López-Ibáñez wrote:
| > > On 05/03/07, Mark Mitchell <[EMAIL PROTECTED]> wrote:
| > >> After reviewing all of the traffic[1] that stemmed from my previous
| > >> status report, I've decided that, indeed, it makes sense to steam ahead
| > >> with GCC 4.2.0 based on current GCC 4.2.0 release branch.
| > >>
| > >
| > > I ask special permission to apply this patch:
| > >
| > > http://gcc.gnu.org/ml/gcc-patches/2007-02/msg01461.html
| > >
| > > to GCC 4.2.0. This patch is trivial and it has been in GCC 4.3 for a
| > > few weeks already.
| >
| > This patch is OK for 4.2.0, on the grounds that the -Walways-true option
| > has not yet appeared in any FSF release, and we don't want to release
| > the option with semantics different than what are eventually intended.
| >
| > Thanks,
| >
| 
| As far as I know, it was introduced in GCC 4.2 revision 108489.
| 
| Also:
| 
| $ svn log svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch | grep -n
| -e "Walways.true"
| 63424:  * gcc.dg/20031012-1.c: Add -Walways-true option.
| 63978:  * doc/invoke.texi (Warning Options): Document -Walways-true being
| 64532:  * common.opt (Walways-true): New option.
| 
| while
| 
| $ svn log svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch | grep -n
| -e "Walways.true"
| 
| shows nothing.

I strongly encourage the removal brefore 4.2 gets out.

-- Gaby