Re: Recent VCG changes break gfortran's -std=f95 option

2006-06-06 Thread FX Coudert

Something is marking random_seed as noreturn.


As far as I understand, symbols are marked as noreturn by use of  
TREE_THIS_VOLATILE, which is done on a few selected trees and is also  
done whenever a symbol has the noreturn attribute. This noreturn  
attribute can be set to 1 by make_noreturn, but nothing ever sets it  
to 0, which is probably why we're experiencing this problem.


I have to go and not enough time to check it in detail, but perhaps  
we should change that here:


Index: intrinsic.c
===
--- intrinsic.c (revision 114340)
+++ intrinsic.c (working copy)
@@ -254,6 +254,7 @@
   next_sym-resolve = resolve;
   next_sym-specific = 0;
   next_sym-generic = 0;
+  next_sym-attr.noreturn = 0;
   break;
 default:


Re: Recent VCG changes break gfortran's -std=f95 option

2006-06-06 Thread FX Coudert

My first patch didn't even compile :(

Here's a new one.


Something is marking random_seed as noreturn.


As far as I understand, symbols are marked as noreturn by use of  
TREE_THIS_VOLATILE, which is done on a few selected trees and is  
also done whenever a symbol has the noreturn attribute. This  
noreturn attribute can be set to 1 by make_noreturn, but nothing  
ever sets it to 0, which is probably why we're experiencing this  
problem.


I have to go and not enough time to check it in detail, but perhaps  
we should change that here:


Index: intrinsic.c
===
--- intrinsic.c (revision 114340)
+++ intrinsic.c (working copy)
@@ -254,6 +254,7 @@
   next_sym-resolve = resolve;
   next_sym-specific = 0;
   next_sym-generic = 0;
+  next_sym-noreturn = 0;
   break;
 default:


Re: GCC 4.2 Status Report (2006-06-04)

2006-06-06 Thread Bernd Schmidt

Joern RENNECKE wrote:

In http://gcc.gnu.org/ml/gcc/2006-06/msg00120.html, you wrote:


As fwprop is no longer on the table for 4.2, and as the vectorizer
improvements seem to have stalled due to a combination of lack of review
and Dorit's leave, I think it's time to declare 4.2 feature-complete.


I am still waiting for review of by auto-increment patches, and for Berndt
to complete the cross-jump part struct-equiv patches, so that I can post an
updated patch for the if-conversion part.


At this point I think it's better to wait for 4.3.  I like neither of 
the current proposed solutions - mine costs too much compile time, while 
yours is too much of a hack.  A while back I did some CSiBE testing that 
did not show enough benefit for the loss of compile time.  We need to 
figure out something better.



Bernd


Re: Fw: GCC 4.2 Status Report (2006-06-04)

2006-06-06 Thread Ayal Zaks

 This status report has been a long time coming, for which I apologize.

 As fwprop is no longer on the table for 4.2, and as the vectorizer
 improvements seem to have stalled due to a combination of lack of review
 and Dorit's leave,

That is unfortunate. Dorit did make a sincere effort to prepare her patches
long ago (mid February) well before leaving, and Victor has been constantly
pinging for reviews, ready to address them.

Ayal.


 I think it's time to declare 4.2 feature-complete.

 That leaves us looking at regressions.  There are lots; presently 56
 P1s.  About half of those are new in 4.2.  So, we're not ready to create
 a 4.2 branch.

 Therefore, we need to make the mainline open for regression-fixes only
 to force ourselves to attack the open bugs.  Please consider the
 mainline operating under release-branch rules as of 12:01 AM Wednesday,
 California time.  That will give everyone a few days to check in any
 in-progress bug-fixes that are not regressions.

 At this time, I don't think it makes sense to set a 4.2 target branch
 date.  We have to see how fast the bug-fixing goes.

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



Re: Modifying ARM code generator for elimination of 8bit writes - need help

2006-06-06 Thread Richard Sandiford
Wolfgang Mües [EMAIL PROTECTED] writes:
 On Sunday 04 June 2006 23:36, Rask Ingemann Lambertsen wrote:
 On Wed, May 31, 2006 at 10:49:35PM +0200, Wolfgang Mües wrote:
   (define_insn *arm_movqi_insn
 [(set (match_operand:QI 0 nonimmediate_operand =r,r,r,m)
(match_operand:QI 1 general_operand rI,K,m,r))]

 I think you should go back to this (i.e. the unmodified version) and
 only change the m into Q in the fourth alternative of operand 0.
 See if that works, i.e. generates addresses that are valid for the
 swp instruction.

 No, that doesn't work:

 ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c: In function
 __register_frame_info_table_bases':
 ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c:146: error: insn does not
 satisfy its constraints: (insn 63 28 29 0
 ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c:136 (set (mem/s/j:QI (plus:SI
 (reg/v/f:SI 1 r1 [orig:102 ob ] [102]) (const_int 16 [0x10])) [0 S1
 A32])
 (reg:QI 12 ip)) 155 {*arm_movqi_insn} (nil)
 (nil))
 ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c:146: internal compiler error:
 in reload_ cse_simplify_operands, at postreload.c:391

This is just a guess, but the insn above might be an output reload.
Reload instructions are not themselves reloaded.  In other words,
if gcc needs to reload a QImode register out to a memory location,
it will assume that any m-r move is OK; it will not restrict the
reload to Q-r.  This is by design.  You can:

  (1) Trap this in the movqi expander, if you can fix up the general
  case without clobbering additional registers (unlikely).
  (2) Define a reload_outqi pattern to handle general m-r moves.
  You then get a scratch register to play with.  (This interface
  has changed (and improved) since I last used it.)
  (3) Modify reload so that output memory operands are legitimised
  differently (only if you're brave).
  (4) Restrict QImode addresses to 'Q'.

It looks downthread like you've already decided to do (4).  I just
wasn't sure from the thread whether you realised that output reloads
might be a specific problem.  Sorry in advance if this was just noise. ;)

Richard


Re: [MinGW] Set NATIVE_SYSTEM_HEADER_DIR relative to configured prefix

2006-06-06 Thread Ranjit Mathew
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Ross Ridge wrote:
 Ranjit Mathew wrote:
 Danny, I'm using the same configure flags that you have used for GCC
 3.4.5 MinGW release (*except* for --prefix=/mingw, which is something
 like --prefix=/j/mingw/mgw for me), but the GCC I get is not relocatable
 at all, while I can put the MinGW GCC 3.4.5 release anywhere on the
 filesystem and it still works. :-(
 
 The GCC I get from my native MinGW build of the trunk is relocatable:

Curiouser and curiouser!

See the following output that shows what I was talking about
(TEMP is set to C:\TEMP, so /tmp is mapped to C:\TEMP):
- -- 8 --
C:\TEMP\mgwc:\temp\mgw\mymingw\bin\gcc -v hello.c
Using built-in specs.
Target: i686-pc-mingw32
Configured with: ../gcc/configure --prefix=/tmp/mgw/mymingw --host=i686-pc-mingw
32 --target=i686-pc-mingw32 --disable-nls --disable-checking --disable-debug --e
nable-threads=win32 --disable-win32-registry --enable-languages=c --disable-werr
or
Thread model: win32
gcc version 4.2.0 20060606 (experimental)
 c:/temp/mgw/mymingw/bin/../libexec/gcc/i686-pc-mingw32/4.2.0/cc1.exe -quiet -v
- -iprefix c:\temp\mgw\mymingw\bin\../lib/gcc/i686-pc-mingw32/4.2.0/ hello.c 
-quie
t -dumpbase hello.c -mtune=generic -auxbase hello -version -o C:\TEMP/ccuw.s

ignoring nonexistent directory /tmp/mgw/mymingw/include
ignoring nonexistent directory C:/TEMP/mgw/mymingw/i686-pc-mingw32/include
ignoring nonexistent directory /mingw/include
#include ... search starts here:
#include ... search starts here:
 c:/temp/mgw/mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/include
 C:/TEMP/mgw/mymingw/include
 C:/TEMP/mgw/mymingw/lib/gcc/i686-pc-mingw32/4.2.0/include
End of search list.
GNU C version 4.2.0 20060606 (experimental) (i686-pc-mingw32)
compiled by GNU C version 4.2.0 20060606 (experimental).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129918
Compiler executable checksum: fa3ae888985b8ab892ffd388ea6c3279
 c:/temp/mgw/mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../../i686-pc-mi
ngw32/bin/as.exe -o C:\TEMP/ccOS.o C:\TEMP/ccuw.s
 c:/temp/mgw/mymingw/bin/../libexec/gcc/i686-pc-mingw32/4.2.0/collect2.exe -Bdyn
amic c:/temp/mgw/mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../crt2.o -L
c:/temp/mgw/mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0 -Lc:/temp/mgw/mymingw/b
in/../lib/gcc -LC:/TEMP/mgw/mymingw/lib/gcc/i686-pc-mingw32/4.2.0 -Lc:/temp/mgw/
mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../../i686-pc-mingw32/lib -LC
:/TEMP/mgw/mymingw/lib/gcc/i686-pc-mingw32/4.2.0/../../../../i686-pc-mingw32/lib
 -Lc:/temp/mgw/mymingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../.. -LC:/TEMP/m
gw/mymingw/lib/gcc/i686-pc-mingw32/4.2.0/../../.. C:\TEMP/ccOS.o -lmingw32 -
lgcc -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32 -lmi
ngw32 -lgcc -lmoldname -lmingwex -lmsvcrt

C:\TEMP\mgwmove mymingw yourmingw
1 file(s) moved.

C:\TEMP\mgwc:\temp\mgw\yourmingw\bin\gcc -v hello.c
Using built-in specs.
Target: i686-pc-mingw32
Configured with: ../gcc/configure --prefix=/tmp/mgw/mymingw --host=i686-pc-mingw
32 --target=i686-pc-mingw32 --disable-nls --disable-checking --disable-debug --e
nable-threads=win32 --disable-win32-registry --enable-languages=c --disable-werr
or
Thread model: win32
gcc version 4.2.0 20060606 (experimental)
 c:/temp/mgw/yourmingw/bin/../libexec/gcc/i686-pc-mingw32/4.2.0/cc1.exe -quiet -
v -iprefix c:\temp\mgw\yourmingw\bin\../lib/gcc/i686-pc-mingw32/4.2.0/ hello.c -
quiet -dumpbase hello.c -mtune=generic -auxbase hello -version -o C:\TEMP/ccktaa
aa.s
ignoring nonexistent directory C:/TEMP/mgw/mymingw/include
ignoring nonexistent directory /tmp/mgw/mymingw/include
ignoring nonexistent directory C:/TEMP/mgw/mymingw/lib/gcc/i686-pc-mingw32/4.2.
0/include
ignoring nonexistent directory C:/TEMP/mgw/mymingw/i686-pc-mingw32/include
ignoring nonexistent directory /mingw/include
#include ... search starts here:
#include ... search starts here:
 c:/temp/mgw/yourmingw/bin/../lib/gcc/i686-pc-mingw32/4.2.0/include
End of search list.
GNU C version 4.2.0 20060606 (experimental) (i686-pc-mingw32)
compiled by GNU C version 4.2.0 20060606 (experimental).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129918
Compiler executable checksum: fa3ae888985b8ab892ffd388ea6c3279
hello.c:1:19: error: stdio.h: No such file or directory
hello.c: In function 'main':
hello.c:5: warning: incompatible implicit declaration of built-in function 'prin
tf'

C:\TEMP\mgw
- -- 8 --

Thanks,
Ranjit.

- --
Ranjit Mathew  Email: rmathew AT gmail DOT com

Bangalore, INDIA.Web: http://rmathew.com/


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2.2 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEhU50Yb1hx2wRS48RAr1dAJ9fDgIvYe493D+uOCuCwC3HKRqBagCfXzRL
DaA0CPYJBV3OfoPlSBK4jnc=
=A+Jh
-END PGP

Re: Fw: GCC 4.2 Status Report (2006-06-04)

2006-06-06 Thread Richard Guenther

On 6/6/06, Ayal Zaks [EMAIL PROTECTED] wrote:


 This status report has been a long time coming, for which I apologize.

 As fwprop is no longer on the table for 4.2, and as the vectorizer
 improvements seem to have stalled due to a combination of lack of review
 and Dorit's leave,

That is unfortunate. Dorit did make a sincere effort to prepare her patches
long ago (mid February) well before leaving, and Victor has been constantly
pinging for reviews, ready to address them.


rant
Maybe you can look at some of the regressions of the vectorizer first,
instead of
adding new features without first addressing regressions?

This could build up some trust that the newly added code will actually
be maintained
in the future.
/rant

For a quick bugzilla search, use the 4.2 regressions link on the
gcc.gnu.org page
and modify it to include -ftree-vectorize in the bug description.  I
count 3 P1 and
3 P2 regressions.

Richard.


Re: ARM gcc 4.1 optimization bug.

2006-06-06 Thread Dirk Behme

Fengwei Yin wrote:

Hi Daniel,
I have already reported this bug. The bug number is #27363.
I also tried the gcc snapshot 4.1.1-20060421. The bug is not
fixed in this version too.



On 5/1/06, Daniel Jacobowitz [EMAIL PROTECTED] wrote:

On Sun, Apr 30, 2006 at 11:03:05AM +0800, Fengwei Yin wrote:
 I am using gcc4.1 for ARM to build Linux kernel. But there is a bug
 related to the gcc
 optimization. I assume this is correct mail list to report this bug.
 If not, please let me know.

No, if you have a bug report, please use the bug reporting system.
Please see:
  http://gcc.gnu.org/bugs.html


Any news regarding this?

Seems that I have the same problem. However, I first 
selected an other list


http://sourceware.org/ml/crossgcc/2006-06/msg00032.html

before finding this ;)

Looking at

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27363

it looks to me that this isn't fixed at 4.1.1?

To create easier testcase, maybe it helps to compile only 
kernel's sound modules? I can reproduce this failure 
compiling sound modules of 2.6.17-rc5 with using different 
optimization levels for them:


-Os - failure
-O2 - failure
-O0 - building of some modules fails
-O1 - sound works!

Best regards

Dirk




Re: ARM gcc 4.1 optimization bug.

2006-06-06 Thread Richard Earnshaw
On Tue, 2006-06-06 at 15:05, Dirk Behme wrote:
 Fengwei Yin wrote:
  Hi Daniel,
  I have already reported this bug. The bug number is #27363.
  I also tried the gcc snapshot 4.1.1-20060421. The bug is not
  fixed in this version too.
  
  On 5/1/06, Daniel Jacobowitz [EMAIL PROTECTED] wrote:
  On Sun, Apr 30, 2006 at 11:03:05AM +0800, Fengwei Yin wrote:
   I am using gcc4.1 for ARM to build Linux kernel. But there is a bug
   related to the gcc
   optimization. I assume this is correct mail list to report this bug.
   If not, please let me know.
 
  No, if you have a bug report, please use the bug reporting system.
  Please see:
http://gcc.gnu.org/bugs.html
 
 Any news regarding this?
 
 Seems that I have the same problem. However, I first 
 selected an other list
 
 http://sourceware.org/ml/crossgcc/2006-06/msg00032.html
 
 before finding this ;)
 
 Looking at
 
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27363
 
 it looks to me that this isn't fixed at 4.1.1?


The bug is in state 'WAITING', which means there is not enough
information for us to investigate the problem.  

See http://gcc.gnu.org/bugs.html for details of what we need.

R.



Inline memcpy in GCC 4.1.1

2006-06-06 Thread Jon Beniston
Hi,

I'm updating a port from 3.4.6 to 4.1.1. In 3.4.6, I hadn't implemented
movmemsi patterns, but the compiler could still inline memcpy's (and also
strcpys where source string is a const) by itself. After updating to 4.1.1,
calls to memcpy are always generated. 

I've had a bash at implementing movmemsi, but in a test case that does a
strcpy (dest, const), it appears the 4th parameter (alignment) is always
1, and doing a MEM_ALIGN on the source operand results in 8, despite the
fact I have implemented the CONSTANT_ALIGNMENT and DATA_ALIGNMENT macros to
ensure that STRING_CSTs and QImode ARRAY_TYPEs get implemented on a
BITS_PER_WORD boundary (If I look at the assembler output, then that shows
the string being aligned as expected on a word boundary). 

So, two questions: any idea why 4.1.1 is no longer able to automatically
inline memcpys and why is the source operand for movmemsi not know to be as
widely aligned as it actually is?

Cheers,
Jon



Build report for AIX 5.1

2006-06-06 Thread Mario Linke

Hi,

i just built  GCC 4.1.1  on AIX 5.1 using the following commands:
../gcc-4.1.1/configure --with-libiconv-prefix=/usr --disable-nls
--disable-multilib
make bootstrap-lean
make install

$ config.guess
powerpc-ibm-aix5.1.0.0

$ gcc -v
Using built-in specs.
Target: powerpc-ibm-aix5.1.0.0
Configured with: /home/linke/temp/gcc-4.1.1/configure 
--with-libiconv-prefix=/usr --disable-nls --disable-multilib

Thread model: aix
gcc version 4.1.1

The system is an IBM pSeries M80 with AIX 5.1 at the latest patchlevel.
The building c-complier is  gcc 4.1.0
Make is  gnu-make 3.80

The disable-xxx configure-options shouldn't be necessary, i used them
for buildtime- and space-saving reasons.

The whole build took less than two hours.

Mario Linke










Re: Intermixing powerpc-eabi and powerpc-linux C code

2006-06-06 Thread Ron McCall
You make a good point about the linker aspect but I was first most
concerned about the code generation differences, if any. 

However, you are absolutely correct!  A test is in order.  I whipped up
a quick test program and was able to successfully compile, link and run
it, so it does indeed work!  Thanks!

On Thu, Jun 01, 2006 at 04:08:14PM -0700, Mike Stump wrote:
 This is a linker question, we don't do linkers here.  In particular,
 the relocs have to be compatible, if you want to do reloc  processing.
 You can use ld and resolve all the relocs and just slam  in the bytes,
 but then, you're not using gcc to link per se.
 
 Why not just try it out and see?


Fw: GCC SC request about ecj

2006-06-06 Thread Davanum Srinivas
oops! forgot to cc the list. thanks Per.

- Forwarded Message 
From: Per Bothner [EMAIL PROTECTED]
To: Davanum Srinivas [EMAIL PROTECTED]
Sent: Tuesday, June 6, 2006 11:49:23 AM
Subject: Re: GCC SC request about ecj

Davanum Srinivas wrote:
 Please see http://www.eclipsezone.com/eclipse/forums/t71850.html
 
 wget http://www.eclipse.org/jdt/core/patches/ecj_3.2RC3.jar;; should be 
 enough.

Did you mean to send this to the mailing list?  If you want to be
anonymous, I can post it for you.
-- 
--Per Bothner
[EMAIL PROTECTED]   http://per.bothner.com/





Re: Inline memcpy in GCC 4.1.1

2006-06-06 Thread Joern RENNECKE

In http://gcc.gnu.org/ml/gcc/2006-06/msg00185.html, your wrote:


So, two questions: any idea why 4.1.1 is no longer able to automatically
inline memcpys and why is the source operand for movmemsi not know to be as
widely aligned as it actually is?


See PR middle-end/27226





Re: Recent VCG changes break gfortran's -std=f95 option

2006-06-06 Thread Steve Kargl
On Tue, Jun 06, 2006 at 08:16:54AM +0200, FX Coudert wrote:
 
 Something is marking random_seed as noreturn.
 
 As far as I understand, symbols are marked as noreturn by use of  
 TREE_THIS_VOLATILE, which is done on a few selected trees and is  
 also done whenever a symbol has the noreturn attribute. This  
 noreturn attribute can be set to 1 by make_noreturn, but nothing  
 ever sets it to 0, which is probably why we're experiencing this  
 problem.
 
 I have to go and not enough time to check it in detail, but perhaps  
 we should change that here:
 
 Index: intrinsic.c
 ===
 --- intrinsic.c (revision 114340)
 +++ intrinsic.c (working copy)
 @@ -254,6 +254,7 @@
next_sym-resolve = resolve;
next_sym-specific = 0;
next_sym-generic = 0;
 +  next_sym-noreturn = 0;
break;
  default:

This patch is incorrect.  The problem is that the make_noreturn()
calls in add_subroutine are attached to the immediately preceding
symbol name that is stuck in the list of intrinsics.  In the case
of -std=f95 and random_seed(), the three intervening routine are
GFC_STD_GNU, so the make_noreturn() is applied to the wrong name.
Andrew and FX thanks for pointing me in the right direction.

If no one objects, I'll apply the enclosed patch later today.

2006-06-06  Steven G. Kargl  [EMAIL PROTECTED]

* intrinsic.c (add_subroutine):  Make make_noreturn() conditional on
the appropriate symbol name.

-- 
Steve


Index: intrinsic.c
===
--- intrinsic.c (revision 114435)
+++ intrinsic.c (working copy)
@@ -2232,7 +2232,8 @@ add_subroutines (void)
 
   add_sym_0s (abort, 1, GFC_STD_GNU, NULL);
 
-  make_noreturn();
+  if ((gfc_option.allow_std  GFC_STD_GNU) || gfc_option.flag_all_intrinsics)
+make_noreturn();
 
   add_sym_1s (cpu_time, 0, 1, BT_UNKNOWN, 0, GFC_STD_F95,
  gfc_check_cpu_time, NULL, gfc_resolve_cpu_time,
@@ -2338,7 +2339,8 @@ add_subroutines (void)
  gfc_check_exit, NULL, gfc_resolve_exit,
  c, BT_INTEGER, di, OPTIONAL);
 
-  make_noreturn();
+  if ((gfc_option.allow_std  GFC_STD_GNU) || gfc_option.flag_all_intrinsics)
+make_noreturn();
 
   add_sym_3s (fgetc, 0, 1, BT_UNKNOWN, 0, GFC_STD_GNU,
  gfc_check_fgetputc_sub, NULL, gfc_resolve_fgetc_sub,


Re: [RFC] Optimization Diary

2006-06-06 Thread Tom Tromey
 Devang == Devang Patel [EMAIL PROTECTED] writes:

Devang This version removes internal radar numbers and replaces s/
Devang DW_AT_APPLE.../DW_AT_GNU...

I read this.  I'm not anywhere near an expert in dwarf or anything
related to this proposal, so please bear with me if I say something
dumb :-).

I do have a few questions and concerns.

* Why put the optimization diary into the object file?
  Why not just have -Wdiary and print it along with all the warnings?
  (I'm sure there's an answer to this, it would just be nice if it
  were in the document...)

* DW_AT_GNU_OD_cmd - it seems strange for this to be defined in terms
  of text highlighting.  Why have a separate code here for dead
  code instead of just marking a text region and having a new _msg
  value meaning dead code?

* DW_AT_GNU_OD_category

  The last value is 0x 0016.  That seems wrong, I think it should
  end in 0010.

  What are action trails?

  Why is the action bit needed?  The example in the text seems wrong,
  since there is an explicit _msg value for function is inlined,
  and multiple values for why a function might not be inlined.

  How would the user find out what parameter is referred to by a
  parameter manipulation hint?  I don't see where this is recorded.

* DW_AT_GNU_OD_msg

  I presume that GCC will somehow maintain the canonical values here.
  It seems important that there be a central process for registering
  these so that weird divergences don't crop up over time.  Also
  perhaps a vendor extension range should be specified?  In any
  case, the mechanisms here ought to be documented.

A nit:

* The first example is oddly formatted.  The blue region encompasses
  an entire comment, but the salmon (? nice color choice :) region
  stops before the '*/'.  And... surely the diary won't be marking
  text regions corresponding to comments anyway?  I feel like I'm
  probably misunderstanding the point of this highlighting.

Tom



Re: Modifying ARM code generator for elimination of 8bit writes - need help

2006-06-06 Thread Rask Ingemann Lambertsen
On Tue, Jun 06, 2006 at 10:39:46AM +0100, Richard Sandiford wrote:
 Wolfgang Mües [EMAIL PROTECTED] writes:
  ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c: In function
  __register_frame_info_table_bases':

  ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c:146: error: insn does not
  satisfy its constraints:
[cut]
  ../../../gcc-4.0.2/gcc/unwind-dw2-fde.c:146: internal compiler error:
  in reload_ cse_simplify_operands, at postreload.c:391
 
 This is just a guess, but the insn above might be an output reload.

It is, in a peculiar (and not useful) way. Diffing the greg dump against
the lreg dump shows (using the example code I posted):

+(insn:HI 25 17 38 2 (set (reg:QI 3 r3)
+(reg:QI 3 r3 [110])) 158 {*arm_movqi_insn_swp} (nil)
+(nil))

-(insn:HI 25 17 36 2 (set (mem/s:QI (plus:SI (reg/v/f:SI 101 [ x ])
+(insn 38 25 36 2 (set (mem/s:QI (plus:SI (reg/v/f:SI 0 r0 [orig:101 x ]
+ [101])
 (const_int 5 [0x5])) [0 variable.c2+0 S1 A8])
-(subreg:QI (reg:SI 110) 0)) 158 {*arm_movqi_insn_swp} (nil)
-(expr_list:REG_DEAD (reg:SI 110)
-(expr_list:REG_DEAD (reg/v/f:SI 101 [ x ])
-(nil
+(reg:QI 3 r3)) 158 {*arm_movqi_insn_swp} (nil)
+(nil))

I.e. change insn 25 to a nop and then add insn 38 as essentially a duplicate
of the original insn 25. I don't think reload was supposed to do that. The
documentation as well as comments in reload.c suggest that the address would
be loaded into a register. I'm running the code in a debugger to find out
why it doesn't happen.

 Reload instructions are not themselves reloaded.  In other words,
 if gcc needs to reload a QImode register out to a memory location,
 it will assume that any m-r move is OK; it will not restrict the
 reload to Q-r.  This is by design.  You can:
 
   (1) Trap this in the movqi expander, if you can fix up the general
   case without clobbering additional registers (unlikely).
   (2) Define a reload_outqi pattern to handle general m-r moves.
   You then get a scratch register to play with.  (This interface
   has changed (and improved) since I last used it.)

This option stands a reasonable chance of being the end result. It just adds
more hair than I'd like to. It is one more thing that could go wrong, and so
on.

   (3) Modify reload so that output memory operands are legitimised
   differently (only if you're brave).
   (4) Restrict QImode addresses to 'Q'.
 
 It looks downthread like you've already decided to do (4).

Only as a temporary measure.

 I just
 wasn't sure from the thread whether you realised that output reloads
 might be a specific problem.

I was not aware of this. It is only the second time I've seen postreload
complain about unsatisfied constraints. Thanks for pointing out this
problem.

-- 
Rask Ingemann Lambertsen


Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel

Tom Tromey wrote:

Devang == Devang Patel [EMAIL PROTECTED] writes:



Devang This version removes internal radar numbers and replaces s/
Devang DW_AT_APPLE.../DW_AT_GNU...

I read this.  I'm not anywhere near an expert in dwarf or anything
related to this proposal, so please bear with me if I say something
dumb :-).
I do have a few questions and concerns.

* Why put the optimization diary into the object file?
  Why not just have -Wdiary and print it along with all the warnings?
  (I'm sure there's an answer to this, it would just be nice if it
  were in the document...)
  

I'll use separate email to answer this because it needs some
explanation and it may spawn its own little email thread.


* DW_AT_GNU_OD_cmd - it seems strange for this to be defined in terms
  of text highlighting.  Why have a separate code here for dead
  code instead of just marking a text region and having a new _msg
  value meaning dead code?
  

In the case of dead code we could use _msg. However, _cmd is available to
trigger some actions in tools that use this information. If we let our
imaginations run wild then for example, lead developer towards
__restrict  documentation (i.e. launch lang. standard doc in one window
and open particular page).

Usually  tools directly communicate_msg in plain English without performing
any action.

* DW_AT_GNU_OD_category

  The last value is 0x 0016.  That seems wrong, I think it should
  end in 0010.
  

Yes.

  What are action trails?
  

For example, Loop A is unrolled. It is not a parameter manipulation hint,
it is not a limitation and it is not a hint to developers. It is just a 
report

of what optimizer did. This is default category.

  Why is the action bit needed?  The example in the text seems wrong,
  since there is an explicit _msg value for function is inlined,
  and multiple values for why a function might not be inlined.
  

It is used to provide distinctive feed back for action performed vs
actions avoided. IDE may use different colors for actions performed vs
actions avoided (blue vs salomn color :)


 How would the user find out what parameter is referred to by a
  parameter manipulation hint?  I don't see where this is recorded.
  

This should be encoded in msg text. It bit is used to distinguish
build setting hint vs code change hint. Increase inline limit vs
use __restrict. Parameter manipulation hints may be handled by
build engineer in a big team, however you need code expert to
justify use of __restrict.

* DW_AT_GNU_OD_msg

  I presume that GCC will somehow maintain the canonical values here.
  It seems important that there be a central process for registering
  these so that weird divergences don't crop up over time.  Also
  perhaps a vendor extension range should be specified?  In any
  case, the mechanisms here ought to be documented.
  

Yes. However, honestly, I do not know what is the best way to handle
this. I am open for suggestion and I presume there is a established
way to communicate such values, that are owned by GCC, to other tools.

A nit:

* The first example is oddly formatted.  The blue region encompasses
  an entire comment, but the salmon (? nice color choice :) region
  stops before the '*/'.  And... surely the diary won't be marking
  text regions corresponding to comments anyway?  I feel like I'm
  probably misunderstanding the point of this highlighting.
  

The second example is oddly formatted. Blue and salmon colored
comments are generated by IDE based on diary entries. And IDE selected
color based on action bit.

-
Devang



Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel

Tom Tromey wrote:

* Why put the optimization diary into the object file?
  Why not just have -Wdiary and print it along with all the warnings?
  (I'm sure there's an answer to this, it would just be nice if it
  were in the document...)
  

These are not warnings and they should not cause build failures
when -Werror is used, hence warnings are not suitable medium to
communicate this info.

However, GCC provides hints along with warnings and errors. But they
all reside in build log. While doing performance analysis, build log
may not be available hence it is required to have it on disk somewhere.

And text format is not suitable because of two reasons:
1) It is verbose. Try -opt_report in ICC.
2) This info is consumed by other tools (e.g. IDE, performance analyzer).
It makes sense for a tool like Shark to use dwarf reader to get this info
then parse raw text output.

So, if
1) we need to keep this info on disk and available with final binary
and 2) we use binary format to encode this info)
then dwarf in object file is a natural selection.

Command line developer can use extended dwarf reader to get the text
messages.

-
Devang


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 These are not warnings and they should not cause build failures
 when -Werror is used, hence warnings are not suitable medium to
 communicate this info.

There is a third type of diagnostic in GCC which gets not much
use at all.  It is called note.  It might be interesting to use that instead
of saying there is no way to cause no build failures with warnings.

Thanks,
Andrew Pinski


Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel

Andrew Pinski wrote:

These are not warnings and they should not cause build failures
when -Werror is used, hence warnings are not suitable medium to
communicate this info.



There is a third type of diagnostic in GCC which gets not much
use at all.  It is called note.  It might be interesting to use that instead
of saying there is no way to cause no build failures with warnings.
  

That's what I meant when I said hints ...

However, GCC provides (notes) along with warnings and errors. But they
all reside in build log. While doing performance analysis, build log
may not be available hence it is required to have it on disk somewhere. 

-
Devang


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 
 Andrew Pinski wrote:
  These are not warnings and they should not cause build failures
  when -Werror is used, hence warnings are not suitable medium to
  communicate this info.
  
 
  There is a third type of diagnostic in GCC which gets not much
  use at all.  It is called note.  It might be interesting to use that instead
  of saying there is no way to cause no build failures with warnings.

 That's what I meant when I said hints ...
 
 However, GCC provides (notes) along with warnings and errors. But they
 all reside in build log. While doing performance analysis, build log
 may not be available hence it is required to have it on disk somewhere. 

If you are doing performance analysis the build log better be able to look
at to make sure you are building with the correct options unless you trust
the IDEs (which I and many other people don't).

-- Pinski


Re: Modifying ARM code generator for elimination of 8bit writes - need help

2006-06-06 Thread Rask Ingemann Lambertsen
On Tue, Jun 06, 2006 at 07:42:20AM +0200, Wolfgang Mües wrote:
 Rask,
 
 On Monday 05 June 2006 16:16, Rask Ingemann Lambertsen wrote:

  I think the comment in arm.h is wrong. The manual seems to agree with
  the code.
 
 Just to make it easy for beginners...

In mainline GCC, it is defined like this in arm/constraints.md:

(define_memory_constraint Q
 @internal
  In ARM state an address that is a single base register.
 (and (match_code mem)
  (match_test REG_P (XEXP (op, 0)

 Hmmm... I have searched 'Q' in the arm files. Not used in arm.md, only 
 for some variants of arm (cirrus). Maybe only implemented for them?
 
 I assume there is no way to tell the direction in 
 arm_legitimate_address_p() ? Hmmm.

There isn't. arm_legitimate_address_p() just implements the macro
GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL). The only trick I know here is to
use a different mode for special addresses. I'm writing an Intel 8086
backend which uses

#define FUNCTION_MODE PQImode

to let GO_IF_LEGITIMATE_ADDRESS handle function addresses specially. I just
can't think of a way of using such a trick in this case.

  +   swp%?b\\t%1, %1, %0\;ldr%?b\\t%1, %0
 
 You should get a price for cleverness here!

Thanks! Indeed it looks good until you think of volatile variables.
 
  +; Avoid reading the stored value back if we have a spare register.
  +(define_peephole2
  +  [(match_scratch:QI 2 r)
[snip]
 
 As far as I can tell now, this works good. But I think there are many 
 cases in which the source operand is not needed after the store. Is 
 there a possibility to clobber the source operand and not using another 
 register?

I don't know if (match_scratch ...) might reuse the source operand. It can
be attempted more specifically with an additional peephole definition:

(define_peephole2
  [(set (match_operand:QI 0 memory_operand )
(match_operand:QI 1 register_operand ))]
  TARGET_ARM  TARGET_SWP_BYTE_WRITES  peep2_reg_dead_p (1, operands[1])
  [(parallel
[(set (match_dup 0) (match_dup 1))
 (clobber (match_dup 1))]
  )]
)

Yet another register which stands a good chance of being reusable is the
register containing the address. This can be covered as well (assuming the
match_scratch version doesn't do this):

(define_peephole2
  [(set (mem:QI (match_operand 0 pmode_register_operand ))
(match_operand:QI 1 register_operand ))]
  TARGET_ARM  TARGET_SWP_BYTE_WRITES  peep2_reg_dead_p (1, operands[0])
  [(parallel
[(set (mem:QI (match_dup 0)) (match_dup 1))
 (clobber (match_dup 0))]
  )]
)

I haven't tested these two peephole definitions. I can't think of any
preferred order. It'll be your call, I guess.

  The register allocator chooses to use the lr register, in turn
  causing link register save alimination to fail, which doesn't help.
 
 I can't understand this without explanation... is it bad?

GCC now needs more registers to hold addresses. The increased number of
registers used disable som ARM specific optimizations of the function
prologue and epilogue. This is bad, but only because the code becomes
larger and slower. But I think that bytewritetest() suffers relatively
much because it is a small function, using only a few registers to begin
with.

-- 
Rask Ingemann Lambertsen


Does Hegel Justify His Views?

2006-06-06 Thread Peter Michael Gerdes


I've studied a fair bit of analytic philosophy and feel that it is  
the rigorous arguments and detailed justification that separates  
worthwhile philosophy from mere speculation or faith based spiritual  
musings.  Is there any reason for someone like me to take Hegel  
seriously?  You've talked about the ideas he has but does he give us  
any good reason to believe they are true?  Whenever I have tried to  
read Hegel I got the sense the arguments were incomplete and confused  
but I have to admit I haven't given him much of a chance.


Does Hegel actually have good arguments for his views or is he just  
musing and throwing out ideas?  If not why should we take him seriously?


Peter (in Oakland)


Oops

2006-06-06 Thread Peter Michael Gerdes

Ignore that last email.  It was sent to the wrong address.

Peter

Peter Gerdes -- [EMAIL PROTECTED]

Find what I have to say interesting?  Check out my blog or my  
analytic philosophy blog.



On Jun 6, 2006, at 12:36 PM, Peter Michael Gerdes wrote:



I've studied a fair bit of analytic philosophy and feel that it is  
the rigorous arguments and detailed justification that separates  
worthwhile philosophy from mere speculation or faith based  
spiritual musings.  Is there any reason for someone like me to take  
Hegel seriously?  You've talked about the ideas he has but does he  
give us any good reason to believe they are true?  Whenever I have  
tried to read Hegel I got the sense the arguments were incomplete  
and confused but I have to admit I haven't given him much of a chance.


Does Hegel actually have good arguments for his views or is he just  
musing and throwing out ideas?  If not why should we take him  
seriously?


Peter (in Oakland)




Re: Oops

2006-06-06 Thread David Nicol

On 6/6/06, Peter Michael Gerdes [EMAIL PROTECTED] wrote:

Ignore that last email.  It was sent to the wrong address.


Thesis, antithesis, synthesis.


--
David L Nicol
fans of liza minelli should always be
disconnected immediately -- Matthew Henry


Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel

Andrew Pinski wrote:

Andrew Pinski wrote:


These are not warnings and they should not cause build failures
when -Werror is used, hence warnings are not suitable medium to
communicate this info.



There is a third type of diagnostic in GCC which gets not much
use at all.  It is called note.  It might be interesting to use that instead
of saying there is no way to cause no build failures with warnings.
  
  

That's what I meant when I said hints ...

However, GCC provides (notes) along with warnings and errors. But they
all reside in build log. While doing performance analysis, build log
may not be available hence it is required to have it on disk somewhere. 



If you are doing performance analysis the build log better be able to look
at to make sure you are building with the correct options unless you trust
the IDEs (which I and many other people don't).
  

Two things.

First this is not about IDE vs no IDE. Lets take one example.
We, here at Apple, do not use IDE to build GCC. However we routinely
install pre built compiler package on various machines and do compile
time performance analysis using Shark. When Shark points me to a code
hot spot, I want to know what optimizer was thinking about it.

Second, optimization diary is not about what options are enabled and
disabled. Compiler should not invoke any particular optimization pass
just to add optimization diary entry. Its is a diary of optimization passes
that are active.

-
Devang

[ Interestingly, there is a long standing request, here at Apple, to list
 command line options in object file (even when optimization is not used).
 One of our intern tried to put them in STABS string. It may be a good
 idea to use DWARF in that case also. However it is orthogonal to
 optimization diary. It is a good small project, if someone is 
interested. ]





Re: Does Hegel Justify His Views?

2006-06-06 Thread Dustin Laurence
On Tue, Jun 06, 2006 at 12:36:42PM -0700, Peter Michael Gerdes wrote:
 
 Does Hegel actually have good arguments for his views or is he just  
 musing and throwing out ideas?  If not why should we take him seriously?

I don't think any of his patches have been accepted by GCC, so I'd say
his arguments must not be very good.  It's easy to see why: I downloaded
_Pha:nomenologie des Geistes_ from Project Gutenberg and it won't even
compile.  There are in fact an astonishing number of the most basic
syntax errors; it reads like something written by someone who didn't
know C at all.  Really atrocious coding, plus the comments are in
German.

Besides, we already have a Hegelian dialectic in GCC (C: thesis, C++:
antithesis, Java: synthesis), so what do we need him for?

Dustin


pgpcNULfgid0J.pgp
Description: PGP signature


Re: [RFC] Optimization Diary

2006-06-06 Thread Daniel Jacobowitz
On Tue, Jun 06, 2006 at 03:47:59PM -0500, Gabriel Dos Reis wrote:
 Devang Patel [EMAIL PROTECTED] writes:
 
 | [ Interestingly, there is a long standing request, here at Apple, to list
 |   command line options in object file (even when optimization is not used).
 |   One of our intern tried to put them in STABS string. It may be a good
 |   idea to use DWARF in that case also. However it is orthogonal to
 |   optimization diary. It is a good small project, if someone is
 | interested. ]
 
 I was under the impression that it was sort tkane care of by some
 patches from CodeSourcery.  Though, it is possible I may have dreamted.

Nope, it was Nick.

-- 
Daniel Jacobowitz
CodeSourcery


Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel


Is this what you want ? 


yes :)

Thanks,
-
Devang


Re: [wwwdocs] Complete revamp of our web site

2006-06-06 Thread Joe Buck
On Mon, Jun 05, 2006 at 09:53:00PM -0700, Andrew Pinski wrote:
 Also what about moving the News up to a noticeable spot since right now
 it is down in a corner so it looks out of place.  In fact on my screen
 which is set to 1024x768, I have to scroll to get to the news.

Yes, the top news needs to be on the front page, anything you have to
scroll down for effectively isn't on the front page.



Re: [RFC] Optimization Diary

2006-06-06 Thread Gabriel Dos Reis
On Tue, 6 Jun 2006, Daniel Jacobowitz wrote:

| On Tue, Jun 06, 2006 at 03:47:59PM -0500, Gabriel Dos Reis wrote:
|  Devang Patel [EMAIL PROTECTED] writes:
| 
|  | [ Interestingly, there is a long standing request, here at Apple, to list
|  |   command line options in object file (even when optimization is not 
used).
|  |   One of our intern tried to put them in STABS string. It may be a good
|  |   idea to use DWARF in that case also. However it is orthogonal to
|  |   optimization diary. It is a good small project, if someone is
|  | interested. ]
| 
|  I was under the impression that it was sort tkane care of by some
|  patches from CodeSourcery.  Though, it is possible I may have dreamted.
|
| Nope, it was Nick.

Thanks for the correction.  My apologies to Nick.

-- Gaby


Re: [RFC] Optimization Diary

2006-06-06 Thread Tom Tromey
 Devang == Devang Patel [EMAIL PROTECTED] writes:

Tom * Why put the optimization diary into the object file?

[...]

Devang 2) This info is consumed by other tools (e.g. IDE, performance
Devang analyzer).  It makes sense for a tool like Shark to use dwarf
Devang reader to get this info then parse raw text output.

Thanks, this makes sense to me.  I suggest adding this to your
document as rationale.

Tom


Re: [RFC] Optimization Diary

2006-06-06 Thread Tom Tromey
 Devang == Devang Patel [EMAIL PROTECTED] writes:

 * DW_AT_GNU_OD_cmd - it seems strange for this to be defined in terms
 of text highlighting.  Why have a separate code here for dead
 code instead of just marking a text region and having a new _msg
 value meaning dead code?

Devang In the case of dead code we could use _msg. However, _cmd is
Devang available to trigger some actions in tools that use this
Devang information. If we let our imaginations run wild then for
Devang example, lead developer towards __restrict documentation
Devang (i.e. launch lang. standard doc in one window and open
Devang particular page).

I agree, interconnections like the above are cool and useful.  But
this approach seems weird, because it is asking compiler maintainers
to decide whether a given result is a message or an action.

I think it would be more natural for the compiler to say what did or
did not happen, and then to have the IDE, or whatever, apply
interpretation to the record of the facts.  I.e., no message/action
distinction.

 What are action trails?

Devang For example, Loop A is unrolled. It is not a parameter
Devang manipulation hint, it is not a limitation and it is not a hint
Devang to developers. It is just a report of what optimizer did. This
Devang is default category.

Ok.  Why are these things stored in bits and not as a enumeration of
possible values?  Usually the use of bits implies that combinations of
them are valid, but here it sounds as though the values are actually
independent.

 How would the user find out what parameter is referred to by a
 parameter manipulation hint?  I don't see where this is recorded.

Devang This should be encoded in msg text.

You mean it is implicit in the _msg value?  If so, then the linkage
between a given _msg value and a particular option ought to be
documented.  I realize this can't be done in a DWARF spec, but it at
least needs to be done in GCC somewhere... it would be helpful to have
this spelled out.

Tom


Re: [RFC] Optimization Diary

2006-06-06 Thread Tom Tromey
 Dan == Daniel Berlin [EMAIL PROTECTED] writes:

Dan In addition to Tom's concerns, it seems to me to be a *really bad idea*
Dan to try to come up with integer values for every single message, instead
Dan of just placing a string there.

One reason to prefer the numerical approach is that it makes
localization of the user interface simpler.

Dan The easiest way there is to just put a comment before the function or
Dan whatever that generates the string saying it shouldn't be changed
Dan between versions.

We would also have to constrain the messages not to have any
printf-style substitutions, since that would be an i18n disaster.

Otherwise, yeah, I was wondering about this myself.

Tom


Re: [RFC] Optimization Diary

2006-06-06 Thread Geoffrey Keating
Daniel Berlin [EMAIL PROTECTED] writes:

 Tom Tromey wrote:
  Devang == Devang Patel [EMAIL PROTECTED] writes:
  
  Devang This version removes internal radar numbers and replaces s/
  Devang DW_AT_APPLE.../DW_AT_GNU...
  
  I read this.  I'm not anywhere near an expert in dwarf or anything
  related to this proposal, so please bear with me if I say something
  dumb :-).
  
  I do have a few questions and concerns.
  
 
 In addition to Tom's concerns, it seems to me to be a *really bad idea*
 to try to come up with integer values for every single message, instead
 of just placing a string there.

One issue here is that this interacts poorly with
internationalization.  No matter what you do, you'll need to have a
table of possible strings somewhere, so you might as well save space
by not putting it in every object file.


Re: [RFC] Optimization Diary

2006-06-06 Thread Daniel Berlin
Geoffrey Keating wrote:
 Daniel Berlin [EMAIL PROTECTED] writes:
 
 Tom Tromey wrote:
 Devang == Devang Patel [EMAIL PROTECTED] writes:
 Devang This version removes internal radar numbers and replaces s/
 Devang DW_AT_APPLE.../DW_AT_GNU...

 I read this.  I'm not anywhere near an expert in dwarf or anything
 related to this proposal, so please bear with me if I say something
 dumb :-).

 I do have a few questions and concerns.


 In addition to Tom's concerns, it seems to me to be a *really bad idea*
 to try to come up with integer values for every single message, instead
 of just placing a string there.
 
 One issue here is that this interacts poorly with
 internationalization.  
 No matter what you do, you'll need to have a
 table of possible strings somewhere, so you might as well save space
 by not putting it in every object file.

I believe this is a red herring.
We control the debug output machinery generating this, and can simply
tell it to only deal in one language.

Trying to catalogue and assign a permanent place and number to every
single optimization message a compiler can generate is a much much much
worse idea, IMHO.



Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 
 Trying to catalogue and assign a permanent place and number to every
 single optimization message a compiler can generate is a much much much
 worse idea, IMHO.

In the same way numbering warning messages is a bad idea (yes ICC and a couple
other compilers do but we should not).

-- Pinski



Re: [RFC] Optimization Diary

2006-06-06 Thread Geoffrey Keating


On 06/06/2006, at 4:58 PM, Daniel Berlin wrote:


Geoffrey Keating wrote:

Daniel Berlin [EMAIL PROTECTED] writes:


Tom Tromey wrote:

Devang == Devang Patel [EMAIL PROTECTED] writes:

Devang This version removes internal radar numbers and replaces s/
Devang DW_AT_APPLE.../DW_AT_GNU...

I read this.  I'm not anywhere near an expert in dwarf or anything
related to this proposal, so please bear with me if I say something
dumb :-).

I do have a few questions and concerns.


In addition to Tom's concerns, it seems to me to be a *really bad  
idea*
to try to come up with integer values for every single message,  
instead

of just placing a string there.


One issue here is that this interacts poorly with
internationalization.
No matter what you do, you'll need to have a
table of possible strings somewhere, so you might as well save space
by not putting it in every object file.


I believe this is a red herring.
We control the debug output machinery generating this, and can simply
tell it to only deal in one language.


I'm not concerned about what goes into the .o file, but what gets  
displayed on the screen.  We cannot tell users to deal in one  
language.



Trying to catalogue and assign a permanent place and number to every
single optimization message a compiler can generate is a much much  
much

worse idea, IMHO.


Alternatively, we could put *every* supported language into the .o  
file.  But that bloats object files even more...

smime.p7s
Description: S/MIME cryptographic signature


Re: [RFC] Optimization Diary

2006-06-06 Thread Daniel Berlin
Geoffrey Keating wrote:
 On 06/06/2006, at 4:58 PM, Daniel Berlin wrote:
 
 Geoffrey Keating wrote:
 Daniel Berlin [EMAIL PROTECTED] writes:

 Tom Tromey wrote:
 Devang == Devang Patel [EMAIL PROTECTED] writes:
 Devang This version removes internal radar numbers and replaces s/
 Devang DW_AT_APPLE.../DW_AT_GNU...

 I read this.  I'm not anywhere near an expert in dwarf or anything
 related to this proposal, so please bear with me if I say something
 dumb :-).

 I do have a few questions and concerns.


 In addition to Tom's concerns, it seems to me to be a *really bad  
 idea*
 to try to come up with integer values for every single message,  
 instead
 of just placing a string there.
 One issue here is that this interacts poorly with
 internationalization.
 No matter what you do, you'll need to have a
 table of possible strings somewhere, so you might as well save space
 by not putting it in every object file.
 I believe this is a red herring.
 We control the debug output machinery generating this, and can simply
 tell it to only deal in one language.
 
 I'm not concerned about what goes into the .o file, but what gets  
 displayed on the screen.  We cannot tell users to deal in one  
 language.
 
You still need to be able to display the message for each number in all
the languages you want, so it's going to be stored somewhere, you
haven't solved the problem, just moved it completely to the consumer.

 Trying to catalogue and assign a permanent place and number to every
 single optimization message a compiler can generate is a much much  
 much
 worse idea, IMHO.
 
 Alternatively, we could put *every* supported language into the .o  
 file.  But that bloats object files even more...

I have a very hard time believing that compiling and outputting messages
in one language, and having someone who can't read those messages
optimize and profile your application in another language, is a
significant enough use case to be worried about.

You can disagree. I'm just trying to tell you this has almost zero hope
of ever being standardized if you keep it as a bunch of numbers.

It also has almost zero hope of working over multiple compiler versions,
being future proof in general, and not having other compiler vendors
fight over message number namespace.

--Dan


Re: [RFC] Optimization Diary

2006-06-06 Thread Geoffrey Keating


On 06/06/2006, at 5:11 PM, Daniel Berlin wrote:


Geoffrey Keating wrote:

On 06/06/2006, at 4:58 PM, Daniel Berlin wrote:


Geoffrey Keating wrote:

Daniel Berlin [EMAIL PROTECTED] writes:


Tom Tromey wrote:

Devang == Devang Patel [EMAIL PROTECTED] writes:
Devang This version removes internal radar numbers and  
replaces s/

Devang DW_AT_APPLE.../DW_AT_GNU...

I read this.  I'm not anywhere near an expert in dwarf or  
anything
related to this proposal, so please bear with me if I say  
something

dumb :-).

I do have a few questions and concerns.



In addition to Tom's concerns, it seems to me to be a *really bad
idea*
to try to come up with integer values for every single message,
instead
of just placing a string there.

One issue here is that this interacts poorly with
internationalization.
No matter what you do, you'll need to have a
table of possible strings somewhere, so you might as well save  
space

by not putting it in every object file.

I believe this is a red herring.
We control the debug output machinery generating this, and can  
simply

tell it to only deal in one language.


I'm not concerned about what goes into the .o file, but what gets
displayed on the screen.  We cannot tell users to deal in one
language.

You still need to be able to display the message for each number in  
all

the languages you want, so it's going to be stored somewhere, you
haven't solved the problem, just moved it completely to the consumer.


Yes.  However, you also get smaller .o files.


Trying to catalogue and assign a permanent place and number to every
single optimization message a compiler can generate is a much much
much
worse idea, IMHO.


Alternatively, we could put *every* supported language into the .o
file.  But that bloats object files even more...


I have a very hard time believing that compiling and outputting  
messages

in one language, and having someone who can't read those messages
optimize and profile your application in another language, is a
significant enough use case to be worried about.


Right above, you said We control the debug output machinery  
generating this, and can simply tell it to only deal in one  
language.  Here, you seem to be implying that the messages should be  
localised in the language the compiler is going to output messages  
in.  I suppose you could output both, but that still bloats object  
files more than just using numbers.

smime.p7s
Description: S/MIME cryptographic signature


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 Right above, you said We control the debug output machinery  
 generating this, and can simply tell it to only deal in one  
 language.  Here, you seem to be implying that the messages should be  
 localised in the language the compiler is going to output messages  
 in.  I suppose you could output both, but that still bloats object  
 files more than just using numbers.

Just output in English and let the IDE or the other tools translate it.

-- Pinski


Re: [RFC] Optimization Diary

2006-06-06 Thread Geoffrey Keating


On 06/06/2006, at 5:20 PM, Andrew Pinski wrote:


Right above, you said We control the debug output machinery
generating this, and can simply tell it to only deal in one
language.  Here, you seem to be implying that the messages should be
localised in the language the compiler is going to output messages
in.  I suppose you could output both, but that still bloats object
files more than just using numbers.


Just output in English and let the IDE or the other tools translate  
it.


What's the difference between that and just outputting a number and  
letting the IDE or other tool translate it?  Either way, you're going  
to need a fixed set of strings or numbers to translate.

smime.p7s
Description: S/MIME cryptographic signature


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 
 
 --Apple-Mail-9--465959030
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
   charset=US-ASCII;
   delsp=yes;
   format=flowed
 
 
 On 06/06/2006, at 5:20 PM, Andrew Pinski wrote:
 
  Right above, you said We control the debug output machinery
  generating this, and can simply tell it to only deal in one
  language.  Here, you seem to be implying that the messages should be
  localised in the language the compiler is going to output messages
  in.  I suppose you could output both, but that still bloats object
  files more than just using numbers.
 
  Just output in English and let the IDE or the other tools translate  
  it.
 
 What's the difference between that and just outputting a number and  
 letting the IDE or other tool translate it?  Either way, you're going  
 to need a fixed set of strings or numbers to translate.

Say I want to add a new one, I have to go through a committee with the
number system while with a string I don't.

-- Pinski


Re: [RFC] Optimization Diary

2006-06-06 Thread Geoffrey Keating


On 06/06/2006, at 5:25 PM, Andrew Pinski wrote:


On 06/06/2006, at 5:20 PM, Andrew Pinski wrote:


Right above, you said We control the debug output machinery
generating this, and can simply tell it to only deal in one
language.  Here, you seem to be implying that the messages  
should be

localised in the language the compiler is going to output messages
in.  I suppose you could output both, but that still bloats object
files more than just using numbers.


Just output in English and let the IDE or the other tools translate
it.


What's the difference between that and just outputting a number and
letting the IDE or other tool translate it?  Either way, you're going
to need a fixed set of strings or numbers to translate.


Say I want to add a new one, I have to go through a committee with the
number system while with a string I don't.


I don't see how making it a string makes this different.  Either your  
new string will be a standard string or it won't.  Either your new  
number will be a standard number or it won't.  If you want it to be  
standard, you have to go through the committee.

smime.p7s
Description: S/MIME cryptographic signature


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski
 I don't see how making it a string makes this different.  Either your  
 new string will be a standard string or it won't.  Either your new  
 number will be a standard number or it won't.  If you want it to be  
 standard, you have to go through the committee.

I don't understand why it has to be a standard string/message.
Yes there could be some base set of messages.  Also with the number
system, you have to update the IDE when news ones get added while
with the message way you don't unless you want to translate it to
another language.

-- Pinski


Re: which cctool on Darwin?

2006-06-06 Thread Jack Howarth
   I believe I may have discovered the component that was causing the
c++ regressions I was seeing on Darwin when fink was sourced. I have
found that after I deinstalled bison v2.1 installed by fink, I was
able to build gcc trunk on MacOS X 10.4 with fink sourced and still
pass the c++ testsuite properly. I have built bison v2.3 and will
see if that shows the same behavior as v2.1.
   Have there been any reports of problems with bison v2.1 and gcc
trunk?
  Jack


Re: [RFC] Optimization Diary

2006-06-06 Thread Daniel Jacobowitz
On Tue, Jun 06, 2006 at 05:36:33PM -0700, Geoffrey Keating wrote:
 I don't see how making it a string makes this different.  Either your  
 new string will be a standard string or it won't.  Either your new  
 number will be a standard number or it won't.  If you want it to be  
 standard, you have to go through the committee.

In practice, using string identifiers does make conflicts less likely.
It's also easier for a vendor to pick a unique prefix and be confident
that Apple isn't going to assign some other meaning to
csl-inline-bart.

-- 
Daniel Jacobowitz
CodeSourcery


Re: TLS on windows (was: Re: Gfortran on Windows (mingw32) with OpenMP)

2006-06-06 Thread Henry Kar Ming Chan
Hi, all,

After I refer to the Intel paper titled Threading
Methodology : Principles and Practices versin 2.0
published in 2003, I note the following message in the
article mentioning:(from page 22, web site :
http://cache-www.intel.com/cd/00/00/21/93/219349_threadingmethodology.pdf)

_
OpenMP and thread libraries have mechanisms to create
thread-local storage. Threads can safely access this
storage without synchronization. Use the following
declarations to create thread-local storage in
different threading models:
• In OpenMP use threadprivate
• In Win32, use the TlsAlloc() function
• In Pthreads, use the pthread_key_create function
__

From the above description, I think that gfortran
with OpenMP compiler can also implemented the TLS
using Win32 threads or Pthreads.

Please comment on the above implementation methods.

Thanks.

Best regards,
Henry Kar Ming Chan
 
--- FX Coudert [EMAIL PROTECTED] wrote:

 [First, a warning: I'm neither an expert in TLS, nor
 in Windows nor  
 in GCC guts
 
  can we have chance to solve the
  problem of threadprivate by adding the TLS support
 to
  mingw32?
 
 The support for TLS (Thread Local Storage) would
 probably come from  
 the compiler itself. Windows has TLS (see for
 example http:// 

dotnet.di.unipi.it/Content/sscli/docs/doxygen/pal/localstorage_8c-
 
 source.html and
 http://www.ddj.com/dept/cpp/184403874, or the MSDN  
 documentation at
 http://msdn.microsoft.com/library/default.asp?url=/ 
 library/en-us/dllproc/base/tlsalloc.asp), so you'd
 only need to  
 teach GCC how to call that.
 
 Now, I don't have competence, time and motivation to
 do that. So, if  
 my analysis above is correct, there are three things
 you can do: ask  
 around here if someone is interested in this and is
 planning to do  
 it; do it yourself, if you have the competence; find
 someone you  
 know, that you have leverage on, to do it :)
 
 Now, for an idea of how much work it represents...
 perhaps someone  
 here can tell us?
 
 FX
 


Send instant messages to your online friends http://uk.messenger.yahoo.com 


Re: Modifying ARM code generator for elimination of 8bit writes - need help

2006-06-06 Thread Wolfgang Mües
Rask,

On Tuesday 06 June 2006 21:33, Rask Ingemann Lambertsen wrote:
   +   swp%?b\\t%1, %1, %0\;ldr%?b\\t%1, %0
 
  You should get a price for cleverness here!

 Thanks! Indeed it looks good until you think of volatile variables.

Because volatile variables can change their values from another thread, 
and the readback will be false. Oh.

gcc knows the volatile attribute here, I assume?

  As far as I can tell now, this works good. But I think there are
  many cases in which the source operand is not needed after the
  store. Is there a possibility to clobber the source operand and not
  using another register?

 I don't know if (match_scratch ...) might reuse the source operand.
 It can be attempted more specifically with an additional peephole
 definition:

 (define_peephole2
   [(set (match_operand:QI 0 memory_operand )
 (match_operand:QI 1 register_operand ))]
   TARGET_ARM  TARGET_SWP_BYTE_WRITES  peep2_reg_dead_p (1,
 operands[1]) [(parallel
 [(set (match_dup 0) (match_dup 1))
  (clobber (match_dup 1))]
   )]
 )

I will try this.

 Yet another register which stands a good chance of being reusable is
 the register containing the address.

Yes, but that is not allowed according to the specification of the swp 
instruction. The address register must be different from the other 2 
registers. Is there any chance of gcc violating this constraint? 

regards
Wolfgang
-- 
We're back to the times when men were men 
and wrote their own device drivers.

(Linus Torvalds)


Re: [RFC] Optimization Diary

2006-06-06 Thread Devang Patel

Andrew Pinski wrote:


On Jun 6, 2006, at 9:49 PM, Devang Patel wrote:

We can allocate space in numbering for vendor extensions.


What happens when you compile two sources with two different compilers 
and they
use the same number for vendor extension?  


What happens when another compiler uses 0x4104 TAG value for
something else and GCC uses it for DW_TAG_GNU_BINCL ?

You just end up with weird results
in the IDE or performance analysis program.
Also what happens after you fill up the vendor extension range?

What happens when vendor extension range for TAGs and Attributes are full ?

Also what happens when you change your compiler but not IDE, but you 
don't

want to update the IDE?

What happens when GCC adds new DWARF extension but you do not want
to update GDB ?

-
Devang


Re: [RFC] Optimization Diary

2006-06-06 Thread Andrew Pinski


On Jun 6, 2006, at 10:34 PM, Devang Patel wrote:


Andrew Pinski wrote:


On Jun 6, 2006, at 9:49 PM, Devang Patel wrote:

We can allocate space in numbering for vendor extensions.


What happens when you compile two sources with two different  
compilers and they

use the same number for vendor extension?


What happens when another compiler uses 0x4104 TAG value for
something else and GCC uses it for DW_TAG_GNU_BINCL ?


Not my fault and not really related because we are creating a new  
standard and

don't want to repeat this mistake, messages don't have this issue.


You just end up with weird results
in the IDE or performance analysis program.
Also what happens after you fill up the vendor extension range?
What happens when vendor extension range for TAGs and Attributes  
are full ?


Who cares, we are trying making something which is useful and not  
making something which

is going to be limited.

Also what happens when you change your compiler but not IDE, but  
you don't

want to update the IDE?

What happens when GCC adds new DWARF extension but you do not want
to update GDB ?


Again, we are trying to make something useful and extendable. If you  
don't

care about usefulness and extendibility then go ahead and use numbers.

Having the message gets rid of having duplicated code in each program  
that processes

the numbers, you have the message right away without doing extra work.

You really should listen to Daniel Berlin if you ever want this to be  
officially
part of the dwarf2 standard.  Remember he is part of the committee  
there.


You get extendibility for free and no need to change the IDE every  
thing you want to
add a new diary entry.  What more do you want something for free or  
something which
limits the use?  If you want something which is limited you may as  
well then just not

use dwarf2 and instead write out a text file.

-- Pinski


[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #7 from paul dot richard dot thomas at cea dot fr  2006-06-06 
06:13 ---
Subject: RE:  ICE on complex assignment

FX,


 Paul, I'm adding you to the CC list since this looks fully 
 module-related.


Oh Gee, thanks - that's all I need!..

I'll take a look at it this morning.

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27889



[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-06-06 06:15 ---
(In reply to comment #7)
  Paul, I'm adding you to the CC list since this looks fully 
  module-related.
 
 
 Oh Gee, thanks - that's all I need!..

Look at my C example, it is not related to Fortran at all. :).  So you don't
need to look into it :).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27889



[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #9 from paul dot richard dot thomas at cea dot fr  2006-06-06 
06:18 ---
Subject: RE:  [4.1/4.2 Regression] ICE on complex assignment in nested function

Andrew,

Thanks, I just went at the mail in the wrong order.  I discovered that it is
not fortran by peaking at the PR.  

Who knows, maybe I can fix a C bug too?

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27889



[Bug libgcj/27908] VMSecureRandom generateSeed infinite loop? (Regression)

2006-06-06 Thread csm at gnu dot org


--- Comment #1 from csm at gnu dot org  2006-06-06 06:42 ---
This is apparently caused by the default implementation of VMSecureRandom,
which uses some threads concurrently modifying counters, and uses those
counters to construct random bytes.

It's odd that on GCJ this runs so slow; using the jamvm interpreter I didn't
notice that much of a lag (on a fast machine, sure, but I wouldn't think that
on any reasonably modern machine someone would get bothered enough to file a
bug).


-- 

csm at gnu dot org changed:

   What|Removed |Added

 CC||csm at gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-06 06:42:00
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27908



[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #10 from paul dot richard dot thomas at cea dot fr  2006-06-06 
06:47 ---
Noting the non-fortran tilt on this, it is interesting that

  implicit COMPLEX (a-z)
  CALL foo
CONTAINS
  SUBROUTINE foo
t = s + s
  END SUBROUTINE foo
END

is OK and produces declarations for s and t in foo.  Alternatively, declaring s
and t in foo also works.

However,

  COMPLEX s, t
  CALL foo
CONTAINS
  SUBROUTINE foo
t = s + s
  END SUBROUTINE foo
END

puts the declarations in MAIN__, thusly:

foo ()
{
  t = s + s;


MAIN__ ()
{
  complex4 s;
  complex4 t;
  static void foo (void);

  _gfortran_set_std (70, 127, 0);
  foo ();
}

and triggers the ICE for any optimization level.  In fortran parlance, it is
host or use association of the complex type that is broken.

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27889



[Bug middle-end/27909] emacs M-x is undefined

2006-06-06 Thread happyarch at gmail dot com


--- Comment #2 from happyarch at gmail dot com  2006-06-06 07:13 ---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26561

 --- Comment #6 From Serge Belyshev  2006-03-08 12:46   ---

This bug prevents emacs from working, it says M-x is undefined.



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27909



[Bug middle-end/27909] emacs M-x is undefined

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-06-06 07:19 ---
(In reply to comment #2)
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26561

That bug was fixed 3 months ago so that is not the bug.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27909



[Bug java/27910] New: building fails due essentially to bad /bin/ksh on darwin

2006-06-06 Thread Denis dot Excoffier at airbus dot com
In order to build correctly in libjava and libjava/classpath, i had to:
1) in libjava/classpath/lib/Makefile.gcj, replace $(SHELL) by /bin/sh
2) in libjava/classpath/lib/gen-classlist.sh.in, replace the four occurrences
of while read pkg file with an appropriate awk sentence (eg for the first
one: awk '{ pkg=$1; file=$2; printf(%s %s %s/%s\n, pkg, dir, pkg, file); }'
[EMAIL PROTECTED]@ -)
3) in libjava/Makefile.in, replace cat tmp-ilist | while read f; do with for
f in `cat tmp-ilist`; do

It seems that the read built-in in darwin ksh does not read a line, but 4096
bytes.


-- 
   Summary: building fails due essentially to bad /bin/ksh on darwin
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Denis dot Excoffier at airbus dot com
 GCC build triplet: powerpc-apple-darwin8.2.2
  GCC host triplet: powerpc-apple-darwin8.2.2
GCC target triplet: powerpc-apple-darwin8.2.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27910



[Bug libgcj/27910] building fails due essentially to bad /bin/ksh on darwin

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-06 08:08 ---
Why are you trying to build with /bin/ksh?  That is just wrong.

How is ${SHELL} is being set to /bin/ksh anyways, SHELL is set by MAKE to
/bin/sh by default unless someone else overrides it.

Did you set CONFIG_SHELL before building GCC?


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
  Component|java|libgcj


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27910



[Bug libgcj/27910] building fails due essentially to bad /bin/ksh on darwin

2006-06-06 Thread Denis dot Excoffier at airbus dot com


--- Comment #2 from Denis dot Excoffier at airbus dot com  2006-06-06 08:33 
---
Oops, i've found an unnoticed CONFIG_SHELL=/bin/ksh around the configure step
in my build instructions. Sorry for that. Bug is not confirmed any longer.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27910



[Bug libgcj/27910] building fails due essentially to bad /bin/ksh on darwin

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-06-06 08:37 ---
Ok, closing as invalid, you might also want to report to Apple that ksh does
not work correctly for POSIX cases.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27910



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread rsandifo at gcc dot gnu dot org


--- Comment #7 from rsandifo at gcc dot gnu dot org  2006-06-06 08:54 
---
Based on David's descripion, a reduced testcase appears to be:

static short f[100];
int
bar (void)
{
  return f[0];
}
void
foo (void)
{
  int i;
  for (i = 0; i  100; i++)
f[i]++;
}

Looking at the assembly output of -O2 -ftree-vectorize -maltivec
-mabi=altivec, it seems that f will only be guaranteed 2-byte
alignment with -fsection-anchors.  Without -fno-section-anchors,
f gets the expected 16-byte alignment.

This is an ordering problem.  gcc is compiling bar() first, and
generating code on the assumption that f has natural alignment.
The vectoriser then increases the alignment of f, which throws
off any layout based on the original natural alignment.

If bar() is compiled first, then gcc really does need to be able to
place f at a fixed offset in its section, so that it can use section
anchors to access f.  So I think the possible fixes are:

  (1) Don't use section anchors for f in bar()
  (2) Don't increase the alignment of f in foo()
  (3) Increase the alignment of f before compiling either foo() or bar()

(1) implies either (1a) not using section anchors for vectorisable variables
or (1b) disabling -fsection-anchors when -ftree-vectorize is in effect.

(2) implies either (2a) not increasing the alignment of variables that have
already been assigned a block offset or (2b) preventing -ftree-vectorize
from increasing alignment when -fsection-anchors is in effect.

(3) implies increasing the alignment of all vectorisable variables if
both -fsection-anchors and -ftree-vectorize are in effect.

Neither (2a) nor (2b) is acceptable IMO.  (I don't think (2a) is
acceptable because the order of compilation is not guaranteed.)
(1) is a worst-case fall-back position, with (1a) obviously being
better than (1b).  (3) seems more appealing, but only if we accept
that -fsection-anchors -ftree-vectorize may increase the alignment
of variables that do not in fact get vectorised.  This is going to
be a data size hit.  (Hopefully it will only be a small hit, and
I suppose -ftree-vectorize is already a speed over size
optimisation.)

If we choose (1) or (3), I suppose we should also add a gcc_assert()
that the vectoriser is not increasing the alignment of a variable
that has already been placed in a block (i.e. assert that (2a) would
then be a no-op).

Richard


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug rtl-optimization/27872] Internal compiler error in verify_loop_structure

2006-06-06 Thread rakdver at gcc dot gnu dot org


--- Comment #3 from rakdver at gcc dot gnu dot org  2006-06-06 09:02 ---
Patch: http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00284.html


-- 

rakdver at gcc dot gnu dot org changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2006-
   ||06/msg00284.html
   Keywords||patch


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27872



[Bug libstdc++/27904] operator to floating point variable does not support inf, infinity, or nan

2006-06-06 Thread pcarlini at suse dot de


--- Comment #11 from pcarlini at suse dot de  2006-06-06 09:36 ---
(In reply to comment #10)
 In C90 strtod does not say anything specifically about inf, etc.  However, 
 it
 does say:
 
 In other than the C locale, additional implementation-defined subject
 sequence forms may be accepted.
 
 In any case, to me this is a quality of implementation issue.  A good
 implementation will accept inf, infinity and nan.

Honestly, given also all the text in the C++03 standard I do not agree:
currently we are not entitled to parse such strings, because they are not
conforming to the grammar and to the text of Stage2. We must fail (as all the
other implementations I'm aware of are doing). If you disagree, please file the
issue as a DR, but...

  The fact that C99
 explicitly accepts them seems sufficient justification to me.

Sure, that is a very meaninful enhancement, which falls in the
C99-compatibility area (already very active, see all the material coming from
TR1) and should (will) be discussed in the context of the next standard
(C++0x). More exactly, I reported already that the issue is known by Martin at
least (I trust him about this section of the standard), but at this stage the
policy is that reporting DRs for new features is not the best way to proceed.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27904



[Bug rtl-optimization/26449] [4.2 Regression] ICE with -march=pentium4 -ftree-vectorize in matmul_i4.c in loop invariant motion

2006-06-06 Thread rakdver at gcc dot gnu dot org


-- 

rakdver at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rakdver at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-02-24 10:46:37 |2006-06-06 09:59:39
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26449



[Bug fortran/18111] spurious warnings with -W -Wunused

2006-06-06 Thread martin at mpa-garching dot mpg dot de


--- Comment #12 from martin at mpa-garching dot mpg dot de  2006-06-06 
10:10 ---
This is now open since more than a year.
Is there any hope of getting it fixed for gfortran 4.2?
Correct uninitialized warnings are a very desirable feature IMO
and have always been a stron point in gcc.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18111



[Bug fortran/18111] spurious warnings with -W -Wunused

2006-06-06 Thread martin at mpa-garching dot mpg dot de


--- Comment #13 from martin at mpa-garching dot mpg dot de  2006-06-06 
10:11 ---
(In reply to comment #12)
 Correct uninitialized warnings are a very desirable feature IMO

Sorry, I meant unused of course :(


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18111



[Bug fortran/25923] [gfortran] garbled diagnostics with -O -Wuninitialized

2006-06-06 Thread martin at mpa-garching dot mpg dot de


--- Comment #2 from martin at mpa-garching dot mpg dot de  2006-06-06 10:14 
---
Is it possible to fix this before gcc 4.2?
Whenever I see these garbled warnings I have a very bad feeling that
something completely unintended is happening inside the compiler,
and I guess that many users could feel the same way.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25923



[Bug fortran/24168] Problems with SPREAD and/or scalarization

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #2 from paul dot richard dot thomas at cea dot fr  2006-06-06 
10:26 ---
Created an attachment (id=11607)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11607action=view)
Patch and testcase for the PR

The problem lay in simplification of the binary expression because the rank of
the operands was not transferred.

I will submit tonight.

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24168



[Bug bootstrap/27901] ICE: On second stage boostrap with -O3

2006-06-06 Thread paulg at chiark dot greenend dot org dot uk


--- Comment #3 from paulg at chiark dot greenend dot org dot uk  2006-06-06 
11:16 ---
Tried the following

1) Bootstrap GCC 4.1.1 using a GCC 3.4.4 host compiler without STAGE1_CFLAGS or
BOOT_CFLAGS set.

2) Bootstrap another clean copy of GCC 4.1.1 using the GCC 4.1.1 from step (1)
as the host compiler using STAGE1_CFLAGS=-O3 -fomit-frame-pointer
BOOT_CFLAGS=-O3
-fomit-frame-pointer.

This fails in the same way which suggests that the bug causing this is still
present in GCC 4.1.1


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27901



[Bug rtl-optimization/21676] [4.0/4.1/4.2 Regression] Optimizer regression: SciMark sparse matrix benchmark

2006-06-06 Thread gcc at pdoerfler dot com


--- Comment #3 from gcc at pdoerfler dot com  2006-06-06 11:22 ---
I get the following with -O3 -march=pentium4 -fomit-frame-pointer on a pentium4
gentoo machine:

gcc-3.4.6   gcc-4.0.2   gcc-4.1.1
2.69s   4.14s   3.26s

These are all with gentoo's patches.
Also, current mainline is the same as gcc-4.1.1

I can confirm that the difference without -fomit-frame-pointer is much smaller.
In fact, 3.4.6 and 4.1.1 are almost the same without it. 


-- 

gcc at pdoerfler dot com changed:

   What|Removed |Added

 CC||gcc at pdoerfler dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21676



[Bug fortran/16206] rejects valid array initialization expression

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #4 from paul dot richard dot thomas at cea dot fr  2006-06-06 
11:46 ---
(In reply to comment #3)
 This bug report is approaching its second anniversary.
 Does anybody still watch it or take care?

Yes, Harald.  I have been looking these last days at a number of array
initializer problems.

I have not entirely decided how to do this one yet:
(i) Blasting through and expanding the array setion is one way; or
(ii) Doing as Erik Edelmann suggested in another PR; use a normal assignment
for the initialization and a static flag to make sure that it only is done
once.

The first is consistent with the existing structure and the second can be used
to simplify a lot but will be much more work.  This is why I am looking at
initializer PRs as a package.

Paul


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16206



[Bug fortran/27916] New: Problem with allocatable arrays inside OpenMP do loop

2006-06-06 Thread benjamin dot reveille at gmail dot com
I've stumbled on a gfortran Fortran runtime error when using allocatable
arrays inside OpenMP PARALLEL DO LOOPS

Consider the folowing reduced testcase.

  cat allocate_in_loop.f90
program allocate_in_loop
  use omp_lib, only: omp_get_num_threads,omp_get_thread_num
  implicit none
  integer :: numthreads,n,it,i
  integer, dimension(:), allocatable :: int_array
  !
!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(4)
   numthreads=omp_get_num_threads()
!$OMP DO PRIVATE(n,it,int_array,i) SCHEDULE(static)
  do n=1,numthreads
 it=omp_get_thread_num()
 allocate(int_array(3))
do i=1,3
   int_array(i)=(it)*100+i
   write(*,'(a,i2,a,i1,a,i4)') 'thread :',it,' --int_array(', 
   i,')=',int_array(i)
end do
 deallocate(int_array)
  end do
!$OMP END DO
!
!$OMP END PARALLEL
end program allocate_in_loop


According to what I read in the OpenMP 2.5 Specification - in sections 2.8.3.3
page 75 - the usage of the allocatable array is correct since I allocate it and
deallocate inside the OMP loop and it is not allocated upon entering the OMP DO
loop.

Gfortran compile fine with
 gfortran -fopenmp allocate_in_loop.f90
But fails on execution with: Fortran runtime error: Attempting to allocate
already allocated array.


intel 9.1, pgi 6.1 and xl do fine, the output being for example...
  ./a.out
thread : 0 -- int_array(1)=   1
thread : 0 -- int_array(2)=   2
thread : 0 -- int_array(3)=   3
thread : 1 -- int_array(1)= 101
thread : 1 -- int_array(2)= 102
thread : 1 -- int_array(3)= 103
thread : 2 -- int_array(1)= 201
thread : 2 -- int_array(2)= 202
thread : 2 -- int_array(3)= 203
thread : 3 -- int_array(1)= 301
thread : 3 -- int_array(2)= 302
thread : 3 -- int_array(3)= 303

Good bug squashing

Benjamin


-- 
   Summary: Problem with allocatable arrays inside OpenMP do loop
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: benjamin dot reveille at gmail dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27916



[Bug fortran/27916] Problem with allocatable arrays inside OpenMP do loop

2006-06-06 Thread benjamin dot reveille at gmail dot com


--- Comment #1 from benjamin dot reveille at gmail dot com  2006-06-06 
12:01 ---
For the fortran mailing list thread on this bug see:
http://gcc.gnu.org/ml/fortran/2006-06/msg00096.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27916



[Bug target/27390] [4.2 Regression] gcc.target/x86_64/abi/test_complex_returning.c execution fails at -O0

2006-06-06 Thread bonzini at gnu dot org


--- Comment #14 from bonzini at gnu dot org  2006-06-06 12:10 ---
Patch pr27390-more.patch was bootstrapped/regtested and the approach was
confirmed to be ok by Roger.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27390



[Bug fortran/27885] FAIL: libgomp.fortran/vla[1-7].f90 -O0 (test for excess errors)

2006-06-06 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #4 from dave at hiauly1 dot hia dot nrc dot ca  2006-06-06 
12:14 ---
Subject: Re:  FAIL: libgomp.fortran/vla[1-7].f90  -O0  (test for excess errors)

 I wonder what outmode is in emit_library_call_value_1:
   tfom = lang_hooks.types.type_for_mode (outmode, 0);
 
 I might have a look to later during the weekend if I my move goes smooth.

If I recall correctly, it is TImode, and NULL_TREE is returned.

Dave


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27885



[Bug ada/27769] cross-gnatmake needs host gcc

2006-06-06 Thread guerby at gcc dot gnu dot org


--- Comment #13 from guerby at gcc dot gnu dot org  2006-06-06 12:37 ---
Subject: Bug 27769

Author: guerby
Date: Tue Jun  6 12:37:01 2006
New Revision: 114429

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114429
Log:
2006-06-06  Laurent GUERBY  [EMAIL PROTECTED]

PR ada/27769
mlib-utl.adb: Use Program_Name.



Modified:
trunk/gcc/ada/ChangeLog
trunk/gcc/ada/mlib-utl.adb


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27769



[Bug ada/27769] cross-gnatmake needs host gcc

2006-06-06 Thread guerby at gcc dot gnu dot org


--- Comment #14 from guerby at gcc dot gnu dot org  2006-06-06 12:38 ---
Subject: Bug 27769

Author: guerby
Date: Tue Jun  6 12:37:36 2006
New Revision: 114430

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114430
Log:
2006-06-06  Laurent GUERBY  [EMAIL PROTECTED]

PR ada/27769
mlib-utl.adb: Use Program_Name.



Modified:
branches/gcc-4_1-branch/gcc/ada/ChangeLog
branches/gcc-4_1-branch/gcc/ada/mlib-utl.adb


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27769



[Bug ada/27769] cross-gnatmake needs host gcc

2006-06-06 Thread laurent at guerby dot net


--- Comment #15 from laurent at guerby dot net  2006-06-06 12:43 ---
Should be fixed now.


-- 

laurent at guerby dot net changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27769



[Bug target/26051] [4.2 Regression] libgcc_s.so.1 causes SEGV on Solaris 10/x86

2006-06-06 Thread ro at techfak dot uni-bielefeld dot de


--- Comment #3 from ro at techfak dot uni-bielefeld dot de  2006-06-06 
12:54 ---
Subject: Re:  [4.2 Regression] libgcc_s.so.1 causes SEGV on Solaris 10/x86

steven at gcc dot gnu dot org writes:

 Rainer, there is no test case and no description for how to reproduce this. 

I couldn't find a smaller testcase, unfortunately.

 But is this still an issue at all?  You seem to be able to report Solaris 10
 test results, e.g. 
 http://gcc.gnu.org/ml/gcc-testresults/2006-06/msg00113.html,
 for mainline.

True: recent mainline bootstraps don't show this issue any longer.

Rainer


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26051



[Bug middle-end/27909] emacs M-x is undefined

2006-06-06 Thread happyarch at gmail dot com


--- Comment #4 from happyarch at gmail dot com  2006-06-06 13:02 ---
Weird, it doesn't fixed.
my gcc version is
4.2.0 20060603 (experimental)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27909



[Bug bootstrap/27918] New: stage2 failed: broken linking / Relocations in generic ELF (EM: 62)

2006-06-06 Thread pluto at agmk dot net
make boostrap

(...)
stage1/xgcc -Bstage1/
-B/local/devel/toolchain41/sparc-sun-solaris2.9/sparc-sun-solaris2.9/bin/   -g
-O2 -DIN_GCC -DCROSS_COMPILE  -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros
-Wold-style-definition -Wmissing-format-attribute -DHAVE_CONFIG_H
-DGENERATOR_FILE  -o build/genmodes \
 build/genmodes.o build/errors.o
../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
/local/devel/toolchain41/sparc-sun-solaris2.9/bin/sparc-sun-solaris2.9-ld:
   ../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a(hashtab.o):
   Relocations in generic ELF (EM: 62)
/local/devel/toolchain41/sparc-sun-solaris2.9/bin/sparc-sun-solaris2.9-ld:
   ../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a(hashtab.o):
   Relocations in generic ELF (EM: 62)
/local/devel/toolchain41/sparc-sun-solaris2.9/bin/sparc-sun-solaris2.9-ld:
   ../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a(hashtab.o):
   Relocations in generic ELF (EM: 62)
/local/devel/toolchain41/sparc-sun-solaris2.9/bin/sparc-sun-solaris2.9-ld:
   ../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a(hashtab.o):
   Relocations in generic ELF (EM: 62)
../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a:
   could not read symbols: File in wrong format


note that `make all` works fine.


-- 
   Summary: stage2 failed: broken linking / Relocations in generic
ELF (EM: 62)
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
 GCC build triplet: x86_64-linux
  GCC host triplet: x86_64-linux
GCC target triplet: sparc-sun-solaris2.9


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27918



[Bug fortran/23091] ICE in gfc_trans_auto_array_allocation

2006-06-06 Thread paul dot richard dot thomas at cea dot fr


--- Comment #9 from paul dot richard dot thomas at cea dot fr  2006-06-06 
14:06 ---
Created an attachment (id=11608)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11608action=view)
Patch for this and PR27583

This needs cleaning up and a testcase writing but it is nearly there.

Paul 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23091



[Bug libgcj/27890] [4.2 regression] lib/logging.properties pollutes common namespace

2006-06-06 Thread fitzsim at redhat dot com


--- Comment #6 from fitzsim at redhat dot com  2006-06-06 14:07 ---
On the JDK lib files are stored in $JAVA_HOME/jre/lib.  I've recently moved
some files, like libjawt.so, that would conflict for multiple, parallel libgcj
installations to the same prefix, to $(libdir)/gcj-$(gcc_version).  I think we
should move all such files there, and that directory should be libgcj's
equivalent to the JDK's $JAVA_HOME/jre/lib.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27890



[Bug target/27918] stage2 failed: wrong compiler used for host genmodes.

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-06 14:12 ---
make boostrap

This is invalid, you are trying to bootstrap a cross compiler which will never
work.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|bootstrap   |target
 Resolution||INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27918



[Bug c++/27722] [4.0 regression] ICE incrementing an array

2006-06-06 Thread reichelt at gcc dot gnu dot org


--- Comment #5 from reichelt at gcc dot gnu dot org  2006-06-06 14:21 
---
Btw, the fix for PR27804 fixed the problem on mainline before Mark's patch
went in. (This might be interesting for a backport to the 4.0 branch.)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27722



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-06-06 14:26 ---
What about instead of absolute numbers doing label subtraction for section
anchors and then we can defer the decision for the layout of the section until
after all functions are done compiling?


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-06 14:26:11
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug testsuite/26614] make check fails during fixincludes testing.

2006-06-06 Thread tomdkat at comcast dot net


--- Comment #2 from tomdkat at comcast dot net  2006-06-06 14:34 ---
I do not get this problem with gcc 4.1.1.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26614



[Bug middle-end/27793] [4.1 Regression] num_ssa_names inconsistent or immediate use iterator wrong

2006-06-06 Thread amacleod at redhat dot com


--- Comment #13 from amacleod at redhat dot com  2006-06-06 14:43 ---
Created an attachment (id=11609)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11609action=view)
assert to add if Jakub's idea is implemented.

So do you want to fix it Jakub's way instead of hacking up the tree optimizer?
or would you still prefer to simply apply my patch for now in 4.1 and 4.2?

If/when Jakub's suggestion is implemented, I suggest adding the following
assert so you will know you have actually fixed it.  This assert will trigger
whenever there is a duplicate DECL_UID on a  variable.  It triggers on
testcases from both this PR and 26757.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27793



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread richard at codesourcery dot com


--- Comment #9 from richard at codesourcery dot com  2006-06-06 15:02 
---
Subject: Re:  [4.2 Regression] wrong code in spec tests for -ftree-vectorize
-maltivec

pinskia at gcc dot gnu dot org [EMAIL PROTECTED] writes:
 What about instead of absolute numbers doing label subtraction for
 section anchors and then we can defer the decision for the layout of
 the section until after all functions are done compiling?

I don't think symbolic offsets would work, if that's what you mean.
We need to know the constant offset so that (a) we can enforce
TARGET_{MIN,MAX}_ANCHOR_OFFSET (which is more important for other
targets than it is for PowerPC) and (b) we know for PowerPC-like
setups whether the offset needs an addis.

Richard


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread dje at gcc dot gnu dot org


--- Comment #10 from dje at gcc dot gnu dot org  2006-06-06 15:10 ---
The auto-vectorizer is a Tree-SSA pass.  The section anchors are an RTL pass. 
I do not understand why the alignment of the vectorized variables is not known
at section anchor creation time.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread richard at codesourcery dot com


--- Comment #11 from richard at codesourcery dot com  2006-06-06 15:16 
---
Subject: Re:  [4.2 Regression] wrong code in spec tests for -ftree-vectorize
-maltivec

dje at gcc dot gnu dot org [EMAIL PROTECTED] writes:
 The auto-vectorizer is a Tree-SSA pass.  The section anchors are an
 RTL pass.  I do not understand why the alignment of the vectorized
 variables is not known at section anchor creation time.

The rtl optimisations for bar() precede the tree optimisations
for foo().

Richard


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread pinskia at gcc dot gnu dot org


--- Comment #12 from pinskia at gcc dot gnu dot org  2006-06-06 15:18 
---
(In reply to comment #10)
 The auto-vectorizer is a Tree-SSA pass.  The section anchors are an RTL pass. 
 I do not understand why the alignment of the vectorized variables is not known
 at section anchor creation time.

Because we decided while processing with the first function that the alignment
for the variable is set.
And we do tree and rtl intermixed when processing functions so we look at f's
alignment during processing bar and then we change it during foo.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread dje at gcc dot gnu dot org


--- Comment #13 from dje at gcc dot gnu dot org  2006-06-06 15:22 ---
We're performing the auto-vectorization in unit-at-a-time-mode, so maybe we
need to recompile the other functions.  It seems that we're going to encounter
more problems along these lines with LTO.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug c++/26965] [4.0/4.1/4.2 Regression] Unnecessary debug info for unused consts in C++

2006-06-06 Thread ian at airs dot com


--- Comment #8 from ian at airs dot com  2006-06-06 15:42 ---
As I mentioned in the original submission, I'm pretty sure it is caused by
RTH's patch for PR 23190.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26965



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread richard at codesourcery dot com


--- Comment #14 from richard at codesourcery dot com  2006-06-06 15:53 
---
Subject: Re:  [4.2 Regression] wrong code in spec tests for -ftree-vectorize
-maltivec

dje at gcc dot gnu dot org [EMAIL PROTECTED] writes:
 We're performing the auto-vectorization in unit-at-a-time-mode, so
 maybe we need to recompile the other functions.  It seems that we're
 going to encounter more problems along these lines with LTO.

Well, I'm not convinced recompilation is the way to go.  I can't imagine
it scaling well in pathological cases.  If we're talking about long-term
fixes, I think we should just make sure that we vectorise all functions
before applying rtl optimisations to any of them.  But that's all moot
anyway: either approach will take a long time to implement.  (Note that,
as things stand, we've already written out the asm code for bar() by the
time we vectorise foo().)

As far as 4.2 fixes go, does anyone disagree with my earlier comment?

Richard


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



[Bug libobjc/13946] ObjC configured --with-objc-gc needs external Boehm gc

2006-06-06 Thread ayers at gcc dot gnu dot org


--- Comment #7 from ayers at gcc dot gnu dot org  2006-06-06 16:05 ---
Subject: Bug 13946

Author: ayers
Date: Tue Jun  6 16:05:47 2006
New Revision: 114435

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114435
Log:
2006-06-06  David Ayers  [EMAIL PROTECTED]

PR libobjc/13946
* Makefile.def: Add dependencies for libobjc which boehm-gc.
* Makefile.in: Regenerate.
* configure.in: Add --enable-objc-gc at toplevel and have it
enable boehm-gc for Objective-C.
Remove target-boehm-gc from libgcj.
Add target-boehm-gc to target_libraries.
Add target-boehm-gc to noconfigdirs where ${libgcj}
is specified.
Assert that boehm-gc is supported when requested for Objective-C.
Only build boehm-gc if needed either for Java or Objective-C.
* configure: Regenerate.


Modified:
trunk/ChangeLog
trunk/Makefile.def
trunk/Makefile.in
trunk/configure
trunk/configure.in


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13946



[Bug target/27770] [4.2 Regression] wrong code in spec tests for -ftree-vectorize -maltivec

2006-06-06 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2006-06-06 16:35 
---
For other reasons it would be nice to be able to place sync points in the
pass schedule where we re-start with going over all functions for the remaining
passes. Per function SSA form is requires for this, though, and possibly more
(like per function alias info).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27770



  1   2   >