Porting gcj to i386-darwin

2006-03-10 Thread Sandro Tolaini
Hi everyone, I would like to port gcj/libgcj to i386-darwin. Is there  
someone already working on that?


Considering that powerpc-darwin is a supported platform, it should  
not prove to be too hard. However, I need some hints on how to  
proceed. At configure phase, GCC woes for:


target-libmudflap
target-libffi
target-boehm-gc
target-zlib
target-libjava
target-libada
gnattools
target-libgfortran

The last 3 items should not really be needed for gcj. Let examine the  
others:


target-zlib: should be sufficient to add i386-darwin to the supported  
platforms


target-boehm-gc: a patch exists for porting to the new platform, so  
it should be a matter of applying it


target-libffi, target-libmudflap, target-libjava: I don't know what  
exactly needs to be done, maybe someone could help me


Another question: if I change a configure.am somewhere, is there a  
script that rebuilds all the configure things or I have to call  
autoconf (which version?) on it?


Cheers,
  Sandro



smime.p7s
Description: S/MIME cryptographic signature


Re: Porting gcj to i386-darwin

2006-03-10 Thread Paolo Bonzini


target-zlib: should be sufficient to add i386-darwin to the supported 
platforms


zlib is being skipped only because libjava is.

target-boehm-gc: a patch exists for porting to the new platform, so it 
should be a matter of applying it


Well, good.

target-libffi, target-libmudflap, target-libjava: I don't know what 
exactly needs to be done, maybe someone could help me


mudflap is not needed for java.

libjava probably needs very little treatment if any, but I am not sure.

libffi is going to be the hardest.  You have to support Apple's calling 
conventions; I am not sure how different they are from say Microsoft 
(Windows) or SVR4 (Linux) calling conventions.


Paolo


Re: Porting gcj to i386-darwin

2006-03-10 Thread Andrew Haley
Paolo Bonzini writes:
  
   target-zlib: should be sufficient to add i386-darwin to the supported 
   platforms
  
  zlib is being skipped only because libjava is.
  
   target-boehm-gc: a patch exists for porting to the new platform, so it 
   should be a matter of applying it
  
  Well, good.
  
   target-libffi, target-libmudflap, target-libjava: I don't know what 
   exactly needs to be done, maybe someone could help me
  
  mudflap is not needed for java.
  
  libjava probably needs very little treatment if any, but I am not sure.
  
  libffi is going to be the hardest.  You have to support Apple's calling 
  conventions; I am not sure how different they are from say Microsoft 
  (Windows) or SVR4 (Linux) calling conventions.

My understanding is that the differences are tiny -- just doubles in structs.

Andrew.


Re: Problem with pex-win32.c

2006-03-10 Thread Lucas (a.k.a T-Bird or bsdfan3)
I'll happily test a patch to that file for you...the only box at my 
house runs Windows... =-O


Ian Lance Taylor wrote:


Mark Mitchell [EMAIL PROTECTED] writes:

 


The new pex-win32.c code doesn't operate correctly when used for
MinGW-hosted tools invoked from a Cygwin window.  In particular, process
creation (gcc invoking as, say) results in a DOS console window
popping up.  When invoked from a DOS window, things are fine.

The reason for this problem is that the current code uses MSVCRT's spawn
to create the process, and that function doesn't provide fine enough
control.  You have to use CreateProcess to make this work as desired.
When invoking CreateProcess, you must set bInheritHandle to TRUE and
pass a long a STARTUPINFO structure with dwFlags set to
STARTF_USESTDHANDLES, and the various hStd* handle fields set to the
values from the calling process.  (I'm pretty sure that CodeSourcery
posted patches that did that at one point; they were in our 3.4-based
toolchains.)

You might think that linking with -mwindows would work, and, indeed that
avoids the DOS windows popping up in Cygwin -- but they you get no
output at all under Windows.

I guess I have two questions: (a) do you feel like fixing this, and (b)
if not, do you have any objection to using CreateProcess?
   



I just copied the use of spawn from the earlier pex-win32
implementation.  The pex_win32_exec_child function is basically
exactly the same code as before.  I certainly have no objection to
using CreateProcess instead.

I could try a patch, but I can't test it, because I don't have a
Windows system.  So it might be better if somebody else tackled it.

Ian

 





Re: GCC for SPARC Systems

2006-03-10 Thread Eric Botcazou
 When you're a company like Intel with a relatively small gap between gcc
 on x86 and icl, it's worth improving the gcc backend, but on Sparc
 the gap is much wider, so the effort to bridge it may not be justified
 from a resource point of view.

Eh, SPARC is not IA-64 so improving the SPARC back-end should not be more 
resource-consuming than designing and maintaining a hybrid compiler.  If I'm 
not mistaken, the gap is wide for FP code essentially but Sun doesn't seem 
to care much about FP anymore if I read the Niagara specs correctly.

 Personally I wouldn't mind working towards improving gcc sparc backend.
 Actually we are fixing gcc own bugs and contribute them back.

To be clear, not bugs in the SPARC back-end.


May I also suggest to find a different name for the product?  Presumably it 
doesn't run on Linux or FreeBSD so GCC for SPARC Systems is a bit 
misleading, given that FSF GCC for SPARC does run on the aforementioned 
operating systems in addition to Solaris.  Something like Sun GCC for 
SPARC/Solaris Systems although I'm not sure if using GCC is not already 
misleading.

-- 
Eric Botcazou


Memory layout of complex data types on the RTL level

2006-03-10 Thread Moritz Muehlenhoff
Hi,
I'm working on a research project that performs static source code vulnerability
analysis on the RTL layer. (http://rtl-check.sf.net)

For the analysis we need to manually annotate the amount of memory needed
to represent local variables and global static variables. For the stack level 
this
information is easy to get from GCC, but we need it for the RTL level and I
couldn't find it after some digging in the GCC sources.
I assume this information is already available in one of the stages, can anyone
please point me where too have a deeper look?

Cheers,
Moritz


Using only regular register names in emitted assembly

2006-03-10 Thread Nikolaos Kavvadias
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
 
Hi there

how is it possible to emit regular register names (e.g. for the MIPS
to use $31 and not $ra) when producing assembly output (with
mips-elf-gcc -S)?
I want to just use the arithmetic names ($0 to $31).

regards
Nikolaos Kavvadias

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.0 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
 
iD8DBQFEEaTPMPiy0tCWlz4RAmB7AKCcccJKNm6DZLE4ZRy1cnLAIBUjRQCgj2J4
Jz4Ntxn7dsjC69JZDQDOuS0=
=4eRz
-END PGP SIGNATURE-



RE: Crazy ICE from gcc 4.1.0

2006-03-10 Thread Meissner, Michael
I suspect it isn't matching pattern #2, because it couldn't get a QI
register, and instead it falls back to the general case of moving to a
normal register.  I believe the gcc_assert should contain a check for
CONST_INT as well as a QI register or memory.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
Alan Lehotsky
Sent: Thursday, March 09, 2006 1:05 PM
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: Crazy ICE from gcc 4.1.0

I've built a generic 4.1.0 for RH7.3 x86 linux (I did a make bootstrap)

Compiling a rather large file, I get 

tmp.f_00.cxx:26432: error: unrecognizable insn:
(insn 173 172 174 9 (set (reg:QI 122)
(const_int 128 [0x80])) -1 (nil)
(nil))
tmp.f_00.cxx:26432: internal compiler error: in extract_insn, at
recog.c:2020


Which looks insane, because there's a perfectly good define_insn (cf
*movqi_1 in i386.md)
I'm trying to reduce this to a reasonably sized test case (and I'm going
to try debugging this in the recognizer),
but I can't see why this instruction isn't matching the 2nd constraint
alternative and just producing a movb r,#128


(define_insn *movqi_1
  [(set (match_operand:QI 0 nonimmediate_operand =q,q ,q ,r,r ,?r,m)
(match_operand:QI 1 general_operand  
q,qn,qm,q,rn,qm,qn))]
  GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM
{
  switch (get_attr_type (insn))
{
case TYPE_IMOVX:
  gcc_assert (ANY_QI_REG_P (operands[1]) || GET_CODE (operands[1])
== MEM);
  return movz{bl|x}\t{%1, %k0|%k0, %1};
default:
  if (get_attr_mode (insn) == MODE_SI)
return mov{l}\t{%k1, %k0|%k0, %k1};
  else
return mov{b}\t{%1, %0|%0, %1};
}
}





Re: GCC for SPARC Systems

2006-03-10 Thread David Edelsohn
 Alexey Starovoytov writes:

 If Sun starts improving GCC backend now it will never be able to catch up
 with Sun's own backend.

This is a completely ridiculous assertion.  Do you have any
evidence to back this up?  There is no reason that GCC could not intercept
Sun CC if some effort were made.  SPARC is not that different from other
RISC architectures that GCC supports well.  If Sun wants to protect its
compiler business, that is fine, but it is a business decision, not a
technical decision.

 When you're a company like Intel with a relatively small gap between gcc
 on x86 and icl, it's worth improving the gcc backend, but on Sparc
 the gap is much wider, so the effort to bridge it may not be justified
 from a resource point of view.

Has anyone at Sun investigated and analyzed the source of the gap
relative to a recent version of GCC?  If Sun does not want to cooperate
with the Free Software community, that may be a reasonable business
decision, but at least provide the real explanation or do not say anything
instead of excuses.

David


Re: Porting gcj to i386-darwin

2006-03-10 Thread Tom Tromey
 Sandro == Sandro Tolaini [EMAIL PROTECTED] writes:

Sandro Hi everyone, I would like to port gcj/libgcj to i386-darwin. Is there
Sandro someone already working on that?

Not that I know of.

Sandro target-zlib: should be sufficient to add i386-darwin to the supported
Sandro platforms

Yeah.

Sandro target-boehm-gc: a patch exists for porting to the new platform, so
Sandro it should be a matter of applying it

Yeah.  We can also import a new GC if that helps.

Sandro target-libffi, target-libmudflap, target-libjava: I don't know what
Sandro exactly needs to be done, maybe someone could help me

libffi and mudflap were covered by Paolo and Andrew.

Note that if the only ABI difference is doubles in structs, then
libffi should work fine for libgcj's purposes already -- libgcj never
passes structs via libffi.

Note also that you can disable libffi and still build libgcj.  You
will be missing some features, and we wouldn't consider this a real
port... but this can be a convenient way to work on it in the order
you prefer.

For libjava some porting may be required, though it shouldn't be very
much.

For best results you will want to make sure that the code to turn
signals into exceptions works properly.  This is both OS- and
architecture dependent.  I haven't looked at the x86 darwin port,
perhaps some gcc hacking is required.

Sandro Another question: if I change a configure.am somewhere, is there a
Sandro script that rebuilds all the configure things or I have to call
Sandro autoconf (which version?) on it?

You have to run autoconf et al by hand.

Tom


Re: Segmentation fault in openmp simple routine from libgomp testsuite.

2006-03-10 Thread Andrew Pinski


On Mar 7, 2006, at 6:31 PM, Andrew Pinski wrote:


I bet the same issue now will happen with libstdc++ (and in 4.1.0 in 
fact).
I want to say the weak references is the wrong way of doing things for 
non

shared libraries.



And it turned out I was correct in saying libstdc++ is also effected.
See PR 26633.  So this is not a libfortran specific issue any more.

Adding Alexandre to the CC since it was his weak reference patch which
caused this regression for libstdc++.


Thanks,
Andrew Pinski



Re: GCC for SPARC Systems

2006-03-10 Thread Steven Bosscher
On Friday 03 March 2006 02:46, Alexey Starovoytov wrote:
 We are pleased to announce the availability of GCC for SPARC (R) Systems
 (GCCfss) at http://cooltools.sunsource.net/gcc/

Instead of pleased, I'd be ashamed for announcing this.  To me
it feels like you're announcing with pride how you ripped off gcc.
Nota bene on a list that exists to discuss how to improve GCC,
not how to take the bits you like and evade the implications of
its license

And to make things worse, you are explaining to users the reason
why gcc4ss should exist using arguments that are simply not true.
For example:

Especially considering very conservative heuristics and that
inlining happens after all tree-level optimization are completed.
(quoted from your blog).

Anyone who has looked at GCC closely, knows that this is nonsense.
Inlining happens _before_ all (tree-level and other) optimizations.
I have to assume you also looked at GCC close enough to notice.

It is unfortunate, but I guess typical, that Sun has not learned
from the mistakes made by others in the past, for example from how
SGI tried and failed to pull off the same trick with Pro64.

Gr.
Steven


Re: GCC for SPARC Systems

2006-03-10 Thread Alexey Starovoytov
On Fri, 10 Mar 2006, Eric Botcazou wrote:

 Eh, SPARC is not IA-64 so improving the SPARC back-end should not be more
 resource-consuming than designing and maintaining a hybrid compiler.  If I'm

gcc4ss wasn't a big effort. gimple form made it easy for us.

 not mistaken, the gap is wide for FP code essentially but Sun doesn't seem
 to care much about FP anymore if I read the Niagara specs correctly.

You're right about Niagara's FP, but it's just one line of products.

 May I also suggest to find a different name for the product?  Presumably it
 doesn't run on Linux or FreeBSD so GCC for SPARC Systems is a bit
 misleading, given that FSF GCC for SPARC does run on the aforementioned
 operating systems in addition to Solaris.  Something like Sun GCC for
 SPARC/Solaris Systems although I'm not sure if using GCC is not already
 misleading.

Glad you mentioned it. Really. I don't like that name either.
Unfortunatelly that what we were told to use.
May be we'll try to change it.
Also your 'presumtion' is correct for the present only.

Alexey.


 --
 Eric Botcazou





Re: Memory layout of complex data types on the RTL level

2006-03-10 Thread Christophe Jaillet
In fact, the url of the project seams to be http://rtlcheck.sourceforge.net/

CJ

Moritz Muehlenhoff [EMAIL PROTECTED] a écrit dans le message de
news:[EMAIL PROTECTED]
 Hi,
 I'm working on a research project that performs static source code
vulnerability
 analysis on the RTL layer. (http://rtl-check.sf.net)

 For the analysis we need to manually annotate the amount of memory needed
 to represent local variables and global static variables. For the stack
level this
 information is easy to get from GCC, but we need it for the RTL level and
I
 couldn't find it after some digging in the GCC sources.
 I assume this information is already available in one of the stages, can
anyone
 please point me where too have a deeper look?

 Cheers,
 Moritz






Re: GCC for SPARC Systems

2006-03-10 Thread Alexey Starovoytov
On Fri, 10 Mar 2006, David Edelsohn wrote:

  Alexey Starovoytov writes:

  If Sun starts improving GCC backend now it will never be able to catch up
  with Sun's own backend.

   This is a completely ridiculous assertion.  Do you have any
 evidence to back this up?  There is no reason that GCC could not intercept
 Sun CC if some effort were made.  SPARC is not that different from other
 RISC architectures that GCC supports well.  If Sun wants to protect its
 compiler business, that is fine, but it is a business decision, not a
 technical decision.

So you're saying your team will be able to beat xlc.
Ahh. Ok. Good for you.
Personally I don't think that sparc gcc backend will be able to catch up
with Sun's across the range of tests and benchmarks any time soon.
Few major infrastructure features needs to be done first.

I'm not here to defend Sun's compilers. The scope of gcc4ss is to deliver
performance on SPARC chips. Period. If GCC can beat Sun there. Great!
We wouldn't need to do any of this work.

   Has anyone at Sun investigated and analyzed the source of the gap
 relative to a recent version of GCC?  If Sun does not want to cooperate
 with the Free Software community, that may be a reasonable business
 decision, but at least provide the real explanation or do not say anything
 instead of excuses.

Yes. We know the reasons, but it doesn't sound that you want to hear them.
You're just concerned about 'excuses'.
Again I'm not representing any 'business' decisions. We just want SPARC chips
to run faster and gcc4ss is just a tool to deliver that.

Alexey.




Re: Segmentation fault in openmp simple routine from libgomp testsuite.

2006-03-10 Thread Andrew Pinski


On Mar 10, 2006, at 3:14 PM, Andrew Pinski wrote:

And it turned out I was correct in saying libstdc++ is also effected.
See PR 26633.  So this is not a libfortran specific issue any more.


Actually that turned out to the TLS not be updated correctly for
threads issue with static linking problem.

-- Pinski



Re: GCC for SPARC Systems

2006-03-10 Thread Andrew Pinski


On Mar 10, 2006, at 3:34 PM, Alexey Starovoytov wrote:


Few major infrastructure features needs to be done first.


Like?  Please give examples.  If link time optimizations,
that is already starting to be worked on.

-- Pinski



Re: Problem with pex-win32.c

2006-03-10 Thread Ross Ridge
Mark Mitchell wrote:
The new pex-win32.c code doesn't operate correctly when used for
MinGW-hosted tools invoked from a Cygwin window.  In particular, process
creation (gcc invoking as, say) results in a DOS console window
popping up.  When invoked from a DOS window, things are fine.

What sort of Cygwin window are you talking about?  Cygwin bash running
in a normal Windows console window, or an rxvt or xterm window?

The reason for this problem is that the current code uses MSVCRT's spawn
to create the process, and that function doesn't provide fine enough
control.  You have to use CreateProcess to make this work as desired.
When invoking CreateProcess, you must set bInheritHandle to TRUE and
pass a long a STARTUPINFO structure with dwFlags set to
STARTF_USESTDHANDLES, and the various hStd* handle fields set to the
values from the calling process. 

Setting bInheritHandle to TRUE causes the newly created process to
inherit all of its parent process's inheritable handles.  There's no
point in using the STARTUPINFO structure to specify handles for stdin,
stdout, and/or stderr unless you're changing them.  Since MSVCRT's spawn
sets bInheritHandle to TRUE, I don't see what difference this would make.

I think you're barking up the wrong tree here.  Windows only creates
console windows automagically when a console application starts that
can't inherit its parent's console window.  Either gcc is somehow losing
it's console window or it never had one to begin with.  Hmm... if that
#! kludge is being used here then it could be the shell that's losing
the console.

Ross Ridge



Re: GCC for SPARC Systems

2006-03-10 Thread Alexey Starovoytov
On Fri, 10 Mar 2006, Steven Bosscher wrote:

 On Friday 03 March 2006 02:46, Alexey Starovoytov wrote:
  We are pleased to announce the availability of GCC for SPARC (R) Systems
  (GCCfss) at http://cooltools.sunsource.net/gcc/

 Instead of pleased, I'd be ashamed for announcing this.  To me

Being in hardware org I'm ashamed that SPARC cpus are not performing
well with GCC, so I'm pleased that we can do something about it with gcc4ss.

 it feels like you're announcing with pride how you ripped off gcc.

We are proud to make SPARC cpus faster.
The users care about performance and reliability of their apps.
I don't think it's matter to them how compiler is called or that it's
rip off of something else.

 Inlining happens _before_ all (tree-level and other) optimizations.
 I have to assume you also looked at GCC close enough to notice.

I apologize. Not sure what I was thinking when I wrote that.
gcc does inline on tree-level. Fixed that.

 It is unfortunate, but I guess typical, that Sun has not learned
 from the mistakes made by others in the past, for example from how
 SGI tried and failed to pull off the same trick with Pro64.

I wasn't making any legal/license decisions.
I'm aware of open64, but here is way different imho.
What do you think is wrong from GPL point of view?

Alex.


 Gr.
 Steven





Re: Problem with pex-win32.c

2006-03-10 Thread Mark Mitchell
Ross Ridge wrote:
 Mark Mitchell wrote:
 The new pex-win32.c code doesn't operate correctly when used for
 MinGW-hosted tools invoked from a Cygwin window.  In particular, process
 creation (gcc invoking as, say) results in a DOS console window
 popping up.  When invoked from a DOS window, things are fine.
 
 What sort of Cygwin window are you talking about?  Cygwin bash running
 in a normal Windows console window, or an rxvt or xterm window?

The latter.

 The reason for this problem is that the current code uses MSVCRT's spawn
 to create the process, and that function doesn't provide fine enough
 control.  You have to use CreateProcess to make this work as desired.
 When invoking CreateProcess, you must set bInheritHandle to TRUE and
 pass a long a STARTUPINFO structure with dwFlags set to
 STARTF_USESTDHANDLES, and the various hStd* handle fields set to the
 values from the calling process. 
 
 Setting bInheritHandle to TRUE causes the newly created process to
 inherit all of its parent process's inheritable handles.  There's no
 point in using the STARTUPINFO structure to specify handles for stdin,
 stdout, and/or stderr unless you're changing them.  Since MSVCRT's spawn
 sets bInheritHandle to TRUE, I don't see what difference this would make.
 
 I think you're barking up the wrong tree here.  Windows only creates
 console windows automagically when a console application starts that
 can't inherit its parent's console window. 

Exactly -- there is no parent console window here.  Hence, we need the
child (which is a console application) created without a console window,
but with its standard input/output connected to its parent.

Empirically, if you do not set CREATE_NO_WINDOW dwCreationFlags, a
console appears, which is undesirable.  However, if you do set
CREATE_NO_WINDOW, but do not set the standard handles in the STARTUPINFO
structure, the child's standard output/error do not appear anywhere;
perhaps they are closed because there is no console.

Unfortunately, I've also just found that setting CREATE_NO_WINDOW means
that the child's standard output/error do not appear when run from a
console.  Perhaps we have to actually check whether we already have a
console before we can know how to invoke CreateProcess.

 Either gcc is somehow losing
 it's console window or it never had one to begin with.  Hmm... if that
 #! kludge is being used here then it could be the shell that's losing
 the console.

No, it's not that.

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


Re: GCC for SPARC Systems

2006-03-10 Thread Alexey Starovoytov
On Fri, 10 Mar 2006, Andrew Pinski wrote:


 On Mar 10, 2006, at 3:34 PM, Alexey Starovoytov wrote:

  Few major infrastructure features needs to be done first.

 Like?  Please give examples.  If link time optimizations,
 that is already starting to be worked on.

I doesn't look that my opinion here worth even 1 cent,
but here are few things:

 - inter-proc (link time) opt
   I think LLVM is a better approach.

 - 2nd link time opt
   not re-optimization like above, but asm code optimizations.
   Looks like LLVM is targeting that as well. Check -xlinkopt flag and BIT

 - profile driven opt
   Great progress in 4.1. I'm very interested to see how you can match
   it with link time opts.

 - value profiling
   doesn't look anything is done

 - openmp
   I think it needs to be fully platform dependent, but anyway.
   Certainly would be interesting to compare with Sun's approach.

 - struct reorg opts
   very intersting item on gcc's todo list

 - loop opts
   Not sure what exactly is being done, but what I can see in 4.0 and 4.1
   needs to be improved. Try -xloopinfo for verbosity.

 - prefetch
   It rather hurts performance when I tried it. Check -xprefetch* flags

 - struct type aliasing
   Great progress in 4.1, but still much behind Sun. Check -xalias_level flag

 - auto parallelization
   doesn't look anything is being done here. Check -xautopar

 - -ffast-math
   just compare it with Sun's -fsimple=2

 - optimized inline assembler

All of the above is done by sun compiler and gcc4ss (except openmp).
A lot of other things are coming.

Also I don't want to start tree vs orc flame, but it seems that Sun's IR
is better suited for the above opts. Ok. Ok. It's not.

Alex.


 -- Pinski






Re: GCC for SPARC Systems

2006-03-10 Thread Andrew Pinski


On Mar 10, 2006, at 5:06 PM, Alexey Starovoytov wrote:


 - value profiling
   doesn't look anything is done


Done and already in 3.4.0 and improved for the tree level in 4.1.0.


 - openmp
   I think it needs to be fully platform dependent, but anyway.
   Certainly would be interesting to compare with Sun's approach.


Done on the mainline.


-- Pinski



Re: GCC for SPARC Systems

2006-03-10 Thread Andrew Pinski


On Mar 10, 2006, at 5:06 PM, Alexey Starovoytov wrote:


 - prefetch
   It rather hurts performance when I tried it. Check -xprefetch* flags


There is a new tree level prefetching pass on the mainline, maybe you
should try it again.

-- Pinski



Re: Porting gcj to i386-darwin

2006-03-10 Thread Sandro Tolaini


On 10/mar/2006, at 20:42, Tom Tromey wrote:


libffi and mudflap were covered by Paolo and Andrew.


I have done some work on sysv.S and now libffi compiles fine on OSX/ 
Intel. Unfortunately, I had to put some #ifdef __APPLE__ this file  
because Apple ships an old cctools with as that doesn't understand  
some directives. My patch works on the 4.0 branch, I tried it on the  
4.2 branch but libffi has changed in such a way that compiling it  
with the Apple as is not easily feasible (and I don't chew enough  
assembly code to change it).



For libjava some porting may be required, though it shouldn't be very
much.


libjava compiled out-of-the-box after tweaking the configure scripts.  
For boehm, I copied the one in the 4.2 branch and applied a patch  
that Hans should have already put in the current CVS version.



For best results you will want to make sure that the code to turn
signals into exceptions works properly.  This is both OS- and
architecture dependent.  I haven't looked at the x86 darwin port,
perhaps some gcc hacking is required.


How can I try this? Is there some test case I can use?

Considering all of the above facts, how can I submit a patch, and how  
much likely it is to be accepted?


Anyway, I'm very happy because I can finally use my MacBook Pro for  
development: our software has a key component that is written in C++  
and Java and needs to be compiled in native code, with this patch  
everything seems to work fine :)


Cheers,
  Sandro



smime.p7s
Description: S/MIME cryptographic signature


Re: Problem with pex-win32.c

2006-03-10 Thread Ross Ridge
Ross Ridge wrote:
 I think you're barking up the wrong tree here.  Windows only creates
 console windows automagically when a console application starts that
 can't inherit its parent's console window. 

Mark Mitchell wrote:
 Exactly -- there is no parent console window here.

Why isn't there a console window?  The Cygwin version of rxvt, and I
think xterm, creates (and keeps hidden) a console window that should
be inherited by gcc and as.  If there wasn't console window for gcc to
inherit, why didn't Windows create one for gcc?

Maybe gcc was linked with -mwindows.  That would cause gcc not have
console window, neither an inherited one nor an automagically created one,
and so one would have be created for the invoked tools.

  Hence, we need the child (which is a console application) created
 without a console window, but with its standard input/output connected
 to its parent.

More precisely, the child should inherit its standard input and output
handles from its parent.

Empirically, if you do not set CREATE_NO_WINDOW dwCreationFlags, a
console appears, which is undesirable.

Using CREATE_NO_WINDOW really isn't an option here because it's not
supported by Windows 9x/ME.

  However, if you do set CREATE_NO_WINDOW, but do not set the standard
handles in the STARTUPINFO structure, the child's standard output/error do
not appear anywhere; perhaps they are closed because there is no console.

With CREATE_NO_WINDOW the new process has no attached console.  Like a
-mwindows application, it neither inherits one, nor is one created for it.
Since a process can't use a console other than the one attached to it,
there's nowhere for the output to go to.

Ross Ridge



Re: GCC for SPARC Systems

2006-03-10 Thread Daniel Berlin
On Fri, 2006-03-10 at 14:06 -0800, Alexey Starovoytov wrote:
 On Fri, 10 Mar 2006, Andrew Pinski wrote:
 
 
  On Mar 10, 2006, at 3:34 PM, Alexey Starovoytov wrote:
 
   Few major infrastructure features needs to be done first.
 
  Like?  Please give examples.  If link time optimizations,
  that is already starting to be worked on.
 
 I doesn't look that my opinion here worth even 1 cent,
 but here are few things:
 
  - inter-proc (link time) opt
I think LLVM is a better approach.

So is Sun moving to it?
We are considering it (GCC being we)

 
  - 2nd link time opt
not re-optimization like above, but asm code optimizations.
Looks like LLVM is targeting that as well. 

Not as far as i know, actually.

 Check -xlinkopt flag and BIT
  - struct type aliasing
Great progress in 4.1, but still much behind Sun. Check -xalias_level flag

Actually, we aren't.  I've looked at what Sun does, and the tree level
does better in 4.2 than what you do in terms of struct aliasing. The RTL
level doesn't.

 
  - auto parallelization
doesn't look anything is being done here. Check -xautopar

This isn't a useful optimization for more than 10% of users, which is
why it's not done yet.


 All of the above is done by sun compiler and gcc4ss (except openmp).
 A lot of other things are coming.
 
 Also I don't want to start tree vs orc flame, but it seems that Sun's IR
 is better suited for the above opts. Ok. Ok. It's not.

The reality is, you can either sit on the sidelines and pretend that GCC
isn't going to each your lunch on every other platform in 5-10 years, or
you can help make it work well on your platform.

Sitting on the sidelines and saying Look, you don't have this, instead
of implementing *that thing* is a bit silly.




Re: GCC for SPARC Systems

2006-03-10 Thread Daniel Berlin
On Fri, 2006-03-10 at 12:34 -0800, Alexey Starovoytov wrote:
 On Fri, 10 Mar 2006, David Edelsohn wrote:
 
   Alexey Starovoytov writes:
 
   If Sun starts improving GCC backend now it will never be able to catch up
   with Sun's own backend.
 
  This is a completely ridiculous assertion.  Do you have any
  evidence to back this up?  There is no reason that GCC could not intercept
  Sun CC if some effort were made.  SPARC is not that different from other
  RISC architectures that GCC supports well.  If Sun wants to protect its
  compiler business, that is fine, but it is a business decision, not a
  technical decision.
 
 So you're saying your team will be able to beat xlc.
 Ahh. Ok. Good for you.
 Personally I don't think that sparc gcc backend will be able to catch up
 with Sun's across the range of tests and benchmarks any time soon.
 Few major infrastructure features needs to be done first.
 I'm not here to defend Sun's compilers. The scope of gcc4ss is to deliver
 performance on SPARC chips. Period. If GCC can beat Sun there. Great!
 We wouldn't need to do any of this work.

You don't seem to get it.

GCC isn't going to get better for *your platform* if you just sit on the
sidelines.  It will get better for those who work on it.

This is why it is the way it performs the way it does for SPARC, not
because of anything else.

I would bet you Sun could intercept Sun CC using GCC within 5 years if
they wanted to.

HTH,
Dan




Re: Problem with pex-win32.c

2006-03-10 Thread Mark Mitchell
Ross Ridge wrote:

 Why isn't there a console window?  The Cygwin version of rxvt, and I
 think xterm, creates (and keeps hidden) a console window that should
 be inherited by gcc and as.  If there wasn't console window for gcc to
 inherit, why didn't Windows create one for gcc?

I can't answer that.  I will, however, attach test test code I've used;
these are tiny programs, nothing to do with GCC.  Compiled as:

  i686-mingw32-gcc -o child.exe child.c
  i686-mingw32-gcc -o parent.exe parent.c

The child just prints a message.

The parent, based on the command line argument its given, invokes the
child in one of several ways; for example parent spawn uses spawnv to
invoke the child, while parent std uses CreateProcess, with the hStd*
handles filled in and START_USESTDHANDLES.

Here's a table showing what happens:

Cygwin Xterm

parent spawn: Pops up DOS window.
parent nostd: No output from child.
parent std:   Works.

DOS Console
===
parent spawn: Works.
parent nostd: No output from child.
parent std:   No output from child.

-- 
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713
#include stdio.h
#include process.h
#include string.h
#include windows.h

int main (int arcgc, char **argv) {
  fprintf (stderr, Parent started\n);
  fflush (stderr);
  if (strcmp (argv[1], spawn) == 0) {
const char *const child_argv[2] = { child.exe, NULL };
spawnvp (_P_WAIT, child.exe, child_argv);
  } else {
PROCESS_INFORMATION pi;
STARTUPINFO si;
si.cb = sizeof (si);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
if (strcmp (argv[1], nostd) == 0) {
  si.dwFlags = 0;
} else {
  si.dwFlags = STARTF_USESTDHANDLES;
  si.hStdInput = _get_osfhandle (0);
  si.hStdOutput = _get_osfhandle (1);
  si.hStdError = _get_osfhandle (2);
} 
if (!CreateProcess (child.exe,
child.exe,
NULL,
NULL,
/*bInheritHandles=*/TRUE,
/*dwCreationFlags=*/CREATE_NO_WINDOW,
/*lpEnvironment=*/NULL,
/*lpCurrentDirectory=*/NULL,
si,
pi)) {
  fprintf (stderr, Could not start child\n);
} else {
  WaitForSingleObject(pi.hProcess, INFINITE);
}
  }
  fprintf (stderr, Parent done\n);
}
#include stdio.h

int main () {
  printf (Child.\n);
  return 0;
}


FUNCTION_OK_FOR_SIBCALL vs INITIAL_FRAME_POINTER_OFFSET

2006-03-10 Thread Dave Korn

 Morning all!


  Sorry to bore everyone with old-fashioned 3.x stuff :) but I was just
wondering if there's a little loophole here that I may have fallen into?

snip
`FUNCTION_OK_FOR_SIBCALL (DECL)'
 A C expression that evaluates to true if it is ok to perform a
 sibling call to DECL from the current function.

 It is not uncommon for limitations of calling conventions to
 prevent tail calls to functions outside the current unit of
 translation, or during PIC compilation.  Use this macro to enforce
 these restrictions, as the `sibcall' md pattern can not fail, or
 fall over to a normal call.
snip

  As I understand it, stack frame layout is iteratively converged on in a
process that repeatedly calls I_F_P_O, and the final frame size isn't known
for sure until the final iteration of this process, yes?

  However F_O_F_S is called much earlier on in function compilation, before
I_F_P_O is even called once.

  So, what if the decision it needs to make depends on the stack frame size of
the current function?  The comment above suggests that we can't say OK to it
now and refuse to match the sibcall_epilog pattern later by testing in the
pattern condition whether the stack frame size is in range and refusing to
match if so, as it says we can't fall back.  And we can't test this condition
at F_O_F_S time, because the stack frame size is still unknown.

  Is this right?  Is get_frame_size() valid at F_O_F_S time, so that we can at
least take a best-guess at the final frame size?


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



Re: GCC for SPARC Systems

2006-03-10 Thread David Edelsohn
 Alexey Starovoytov writes:

Alexey I doesn't look that my opinion here worth even 1 cent,
Alexey but here are few things:

...

Alexey All of the above is done by sun compiler and gcc4ss (except openmp).
Alexey A lot of other things are coming.

None of the items you listed are SPARC-specific or absent from
other proprietary compilers.  You previously said: ... relatively small
gap between gcc on x86 and icl [sic] ..., which means that the gap is in
the SPARC-specific part of GCC that Sun is ignoring and not fundamental to
GCC.

If Sun and its partners do not care about GCC performance on
SPARC, no one else will do it for them.  No points for heckling from the
sidelines.

 The users care about performance and reliability of their apps.
 I don't think it's matter to them how compiler is called or that it's
 rip off of something else.

This is an oversimplified assertion.  A small but lucrative
portion of the market cares about the absolute best performance and
specific HPC Features, while most of the market cares about good
performance and portability.  Any customer who wants a proprietary,
lock-in compiler solution would chose Sun CC with GCC compatibility, with
or without GCC for SPARC.

If Sun want customers to have a better experience with GCC, it
should help improve GCC.

David



Re: Porting gcj to i386-darwin

2006-03-10 Thread Tom Tromey
 Sandro == Sandro Tolaini [EMAIL PROTECTED] writes:

 For best results you will want to make sure that the code to turn
 signals into exceptions works properly.  This is both OS- and
 architecture dependent.  I haven't looked at the x86 darwin port,
 perhaps some gcc hacking is required.

Sandro How can I try this? Is there some test case I can use?

Yes, one of the test cases in the libjava test suite checks this.
Offhand I forget which one... but if you do a 'make check' and send
the list of FAILs we can help analyze them.  (This would be better
done on the gcj list, [EMAIL PROTECTED])

You can run just these tests by using 'make check' in the libjava
build tree.  You'll need dejagnu.

Sandro Considering all of the above facts, how can I submit a patch, and how
Sandro much likely it is to be accepted?

There's a bunch of info here:

http://gcc.gnu.org/contribute.html

The most important thing is dealing with the paperwork.

We can help walk you through submitting the patches... these should go
to [EMAIL PROTECTED]

I think your chances of getting your changes in is very good :-)
This port has come up a few times already; if you're set up to test
things then we're in great shape.

Tom


ICE with GCC 4.1

2006-03-10 Thread Lothar Werzinger
I have strange ICEs (that come and go as I rearrange the source - like the
sequence of include statements). They appear also to affect different files
on different machines we compile on.
This one here seems to go away if I remove -fprofile-arcs -ftest-coverage
from the commandline.

It would be great if anyone knows what's going on here and if there's a
patch to gcc to fix it.

I tried to reproduce the ICE with a precompiled (-E) source and it doesn't
show (compiles without a problem). I would really like to provide you (GCC
developers) with a sample that reproduces the ICE, but I haven't found a
way to do it. Here's a log of the command line to show you the behaviour:

[EMAIL PROTECTED] /opt2/linux/ix86/x86_64-pc-linux-gnu/bin/g++ -O0 -pipe -g
-D_REENTRANT -DACE_HAS_AIO_CALLS -DACE_USE_RCSID=0 -DACE_HAS_EXCEPTIONS
-DOTL_STL -DOTL_ORA10G -DOTL_ORA_TIMESTAMP
-DOTL_STREAM_NO_PRIVATE_BOOL_OPERATORS
-DOTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS -W -Wall -Wpointer-arith
-Wno-uninitialized -Woverloaded-virtual -Wcast-align -Wwrite-strings
-Wcomments -DCOVERAGE -fprofile-arcs -ftest-coverage -m64 -fPIC -Isrc
-I/home/lothar/workspace/tradescapeAPI -I/opt2/linux/x86_64/ACE_wrappers
-I/opt2/linux/x86_64/ACE_wrappers/TAO
-I/opt2/linux/x86_64/ACE_wrappers/TAO/orbsvcs -I/opt2/linux/x86_64/include
-I/opt2/linux/x86_64/include/boost-1_33_1
-I/opt2/linux/x86_64/include/python2.4
-I/opt2/linux/x86_64/instantclient10_1/sdk/include -I/opt2/src/otl4/include
-c -o src/utility/.build/linux/x86_64/coverage/PythonException.os
src/utility/PythonException.cpp
/opt2/linux/x86_64/include/boost-1_33_1/boost/python/detail/wrapper_base.hpp:24:
warning: unused parameter ‘x’
/opt2/linux/x86_64/include/boost-1_33_1/boost/python/detail/wrapper_base.hpp:82:
warning: unused parameter ‘self’
src/utility/PythonException.cpp: In function ‘(static initializers for
src/utility/PythonException.cpp)’:
src/utility/PythonException.cpp:275: internal compiler error: Segmentation
fault
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://gcc.gnu.org/bugs.html for instructions.
~/workspace/tradescape
[EMAIL PROTECTED] /opt2/linux/ix86/x86_64-pc-linux-gnu/bin/g++ -O0 -pipe -g
-D_REENTRANT -DACE_HAS_AIO_CALLS -DACE_USE_RCSID=0 -DACE_HAS_EXCEPTIONS
-DOTL_STL -DOTL_ORA10G -DOTL_ORA_TIMESTAMP
-DOTL_STREAM_NO_PRIVATE_BOOL_OPERATORS
-DOTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS -W -Wall -Wpointer-arith
-Wno-uninitialized -Woverloaded-virtual -Wcast-align -Wwrite-strings
-Wcomments -DCOVERAGE -fprofile-arcs -ftest-coverage -m64 -fPIC -Isrc
-I/home/lothar/workspace/tradescapeAPI -I/opt2/linux/x86_64/ACE_wrappers
-I/opt2/linux/x86_64/ACE_wrappers/TAO
-I/opt2/linux/x86_64/ACE_wrappers/TAO/orbsvcs -I/opt2/linux/x86_64/include
-I/opt2/linux/x86_64/include/boost-1_33_1
-I/opt2/linux/x86_64/include/python2.4
-I/opt2/linux/x86_64/instantclient10_1/sdk/include -I/opt2/src/otl4/include
-E -o src/utility/PythonException.cpp.cpp  src/utility/PythonException.cpp
~/workspace/tradescape
[EMAIL PROTECTED] /opt2/linux/ix86/x86_64-pc-linux-gnu/bin/g++ -O0 -pipe -g
-D_REENTRANT -DACE_HAS_AIO_CALLS -DACE_USE_RCSID=0 -DACE_HAS_EXCEPTIONS
-DOTL_STL -DOTL_ORA10G -DOTL_ORA_TIMESTAMP
-DOTL_STREAM_NO_PRIVATE_BOOL_OPERATORS
-DOTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS -W -Wall -Wpointer-arith
-Wno-uninitialized -Woverloaded-virtual -Wcast-align -Wwrite-strings
-Wcomments -DCOVERAGE -fprofile-arcs -ftest-coverage -m64 -fPIC -c -o
src/utility/.build/linux/x86_64/coverage/PythonException.os
src/utility/PythonException.cpp.cpp
/opt2/linux/x86_64/include/boost-1_33_1/boost/python/detail/wrapper_base.hpp:24:
warning: unused parameter ‘x’
/opt2/linux/x86_64/include/boost-1_33_1/boost/python/detail/wrapper_base.hpp:82:
warning: unused parameter ‘self’
~/workspace/tradescape

Lothar



g++ 4.1.0/4.2.x, x86/x86-64, segfaults due to bogus SSE alignments

2006-03-10 Thread tbp
This bug is really transient, and AFAIK i only trigger it when using
the cluebat on g++, that is bloating every function in sight
appropriately with always_inline/noinline attributes, in a unit that
inflates much.

Tracked one occurence to something like that:
union float4_t {
float   f[4];
__m128  v;
...
};

static void foobar() {
float4_t __attribute__((aligned (16))) bar;
...
__m128 foo;
...
bar = foo;
}

If i let g++ decide if foobar() should be inlined or not, everything's
fine (but performance of course). Then if i force_inline foobar() i
may or may not get something to the effect of:
  40666a:   movaps %xmm0,0x348(%esp)
  406672:   mov0x348(%esp),%eax
  406679:   mov%eax,0x310(%esp)
  406680:   mov0x34c(%esp),%eax
  406687:   movaps 0x210(%esp),%xmm0
  40668f:   mov%eax,0x314(%esp)
  406696:   mov0x350(%esp),%eax
  40669d:   movaps %xmm0,0x40(%esp)
  4066a2:   mov%eax,0x318(%esp)
  4066a9:   mov0x354(%esp),%eax

Why that value gets suddenly copied around, i don't know. It doesn't
matter much anyway, as the program won't survive past the bogus store.

It's not just related to that kind of mixed unions either, and again
it clearly depends on surrounding functions being force_inlined and
noinlined and lots of stuff ending up on the stack.

I can trigger it on cygwin and linux, with g++ 4.1.0 and various 4.2.x
and once triggered using -0s or -Ox doesn't matter; it's been there
for a long time but that's the first time i can track it down somehow
(inlining heuristics being extremly anyway).

I haven't made a bugreport yet, as that would require disclosing large
amounts of code, but i'd like to know if it's a known issue by any
chance.

Regards,
tbp.


autogen -T ../../trunk/fixincludes/check.tpl ../../trunk/fixincludes/inclhack.def

2006-03-10 Thread Toon Moene

Gentlemen,

I get the following building 111952 (all languages except treelang):

/home/toon/compilers/obj-t/./gcc/gfortran 
-B/home/toon/compilers/obj-t/./gcc/ 
-B/usr/snp/x86_64-unknown-linux-gnu/bin/ 
-B/usr/snp/x86_64-unknown-linux-gnu/lib/ -isystem 
/usr/snp/x86_64-unknown-linux-gnu/include -isystem 
/usr/snp/x86_64-unknown-linux-gnu/sys-include -g -O2 -Wall -fsyntax-only 
omp_lib.f90
make[4]: Leaving directory 
`/home/toon/compilers/obj-t/x86_64-unknown-linux-gnu/libgomp'
make[3]: Leaving directory 
`/home/toon/compilers/obj-t/x86_64-unknown-linux-gnu/libgomp'
make[2]: Leaving directory 
`/home/toon/compilers/obj-t/x86_64-unknown-linux-gnu/libgomp'

make[1]: Leaving directory `/home/toon/compilers/obj-t'
make[1]: Entering directory `/home/toon/compilers/obj-t'
make[2]: Entering directory `/home/toon/compilers/obj-t/fastjar'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/home/toon/compilers/obj-t/fastjar'
make[2]: Entering directory `/home/toon/compilers/obj-t/fixincludes'
autogen -T ../../trunk/fixincludes/check.tpl 
../../trunk/fixincludes/inclhack.def

make[2]: autogen: Command not found

--
Toon Moene - e-mail: [EMAIL PROTECTED] - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
A maintainer of GNU Fortran 95: http://gcc.gnu.org/fortran/
My next laptop will have a crank


Re: autogen -T ../../trunk/fixincludes/check.tpl ../../trunk/fixincludes/inclhack.def

2006-03-10 Thread Andrew Pinski


On Mar 10, 2006, at 10:13 PM, Toon Moene wrote:
autogen -T ../../trunk/fixincludes/check.tpl 
../../trunk/fixincludes/inclhack.def

make[2]: autogen: Command not found



Maybe we should change this to be
autogen  || true

so that we don't get that many complaints about this.  Anyways the 
recommeneded

way to run the testsuite is make -k check.

This is not really an error but a warning that autogen was not found and
fixincludes checking is almost never really need to be worried about
either.

-- Pinski



Re: g++ 4.1.0/4.2.x, x86/x86-64, segfaults due to bogus SSE alignments

2006-03-10 Thread Daniel Jacobowitz
On Sat, Mar 11, 2006 at 03:43:45AM +0100, tbp wrote:
 I haven't made a bugreport yet, as that would require disclosing large
 amounts of code, but i'd like to know if it's a known issue by any
 chance.

Unlikely, since you haven't described at all what the problem is. 
That's why we prefer bug reports with testcases.

-- 
Daniel Jacobowitz
CodeSourcery


GCC 4.0.3 Released

2006-03-10 Thread Mark Mitchell

GCC 4.0.3 has been released.

This release is a bug-fix release for problems in GCC 4.0.2.  GCC
4.0.3 contains changes to correct regressions from previous releases,
but no new features.  

GCC 4.1.0 is the most current release of GCC and is our recommended
version for most users.  However, current users of 4.0.0, 4.0.1, or
4.0.2 who are unable upgrade to 4.1.0 may wish to upgrade to 4.0.3.

This release is available from the FTP servers listed here:

  http://www.gnu.org/order/ftp.html

The release is in the gcc/gcc-4.0.3 subdirectory.

If you encounter any difficulties using GCC 4.0.3, please do not send
them directly to me.  Instead, please http://gcc.gnu.org/ for
information about getting help and filing problem reports.

As usual, a vast number of people contributed to this release -- far
too many to thank by name!

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







GCC 4.0 branch open

2006-03-10 Thread Mark Mitchell

The GCC 4.0 branch is now open, under the usual release-branch rules.

However, I do not plan to make any further releases from the 4.0
branch.

Thanks,

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


Re: g++ 4.1.0/4.2.x, x86/x86-64, segfaults due to bogus SSE alignments

2006-03-10 Thread tbp
On 3/11/06, Daniel Jacobowitz [EMAIL PROTECTED] wrote:
 Unlikely, since you haven't described at all what the problem is.
 That's why we prefer bug reports with testcases.
...segfaults due to bogus SSE alignments
40666a:   movaps %xmm0,0x348(%esp)


Re: GCC for SPARC Systems

2006-03-10 Thread Philippe Rigault
I apologize in advance if this is a bit long or off-topic, but you might be 
interested to hear first-hand what some of current Sun customers have to say.

On Fri, 10 Mar 2006, Alexey Starovoytov wrote:
 On Fri, 10 Mar 2006, Steven Bosscher wrote:
  On Friday 03 March 2006 02:46, Alexey Starovoytov wrote:
   We are pleased to announce the availability of GCC for SPARC (R)
   Systems (GCCfss) at http://cooltools.sunsource.net/gcc/
 

This kind of attitude shows, once more, how much your company still has to 
learn to reach to free software users and understand what they mean by 
'community', 'free' and 'appealing'. (hint: 'free' is not free-beer and 
'community' is not a group listening to a coordinator)

  Instead of pleased, I'd be ashamed for announcing this. 

Especially to this audience!

 Being in hardware org I'm ashamed that SPARC cpus are not performing
 well with GCC, so I'm pleased that we can do something about it with
 gcc4ss.
slightly off-topic
Well, these days one should be ashamed at SPARC performance, period.
GCC is the least of SPARC's problems.
Our lab is a large Genome center which used to be SPARC/Solaris-only, and 
remember  when I joined two years ago and argued with our scientists about 
why I personally ditched SPARCs for cpu-intensive tasks around 1995 (ah, the 
late Alpha chip, sob!) and couldn't come close to performance of GNU/Linux on 
Pentiums since 1999. Showing people that for some of our high-performance 
bioinformatics applications, I would crush a $30,000 2-CPU V880 UltraSparc 
1.2GHz with my $2,000 Dell PentiumIV laptop was, I would say, an eye opener.

I am glad Sun has seen the light in terms of hardware and has been selling AMD 
Opterons (very nice ones by the way) for the last couple of years, which is 
the only way they could stay in the server/workstation business with us (we 
bought a lot of their Opteron boxes here, all models). They haven't got it 
yet for laptops apparently, given the recently announced Ultra-3 SPARC-based 
line (which my Acer Ferrari will eat for breakfast in energy-saving mode).  
As for  niagara chips, I will consider it the day GNU/Linux and GCC run on 
it.

I can tell you that what we call performance today in my field is called 
dual-core-Opterons, GNU/Linux and GCC. We let our SPARCs do legacy, 
file-serving and non-performance tasks, trying to get all our university 
students off them as well so that they don't get disgusted of Unix by 
exposure to Solaris, java desktop and X terminals (we give them 
KDE/GNU/Linux on Opteron workstations).

We will publish various performance metrics when time permits in the coming 
months on Single/Dual core Sun Opterons with GCC-4.1.0 on Fedora Core 5 and 
GCC-3.4.4 on Fedora Core 3.
/slightly off-topic

  it feels like you're announcing with pride how you ripped off gcc.

 We are proud to make SPARC cpus faster.
 The users care about performance and reliability of their apps.
 I don't think it's matter to them how compiler is called or that it's
 rip off of something else.


You are wrong, and in my case by a long shot.

First because, as an engineer I do not like inefficent processes consisting in 
making something slightly better if you are in a position to contribute to it 
and make it a lot better.

Second because having worked 15 years in the field of genomics and 
bioinfromatics, I can tell you that the sequencing of genomes and molecular 
understanding of biology that was produced over the last two decades owes 
pretty much everything to the power of open raw data access and free software 
to handle it, for which GCC can claim to be a cornerstone. I have witnessed 
this in academia, biotechs and large pharma companies.

We (creators and users of this information) have been _delayed_ by attitudes 
like yours. So you are not bringing performance, you are reaping short-term 
gains but preventing larger ones by not putting your energy where it would 
have the most impact.

So please start contributing to GCC, and then we will consider looking at what 
you are doing.
 
And thank you very much to all GCC developpers.

Best regards,

-- 
Philippe Rigault (GCC user since 1990).
Bioinformatics Director,
Centre de Génomique de Québec


Re: 4.1.0 install mistake in libssp

2006-03-10 Thread Ralf Corsepius
On Wed, 2006-03-08 at 16:43 -0600, Joel Sherrill wrote: 
 Andreas Schwab wrote:
 
 Joel Sherrill [EMAIL PROTECTED] writes:
 
   
 
 RPM invoked make install with the prefixes overriden:
 
 make 
 prefix=/home/rtems/tmp/rtems-4.7-sparc-rtems4.7-gcc-newlib-gcc4.1.0newlib1.14.0-1-root-rtems/opt/rtems-4.7
  
 
 
 
 Why don't you just set DESTDIR?
 
   
 
 Wasn't needed for years before now. :) 
Umm, that's not quite correct. 

We could not use DESTDIR for older GCCs, because it was not supported in
and/or broken in GCC [1]. Until GCC-4.1, non-DESTDIR installs continued
to work, therefore we continued using non-DESTDIR installs, because we
had wanted to keep compatibility of our build scripts (actually rpm
specs) to older GCCs - Now, non-DESTDIR installs seem to be broken.

 Doing that and tweaking the RPM spec to create the info
 directory if it didn't get done by make install-info seem to have 
 resolved things.

Similar considerations as above apply to info handling. Throughout GCC's
history make info|install-info had sometimes been required and
sometimes not. For the sake of simplicity we kept on using them, though
they aren't required for quite a while (newlib-infos are still not
handled by GCC's toplevel configurations).

Ralf

[1] Several subpackages in GCC did not support DESTDIR.



Re: gcc-4.2-20060304 is now available

2006-03-10 Thread Mark Mitchell
Gerald Pfeifer wrote:

 Looking at the current sizes
 
   gcc-core-4.2-20060304.tar.bz2  = 15703096
   gcc-g++-4.2-20060304.tar.bz2   =  3905138
   gcc-objc-4.2-20060304.tar.bz2  =   191280
   gcc-fortran-4.2-20060304.tar.bz2   =   793478
   gcc-testsuite-4.2-20060304.tar.bz2 =  3606941
 
 I'd really suggest to make this part of gcc-objc instead of adding
 another one.

Definitely.

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


Re: gcc-4.2-20060304 is now available

2006-03-10 Thread Andrew Pinski


On Mar 11, 2006, at 1:04 AM, Mark Mitchell wrote:


Gerald Pfeifer wrote:


Looking at the current sizes

  gcc-core-4.2-20060304.tar.bz2  = 15703096
  gcc-g++-4.2-20060304.tar.bz2   =  3905138
  gcc-objc-4.2-20060304.tar.bz2  =   191280
  gcc-fortran-4.2-20060304.tar.bz2   =   793478
  gcc-testsuite-4.2-20060304.tar.bz2 =  3606941

I'd really suggest to make this part of gcc-objc instead of adding
another one.


Definitely.


Wouldn't that make you dowload gcc-core, gcc-g++ and gcc-objc to just
to compile an objective-C compiler as objcp depends on c++ also?

-- Pinski



Re: Porting gcj to i386-darwin

2006-03-10 Thread Sandro Tolaini


On 11/mar/2006, at 02:09, Tom Tromey wrote:


Yes, one of the test cases in the libjava test suite checks this.
Offhand I forget which one... but if you do a 'make check' and send
the list of FAILs we can help analyze them.  (This would be better
done on the gcj list, [EMAIL PROTECTED])


This is the result of make test in the libgcj directory. There are  
some unexpected failures, as you can see:


Test Run By sandro on Sat Mar 11 07:42:56 2006
Native configuration is i686-apple-darwin8.5.2

=== libjava tests ===

Schedule of variations:
unix

Running target unix
Using /Users/sandro/staging/share/dejagnu/baseboards/unix.exp as  
board description file for target.
Using /Users/sandro/staging/share/dejagnu/config/unix.exp as generic  
interface file for target.
Using /Users/sandro/gcc-4.0.2/libjava/testsuite/config/default.exp as  
tool-and-target-specific interface file.
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.cni/ 
cni.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.compile/ 
compile.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.jacks/ 
jacks.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.jar/ 
jar.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.jni/ 
jni.exp ...

FAIL: PR15133 execution - gij test
FAIL: cxxtest execution - gij test
FAIL: directbuffer execution - gij test
FAIL: martin execution - gij test
FAIL: noclass execution - gij test
FAIL: pr11951 run
FAIL: throwit execution - gij test
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.lang/ 
lang.exp ...

FAIL: ArrayStore execution - gij test
FAIL: ArrayStore execution - gij test
FAIL: Array_3 execution - source compiled test
FAIL: Array_3 execution - gij test
FAIL: Array_3 execution - bytecode-native test
FAIL: Array_3 -O3 execution - source compiled test
FAIL: Array_3 execution - gij test
FAIL: Array_3 -O3 execution - bytecode-native test
FAIL: Divide_1 execution - source compiled test
FAIL: Divide_1 execution - bytecode-native test
FAIL: Divide_1 -O3 execution - source compiled test
FAIL: Divide_1 -O3 execution - bytecode-native test
FAIL: FileHandleGcTest execution - gij test
FAIL: FileHandleGcTest execution - gij test
FAIL: Invoke_1 execution - source compiled test
FAIL: Invoke_1 execution - bytecode-native test
FAIL: Invoke_1 -O3 execution - source compiled test
FAIL: Invoke_1 -O3 execution - bytecode-native test
FAIL: PR218 execution - source compiled test
FAIL: PR218 execution - gij test
FAIL: PR218 execution - bytecode-native test
FAIL: PR218 -O3 execution - source compiled test
FAIL: PR218 execution - gij test
FAIL: PR218 -O3 execution - bytecode-native test
FAIL: Process_5 execution - gij test
FAIL: Process_5 execution - gij test
FAIL: Process_6 execution - gij test
FAIL: Process_6 execution - gij test
FAIL: StringBuffer_1 execution - gij test
FAIL: StringBuffer_1 execution - gij test
FAIL: StringBuffer_overflow execution - gij test
FAIL: StringBuffer_overflow execution - gij test
FAIL: String_overflow execution - gij test
FAIL: String_overflow execution - gij test
FAIL: Thread_Alive execution - gij test
FAIL: Thread_Alive execution - gij test
FAIL: Thread_Interrupt execution - gij test
FAIL: Thread_Interrupt execution - gij test
FAIL: Thread_Wait_2 execution - gij test
FAIL: Thread_Wait_2 execution - gij test
FAIL: Thread_Wait_Interrupt execution - gij test
FAIL: Thread_Wait_Interrupt execution - gij test
FAIL: Throw_2 execution - source compiled test
FAIL: Throw_2 execution - gij test
FAIL: Throw_2 execution - bytecode-native test
FAIL: Throw_2 -O3 execution - source compiled test
FAIL: Throw_2 execution - gij test
FAIL: Throw_2 -O3 execution - bytecode-native test
FAIL: instinit2 execution - gij test
FAIL: instinit2 execution - gij test
FAIL: invokethrow execution - source compiled test
FAIL: invokethrow execution - gij test
FAIL: invokethrow execution - bytecode-native test
FAIL: invokethrow -O3 execution - source compiled test
FAIL: invokethrow execution - gij test
FAIL: invokethrow -O3 execution - bytecode-native test
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.loader/ 
loader.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.mauve/ 
mauve.exp ...
Running /Users/sandro/gcc-4.0.2/libjava/testsuite/libjava.verify/ 
verify.exp ...


=== libjava Summary ===

# of expected passes3687
# of unexpected failures63
# of expected failures  14
# of untested testcases 79



smime.p7s
Description: S/MIME cryptographic signature


Re: GCC 4.0.3 Released

2006-03-10 Thread Eric Botcazou
 GCC 4.0.3 has been released.

You need to add a link on the page
http://gcc.gnu.org/gcc-4.0

Similarly for the 4.1.0 release on the page
http://gcc.gnu.org/gcc-4.1

And don't you need to display the release date instead of current changes 
for 4.1.0 on the main page?

-- 
Eric Botcazou


[Bug fortran/26509] incorrect behaviour of error-handler for internal read

2006-03-10 Thread kloedej at knmi dot nl


--- Comment #15 from kloedej at knmi dot nl  2006-03-10 08:27 ---
(In reply to comment #14)

 All I'm saying is that in this situation there seems to be no way to jump
 to some label if something goes wrong (because there is no EOR parameter
 for WRITE).
 But I agree that this is not gfortran's problem, but rather
 an inconsistency in the standard.

Dear people,

thanks a lot for the discussion following my bug-report. The situation is clear
to me now, and I agree this is not a real gfortran bug, but a problem in the
standard.
By the way, is there a way to warn/advise users to rather use the iostat
keyword in stead of the err/end keywords in these problematic situations? In
other words, is it possible for gfortran to detect potential problems like
this, and then issue a warning, in addition to stopping with a runtime error?

best regards,

Jos de Kloe.


-- 


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



[Bug bootstrap/26628] Build fails trying to run ppc64 binaries on powerpc-apple-darwin8.5.0

2006-03-10 Thread malcolmpurvis at optushome dot com dot au


--- Comment #2 from malcolmpurvis at optushome dot com dot au  2006-03-10 
08:40 ---
(In reply to comment #1)
 Use --disable-multilib.
 

This has fixed the problem.  Thank you.

However, I would query the determination that this is not a bug.  I don't
expect the default configuration of a common system in an official release to
fail.  Either multilib should be disabled by default for this target or special
mention  of be made in INSTALL/specific.html (as I have subsequently discovered
the case for mips-sgi-irix6 and sparc-sun-solaris2*).


-- 


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



[Bug c++/26605] using + function templates troubles

2006-03-10 Thread pcarlini at suse dot de


--- Comment #12 from pcarlini at suse dot de  2006-03-10 09:38 ---
I sent a message to the CWG reflector, and people kindly replied
(c++std-core-11367 to 11370). In a nutshell, 7.3.3/11 should be clarified for
function templates (a new issue has been opened), but apparently there is
consensus that Comment #1 below is invalid while Comment #0 is fine (because
the return types are different, and return types matter for function templates
[14.5.5.1p4]). However, the first snippet is actually the same issue of
c++/21682 and therefore I'm closing this one as duplicate.

*** This bug has been marked as a duplicate of 21682 ***


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/21682] Disallowed using declaration

2006-03-10 Thread pcarlini at suse dot de


--- Comment #3 from pcarlini at suse dot de  2006-03-10 09:38 ---
*** Bug 26605 has been marked as a duplicate of this bug. ***


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 CC||pcarlini at suse dot de


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



[Bug tree-optimization/26626] [4.2 Regression] ICE in in add_virtual_operand

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2006-03-10 10:40 ---
The testcase is also full of problems itself... - changing rv to a type with
the size of U, we no longer ICE.  Also -fno-strict-aliasing fixes the ICE.

I'm curious on how the original code looks like before reduction...


-- 


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



[Bug tree-optimization/26626] [4.2 Regression] ICE in in add_virtual_operand

2006-03-10 Thread mueller at gcc dot gnu dot org


--- Comment #8 from mueller at gcc dot gnu dot org  2006-03-10 10:51 ---
shorter testcase: 

=== Cut ===
typedef union {
int d;
int L;
} U;

void breakme()
{
int rv;
ovfl:
((U*)rv)-d = 42;
if (((U*)rv)-L)
goto ovfl;
}
=== Cut ===


-- 


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



[Bug tree-optimization/26626] [4.2 Regression] ICE in in add_virtual_operand

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2006-03-10 11:10 ---

L2:;
  pretmp.23_2 = (union U *) rv;

  # NMT.6_4 = PHI NMT.6_5(2), NMT.6_6(5);
ovfl:;
  rv.0_1 = pretmp.23_2;
  #   NMT.6_6 = V_MAY_DEF NMT.6_4;
  rv.0_1-d = 42;
  #   VUSE NMT.6_6;
  D.1529_3 = rv.0_1-L;
  if (D.1529_3 != 0) goto L5; else goto L1;

L5:;
  goto bb 3 (ovfl);

we prop pretmp.23_2 to rv.0_1 in rv.0_1-d = 42 -- but we don't have the
NMT associated with pretmp.23_2:

$5 = {pt_anything = 0, value_escapes_p = 0, is_dereferenced = 0, 
  pt_global_mem = 0, pt_null = 0, pt_vars = 0xb7dec890, name_mem_tag = 0x0, 
  escape_mask = 0}

As we have in alias after PRE:

Pointed-to sets for pointers in breakme

pretmp.23_2, points-to vars: { rv }
rv.0_1, name memory tag: NMT.6, is dereferenced, points-to vars: { rv }

which looks inconsistent.


-- 


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



[Bug c++/26621] Template instantiation fails for -O1 -finline-functions

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2006-03-10 11:24 ---
You need to make all templated definitions available in check_link.cc or
explicitly instantiate all used templates in check_link.cc.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/26630] New: Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread cyp561 at gmail dot com
As far as I can tell, c1 should be equal to 8, not -51072, or at least
equal to c2.

Sorry if I'm mistaken, but I can't see how c1 and c2 can be different. The
result is the same using gcc 3.3.6, gcc 3.4.4 and gcc 4.0.2.

Program (error.c):
-
#include stdio.h

int main()
{
int a1 = 4;
#define b1   ((int)(short)(a1-1))
int c1 = ( b1 +1)*2;

int a2 = 4;
int b2 = ((int)(short)(a2-1));
int c2 = ( b2 +1)*2;

printf(sizeof(int) = %d, sizeof(short) = %d\na1 = %d, b1 = %d, c1 = %d\na2
= %d, b2 = %d, c2 = %d (c1 and c2 should both be 8)\n,
sizeof(int),  sizeof(short),  a1,  b1,  c1, 
a2,  b2,  c2);

if( c1!=8 || c2!=8 )
{
printf(Error!\n);
return 1;
}

return 0;
}
--
Output:

[EMAIL PROTECTED] ~/tmp $ cat /proc/version
Linux version 2.6.15-gentoo-r1 ([EMAIL PROTECTED]) (gcc version 3.3.6 (Gentoo 
3.3.6,
ssp-3.3.6-1.0, pie-8.7.8)) #1 PREEMPT Wed Jan 25 11:58:26 CET 2006
[EMAIL PROTECTED] ~/tmp $ gcc-3.3.6 -v
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/specs
Configured with: /var/tmp/portage/gcc-3.3.6/work/gcc-3.3.6/configure
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.3.6
--includedir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/include
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.6
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.6/man
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.6/info
--with-gxx-include-dir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/include/g++-v3
--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --disable-libunwind-exceptions --disable-multilib
--disable-libgcj --enable-languages=c,c++,f77 --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 3.3.6 (Gentoo 3.3.6, ssp-3.3.6-1.0, pie-8.7.8)
[EMAIL PROTECTED] ~/tmp $ gcc-3.3.6 -o error error.c -Wall
[EMAIL PROTECTED] ~/tmp $ ./error
sizeof(int) = 4, sizeof(short) = 2
a1 = 4, b1 = 3, c1 = -51072
a2 = 4, b2 = 3, c2 = 8 (c1 and c2 should both be 8)
Error!
[EMAIL PROTECTED] ~/tmp $ gcc-3.4.4 -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
Configured with: /var/tmp/portage/gcc-3.4.4-r1/work/gcc-3.4.4/configure
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.4
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3
--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --disable-libunwind-exceptions --disable-multilib
--disable-libmudflap --disable-libgcj --enable-languages=c,c++,f77
--enable-shared --enable-threads=posix --enable-__cxa_atexit
--enable-clocale=gnu
Thread model: posix
gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)
[EMAIL PROTECTED] ~/tmp $ gcc-3.4.4 -o error error.c -Wall
[EMAIL PROTECTED] ~/tmp $ ./error
sizeof(int) = 4, sizeof(short) = 2
a1 = 4, b1 = 3, c1 = -51072
a2 = 4, b2 = 3, c2 = 8 (c1 and c2 should both be 8)
Error!
[EMAIL PROTECTED] ~/tmp $ gcc-4.0.2 -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/gcc-4.0.2-r3/work/gcc-4.0.2/configure
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.0.2
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/include
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.2
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.2/man
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.2/info
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/include/g++-v4
--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --disable-libunwind-exceptions --disable-multilib
--disable-libmudflap --disable-libgcj --enable-languages=c,c++,f95
--enable-shared --enable-threads=posix --enable-__cxa_atexit
--enable-clocale=gnu
Thread model: posix
gcc version 4.0.2 (Gentoo 4.0.2-r3, pie-8.7.8)
[EMAIL PROTECTED] ~/tmp $ gcc-4.0.2 -o error error.c -Wall
[EMAIL PROTECTED] ~/tmp $ ./error
sizeof(int) = 4, sizeof(short) = 2
a1 = 4, b1 = 3, c1 = -51072
a2 = 4, b2 = 3, c2 = 8 (c1 and c2 should both be 8)
Error!
[EMAIL PROTECTED] ~/tmp $


-- 
   Summary: Incorrect result when subtracting, casting to short and
back to int, adding and multiplying
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc 

[Bug tree-optimization/26629] tree load PRE does not work on array references

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-03-10 12:50 ---
Here is another testcase:
typedef long dtype;
typedef dtype longarray[];
int g (longarray *array1, unsigned long i, dtype j)
{
  if (!(*array1)[i])
i++;
  if (j  (*array1)[i])
h();
  return i;
}

int g1 (longarray *array1, unsigned long i, dtype j)
{
  dtype a = (*array1)[i];
  if (!a)
{
  i++;
  a = (*array1)[i];
}
  if (j  a)
h();
  return i;
}

FRE handles this just fine, it is PRE which does not.


-- 


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-03-10 12:57 ---
Confirmed, just a regression on the 4.0 branch, 3.4.6 was the last release of
the 3.4 branch.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Component|c   |middle-end
 Ever Confirmed|0   |1
   Keywords||wrong-code
  Known to fail||3.4.0 4.0.0 4.0.3 3.3.3
   ||3.0.4
  Known to work||2.95.3 4.1.0 4.2.0
   Last reconfirmed|-00-00 00:00:00 |2006-03-10 12:57:24
   date||
Summary|Incorrect result when   |[4.0 Regression] Incorrect
   |subtracting, casting to |result when subtracting,
   |short and back to int,  |casting to short and back to
   |adding and multiplying  |int, adding and multiplying
   Target Milestone|--- |4.0.4


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



[Bug tree-optimization/26629] tree load PRE does not work on array references

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-03-10 12:59 ---
(In reply to comment #1)
 FRE handles this just fine, it is PRE which does not.
Let me clarify that comment, For FRE I am talking about code like:
typedef long dtype;
typedef dtype longarray[];
int g (longarray *array1, unsigned long i, dtype j)
{
  if (!(*array1)[i])
j++;
  if (j  (*array1)[i])
h();
  return i;
}


-- 


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



[Bug tree-optimization/26524] [4.1 Regression] ICE when compiling with -ffast-math and -O3 clatm5.f (lapack)

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #11 from pinskia at gcc dot gnu dot org  2006-03-10 13:00 
---
Fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2006-03-10 13:52 ---
We fold
  ((intD.0) ((short intD.7) a1D.1133 - 1) + 1) * 2
via extract_muldiv to
  (intD.0) (short intD.7) a1D.1133 * 2


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu dot
   ||org


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2006-03-10 13:53 ---
shorter testcase:

extern void abort(void);
int main()
{
  int a1 = 4;
  int c1 = ( ((int)(short)(a1-1)) + 1)*2;
  if (c1 != 8)
abort();
  return 0;
}


-- 


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



[Bug c++/26621] Template instantiation fails for -O1 -finline-functions

2006-03-10 Thread _talyn_ at web dot de


--- Comment #5 from _talyn_ at web dot de  2006-03-10 13:54 ---
Created an attachment (id=11015)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11015action=view)
test case that shows the difference between dynamic/static alloc


-- 


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



[Bug rtl-optimization/21485] [4.0/4.1/4.2 Regression] codegen regression due to PRE increasing register pressure

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #17 from pinskia at gcc dot gnu dot org  2006-03-10 13:56 
---
What happens to the time if you replace that function with:
void
NumSift (long *array, unsigned long i, unsigned long j)
{
  unsigned long k;
  while ((i + i) = j)
{
  k = i + i;
  long t, t1;
  t = array[k];
  if (k  j)
{
  t1 = array[k+1];
  if (t  t1)
++k, t = t1;
}
  t1 = array[i];
  if (t1  t)
{
  array[k] = t1;
  array[i] = t;
  i = k;
}
  else
i = j + 1;
}
  return;
}
---
The semantics should be the same, I just pulled out the PREs as much as I
could.


-- 


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



[Bug c++/26621] Template instantiation fails for -O1 -finline-functions

2006-03-10 Thread _talyn_ at web dot de


--- Comment #6 from _talyn_ at web dot de  2006-03-10 13:56 ---
(From update of attachment 11015)
Certainly, I see your point with respect to the get* methods, a hint in the
g++-4.X release notes about the more aggressive inlining would probably be
helpful. 

However, this doesn't explain, why the reference to TTypeWrapper::~TTypeWrapper
is missing if the instance of CVectorWrap is allocated statically, and it is
not missing, if it is allocated dynamically. The VMT of CVectorWrap should be
created with instance.o the reference to  TTypeWrapper::~TTypeWrapper will be
needed  there. Hence, it should be instanciated automatically, and creating
CVectorWrap dynamically seems to proof that indeed it is. Explicit
instanciation is a orkaround, but IMHO it is not the solution. 


-- 


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



[Bug c++/26621] Template instantiation fails for -O1 -finline-functions

2006-03-10 Thread pinskia at physics dot uc dot edu


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-03-10 13:58 ---
Subject: Re:  Template instantiation fails for -O1 -finline-functions

 However, this doesn't explain, why the reference to 
 TTypeWrapper::~TTypeWrapper
 is missing if the instance of CVectorWrap is allocated statically, and it is
 not missing, if it is allocated dynamically. The VMT of CVectorWrap should be
 created with instance.o the reference to  TTypeWrapper::~TTypeWrapper will be
 needed  there. Hence, it should be instanciated automatically, and creating
 CVectorWrap dynamically seems to proof that indeed it is. Explicit
 instanciation is a orkaround, but IMHO it is not the solution. 

divirtualization is really what is happening and not inlining.


-- Pinski


-- 


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



[Bug rtl-optimization/21485] [4.0/4.1/4.2 Regression] codegen regression due to PRE increasing register pressure

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #18 from pinskia at gcc dot gnu dot org  2006-03-10 14:10 
---
(In reply to comment #17)
 What happens to the time if you replace that function with:
This helps about 5% but it does not get the score back up.

3.4.0's score for this machine is about 900.
4.1.0's score is 720.
4.1.0+scource modification is about 780.

so it helps but there is something else which needs to be improved still.

I don't think this is a RA issue now after looking into the source.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords|ra  |


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



[Bug rtl-optimization/21485] [4.0/4.1/4.2 Regression] codegen regression due to PRE increasing register pressure

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #19 from pinskia at gcc dot gnu dot org  2006-03-10 14:13 
---
(In reply to comment #18)
 (In reply to comment #17)
  What happens to the time if you replace that function with:
 This helps about 5% but it does not get the score back up.

Also the asm is about the same for this function, at least on i686 between
3.4.0 and the source modified version with 4.1.0.


-- 


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2006-03-10 14:31 ---
with 4.1 we start with

 ((intD.0) (short intD.7) ((short unsigned intD.8) a1D.1280 - 1) + 1) *
2

which convert builds from converting a - 1 to short:

  (short intD.7) ((short unsigned intD.8) a1D.1280 - 1)

this prevents the (now latent) problem in extract_muldiv to show up.

I believe

case CONVERT_EXPR:  case NON_LVALUE_EXPR:  case NOP_EXPR:
  /* If op0 is an expression ...  */
  if ((COMPARISON_CLASS_P (op0)
   || UNARY_CLASS_P (op0)
   || BINARY_CLASS_P (op0)
   || EXPRESSION_CLASS_P (op0))
  /* ... and is unsigned, and its type is smaller than ctype,
 then we cannot pass through as widening.  */
   ((TYPE_UNSIGNED (TREE_TYPE (op0))
! (TREE_CODE (TREE_TYPE (op0)) == INTEGER_TYPE
  TYPE_IS_SIZETYPE (TREE_TYPE (op0)))
(GET_MODE_SIZE (TYPE_MODE (ctype))
GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (op0)
  /* ... or this is a truncation (t is narrower than op0),
 then we cannot pass through this narrowing.  */
  || (GET_MODE_SIZE (TYPE_MODE (type))
   GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (op0

the last check needs to read !=, but this extract_muldiv looks like a mess...


-- 


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



[Bug c/26632] New: spurious warning: value computed is not used

2006-03-10 Thread mattias at virtutech dot se
Using gcc 4.1.0 on amd64, with -Wall (64 bit target):

int g(void);
long h(void);
void f(void)
{
0 ? h() : g();
}

foo.c:6: warning: value computed is not used

Either changing 0 to 1 or swapping g and h makes the warning go away.
This was the result of a (very reasonable) macro expansion.


-- 
   Summary: spurious warning: value computed is not used
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mattias at virtutech dot se
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug middle-end/26632] spurious warning: value computed is not used

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-03-10 15:16 ---
Hmm, what is going on here is the following.
0 ? h() : g();
is not really just that but instead:
0 ? h() : (long)g();
which then gets foldded into:
(long)g();
and we warn about the cast.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Component|c   |middle-end


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



[Bug middle-end/26632] [4.1/4.2 Regression] spurious warning: value computed is not used

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-03-10 15:17 ---
I don't know if we should be warning or not.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
   Keywords||diagnostic
Summary|spurious warning: value |[4.1/4.2 Regression]
   |computed is not used|spurious warning: value
   ||computed is not used
   Target Milestone|--- |4.1.1


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



[Bug middle-end/19430] Missing uninitialized warning

2006-03-10 Thread ciaccio at disi dot unige dot it


--- Comment #7 from ciaccio at disi dot unige dot it  2006-03-10 15:25 
---
An even simpler test case of this bug (tested with gcc 3.4.5):

int main( void ) {
int rc;
return rc;
*rc = 0;
}

 gcc -O -Wall program.c
(more stunning silence)

NOTE: in this example, there is no function invocation inside main().
NOTE: remove the last statement in the program, and the warning will show up.

g.


-- 


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



[Bug middle-end/19430] Missing uninitialized warning

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-03-10 15:28 ---
(In reply to comment #7)
 An even simpler test case of this bug (tested with gcc 3.4.5):
That works correctly in 4.0.0 and above.


-- 


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



[Bug middle-end/26632] [4.1/4.2 Regression] spurious warning: value computed is not used

2006-03-10 Thread mattias at virtutech dot se


--- Comment #3 from mattias at virtutech dot se  2006-03-10 15:30 ---
Yes, I realise it's the implicit integral conversion that causes the warning,
but since the result is not used no matter what it seems wrong to warn for it -
it cannot reasonably a sign of an error in the code.

It can be hard to avoid unless the exact types and sizes are known - for
instance, adding (long) casts to both branches will not prevent the warning
from being generated. This causes headaches with -Werror.

In fact, adding an (int) cast before h() will suppress the warning but a (long)
cast before g() will not. I see no sensible way of getting rid of the warning
at all, save casting the whole result to void (which isn't desirable for a
function-like macro).


-- 


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



[Bug middle-end/19430] Missing uninitialized warning

2006-03-10 Thread dnovillo at gcc dot gnu dot org


--- Comment #9 from dnovillo at gcc dot gnu dot org  2006-03-10 15:31 
---

Not going to work on this problem any time soon.


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug tree-optimization/5035] Incorrectly produces '`var' might be used uninitialized in this function'

2006-03-10 Thread dnovillo at gcc dot gnu dot org


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|REOPENED|NEW


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



[Bug tree-optimization/13962] [tree-ssa] make fold use alias information to optimize pointer comparisons

2006-03-10 Thread dnovillo at gcc dot gnu dot org


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dnovillo at gcc dot gnu dot
   ||org
 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug tree-optimization/14187] [tree-ssa] restricted pointers should not alias on the tree level

2006-03-10 Thread dnovillo at gcc dot gnu dot org


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dnovillo at gcc dot gnu dot
   ||org
 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug tree-optimization/14295] [tree-ssa] copy propagation for aggregates

2006-03-10 Thread dnovillo at gcc dot gnu dot org


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dnovillo at gcc dot gnu dot
   ||org
 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug tree-optimization/20168] const function causes the creation of GLOBAL_VAR

2006-03-10 Thread dnovillo at gcc dot gnu dot org


--- Comment #3 from dnovillo at gcc dot gnu dot org  2006-03-10 15:36 
---

Fixed in 4.2.


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug middle-end/19430] Missing uninitialized warning

2006-03-10 Thread mike at codeweavers dot com


--- Comment #10 from mike at codeweavers dot com  2006-03-10 15:37 ---
Can I bribe you to work on it by fixing a Wine bug in exchange? :)


-- 


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



[Bug tree-optimization/22254] We never call may_alias_p for PARM_DECL's

2006-03-10 Thread dnovillo at gcc dot gnu dot org


--- Comment #5 from dnovillo at gcc dot gnu dot org  2006-03-10 15:45 
---

The two pointers are assigned the same SMT.  Is this still a problem?

Dereferenced pointers

D.1541, UID 1541, int *, symbol memory tag: SMT.5
D.1542, UID 1542, int *, symbol memory tag: SMT.5

Or do you need to analyze g1 and g2?


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug tree-optimization/21258] Teach VRP to pick up a constant from case label.

2006-03-10 Thread dnovillo at gcc dot gnu dot org


--- Comment #5 from dnovillo at gcc dot gnu dot org  2006-03-10 16:07 
---

Not working on this anymore.


-- 

dnovillo at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|dnovillo at gcc dot gnu dot |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW


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



[Bug c++/26633] New: Minimal c++ program using threads and exceptions crashes when compiled statically

2006-03-10 Thread ahu at ds9a dot nl
The below does not crash with g++ 4.0.2, nor when removing -static:
(see also http://ds9a.nl/minimal.cc.txt)

#include stdexcept

/* 
   compiled with g++ 4.1.0 (g++ minimal.cc -o minimal -static -pthread), on
Ubuntu Breezy:

   Using built-in specs.
   Target: i686-pc-linux-gnu
   Configured with: ../gcc-4.1.0/configure --prefix=/opt/gcc-4.1/
--enable-shared --enable-__cxa_atexit --enable-libstdcxx-debug
   Thread model: posix
   gcc version 4.1.0

   Crash:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16386 (LWP 8238)]
__gnu_internal::get_global () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58
58get_global() throw()
Current language:  auto; currently c++
(gdb) bt
#0  __gnu_internal::get_global () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58
#1  0x0804c767 in __cxa_get_globals () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:71
#2  0x0804c33f in __cxa_allocate_exception (thrown_size=8)
at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_alloc.cc:154
#3  0x08048298 in doStuff ()
#4  0x080577af in pthread_start_thread (arg=0xaf5ffbe0) at manager.c:310
#5  0x08057827 in pthread_start_thread_event (arg=0xaf5ffbe0) at manager.c:334
#6  0x08069d9a in clone ()
*/


void *doStuff(void *)
try 
{
  throw std::runtime_error(boe);
}
catch(std::exception e)
{}

int main()
{
  pthread_t tid;
  pthread_create(tid, 0, doStuff,0);
  void *result;
  pthread_join(tid, result);
}


-- 
   Summary: Minimal c++ program using threads and exceptions crashes
when compiled statically
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ahu at ds9a dot nl
 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=26633



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2006-03-10 16:17 ---
The patch from 25125 fixes the problem.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn||25125
 AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
  GCC build triplet|i686-pc-linux-gnu-gcc-3.3.6 |
   GCC host triplet|i686-pc-linux-gnu-gcc-3.3.6 |
 GCC target triplet|i686-pc-linux-gnu-gcc-3.3.6 |
   Last reconfirmed|2006-03-10 12:57:24 |2006-03-10 16:17:24
   date||


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

2006-03-10 Thread patchapp at dberlin dot org


--- Comment #6 from patchapp at dberlin dot org  2006-03-10 16:25 ---
Subject: Bug number PR26630

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00616.html


-- 


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



[Bug c++/25322] ISO compliance of defining structs in anonymous unions

2006-03-10 Thread jvalenzu at infinite-monkeys dot org


--- Comment #3 from jvalenzu at infinite-monkeys dot org  2006-03-10 16:25 
---
Would someone mind specifying what section of the standard this violates?  We
have a codebase that makes heavy use of (3). 


-- 

jvalenzu at infinite-monkeys dot org changed:

   What|Removed |Added

 CC||jvalenzu at infinite-monkeys
   ||dot org


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



[Bug c/26634] New: spurious strtok_r warning with -Wwrite-strings

2006-03-10 Thread mattias at virtutech dot se
I'm not sure whether to report this to gcc or glibc - maybe it falls
in-between.

#include string.h
void g(char *);
void f(char *a)
{
char *p, *q;
while ((q = strtok_r(a, :, p)))
g(q);
}

with -O1 -Wall -Wwrite-strings, gives:

warning: 'p' may be used uninitialized in this function

This comes from the inline expansion of strtok_r(), after reduction:

extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
__s = *__nextp;
  while (*__s == __sep)
++__s;
  __result = ((void *)0);
  if (*__s != '\0')
{
  __result = __s++;
  while (*__s != '\0')
 if (*__s++ == __sep)
   {
 __s[-1] = '\0';
 break;
   }
  *__nextp = __s;
}
  return __result;
}

void g(char *);
void f(char *a)
{
char *p, *q;
while ((q = __strtok_r_1c (a, ':', p)))
g(q);
}

I don't know what glibc could do to prevent this (except dropping this
optimisation).


-- 
   Summary: spurious strtok_r warning with -Wwrite-strings
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mattias at virtutech dot se
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug middle-end/26565] [4.0/4.1/4.2 Regression] Unaligned accesses with __attribute__(packed) and memcpy

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2006-03-10 16:44 ---
Subject: Bug 26565

Author: rguenth
Date: Fri Mar 10 16:44:01 2006
New Revision: 111934

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=111934
Log:
2006-03-10  Richard Guenther  [EMAIL PROTECTED]

PR middle-end/26565
* builtins.c (get_pointer_alignment): Handle component
references for field alignment.

* gcc.dg/torture/pr26565.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr26565.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug middle-end/26565] [4.0/4.1 Regression] Unaligned accesses with __attribute__(packed) and memcpy

2006-03-10 Thread rguenth at gcc dot gnu dot org


--- Comment #10 from rguenth at gcc dot gnu dot org  2006-03-10 16:44 
---
Fixed on the mainline.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to work|3.3.3 3.4.2 |3.3.3 3.4.2 4.2.0
Summary|[4.0/4.1/4.2 Regression]|[4.0/4.1 Regression]
   |Unaligned accesses with |Unaligned accesses with
   |__attribute__(packed) and   |__attribute__(packed) and
   |memcpy  |memcpy


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



[Bug other/26633] [4.1/4.2 Regression] Minimal c++ program using threads and exceptions crashes when compiled statically

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-03-10 16:54 ---
Just as I had expected in
http://gcc.gnu.org/ml/gcc/2006-03/msg00256.html


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

URL|http://ds9a.nl/minimal.cc.tx|
   |t   |
   Severity|normal  |blocker
 Status|UNCONFIRMED |NEW
  Component|c++ |other
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-03-10 16:54:23
   date||
Summary|Minimal c++ program using   |[4.1/4.2 Regression] Minimal
   |threads and exceptions  |c++ program using threads
   |crashes when compiled   |and exceptions crashes when
   |statically  |compiled statically
   Target Milestone|--- |4.1.1


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



[Bug other/26633] [4.1/4.2 Regression] Minimal c++ program using threads and exceptions crashes when compiled statically

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-03-10 16:55 ---
Some information about this bug in both the libstdc++ library and the
libgfortran library on the mainline:
http://gcc.gnu.org/ml/gcc/2006-03/msg00248.html


-- 


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



[Bug middle-end/26634] spurious strtok_r warning with -Wall

2006-03-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-03-10 16:59 ---
This is not a gcc bug as the warning is correct as the following is true, a can
be null entering f so p is used uninitialized.

If this is a bug, this is a bug in glibc for being over optimizing.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|c   |middle-end
   Keywords||diagnostic
 Resolution||INVALID
Summary|spurious strtok_r warning   |spurious strtok_r warning
   |with -Wwrite-strings|with -Wall


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



[Bug other/26633] [4.1/4.2 Regression] Minimal c++ program using threads and exceptions crashes when compiled statically

2006-03-10 Thread ahu at ds9a dot nl


--- Comment #3 from ahu at ds9a dot nl  2006-03-10 17:54 ---
Subject: Re:  [4.1/4.2 Regression] Minimal c++ program using threads and
exceptions crashes when compiled statically

Sure this is (exactly) related? I tried to pull in some of the symbols that
might be missing to no avail.

Interestingly, the problem does not appear on my x86-64!

Also:
Starting program: /home/ahu/programming-new/exploit/minimal
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 11300)]
[New Thread 32769 (LWP 11301)]
[New Thread 16386 (LWP 11302)]
[Switching to Thread 16386 (LWP 11302)]

Breakpoint 1, __cxa_allocate_exception (thrown_size=8)
at ../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_alloc.cc:115
115   thrown_size += sizeof (__cxa_exception);
(gdb) step
116   ret = malloc (thrown_size);
(gdb) print thrown_size
$1 = 88
(gdb) step
118   if (! ret)
(gdb) print ret
$2 = (void *) 0x8115a60
(gdb) step
116   ret = malloc (thrown_size);
(gdb) step
118   if (! ret)
(gdb)
154   __cxa_eh_globals *globals = __cxa_get_globals ();
(gdb)
__cxa_get_globals () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:71
71  { return __gnu_internal::get_global(); }
(gdb)
__gnu_internal::get_global () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58
58get_global() throw()
(gdb)

Program received signal SIGSEGV, Segmentation fault.
__gnu_internal::get_global () at
../../../../gcc-4.1.0/libstdc++-v3/libsupc++/eh_globals.cc:58
58get_global() throw()


On Fri, Mar 10, 2006 at 04:55:41PM -, pinskia at gcc dot gnu dot org wrote:
 
 
 --- Comment #2 from pinskia at gcc dot gnu dot org  2006-03-10 16:55 
 ---
 Some information about this bug in both the libstdc++ library and the
 libgfortran library on the mainline:
 http://gcc.gnu.org/ml/gcc/2006-03/msg00248.html
 
 
 -- 
 
 
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26633
 
 --- You are receiving this mail because: ---
 You reported the bug, or are watching the reporter.
 
 
 !DSPAM:4411af8b239412042891523!


-- 


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



[Bug middle-end/26635] New: [4.1/4.2 Regression] Bogus Storage_Error warning

2006-03-10 Thread ebotcazou at gcc dot gnu dot org
The patch

2006-01-09  Kazu Hirata  [EMAIL PROTECTED]

PR tree-optimization/25125
* convert.c (convert_to_integer): Don't narrow the type of a
PLUX_EXPR or MINUS_EXPR if !flag_wrapv and the unwidened type
is signed.

has introduced a regression for the Ada testcase that I'm about to attach:

[EMAIL PROTECTED]:~/gnat/bugs/F217-005 gcc -S p.ads
p.ads:12:03: warning: Storage_Error will be raised at run-time

The testcase should compile silently.

Analysis: http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00198.html

I think Kazu's original patch was the correct fix.


-- 
   Summary: [4.1/4.2 Regression] Bogus Storage_Error warning
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ebotcazou at gcc dot gnu dot org
 GCC build triplet: *-*-*
  GCC host triplet: *-*-*
GCC target triplet: *-*-*


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



[Bug middle-end/26635] [4.1/4.2 Regression] Bogus Storage_Error warning

2006-03-10 Thread ebotcazou at gcc dot gnu dot org


--- Comment #1 from ebotcazou at gcc dot gnu dot org  2006-03-10 18:00 
---
Created an attachment (id=11016)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11016action=view)
Reduced Ada testcase.


-- 


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



[Bug java/26390] Problem dispatching method call when method does not exist in superclass

2006-03-10 Thread mark at gcc dot gnu dot org


--- Comment #3 from mark at gcc dot gnu dot org  2006-03-10 18:13 ---
While importing 0.90 into libgcj I also noticed this. Setting this package to
bc (like the other awt peer implementations) gives:

make[3]: Entering directory `/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava'
/bin/sh ./libtool --mode=compile /home/mark/src/gcc-obj/gcc/gcj
-B/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/
-B/home/mark/src/gcc-obj/gcc/ -ffloat-store -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -fjni
-findirect-dispatch -c -o gnu-java-awt-peer-swing.lo
@gnu-java-awt-peer-swing.list
/home/mark/src/gcc-obj/gcc/gcj
-B/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/
-B/home/mark/src/gcc-obj/gcc/ -ffloat-store -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -fjni
-findirect-dispatch -c @gnu-java-awt-peer-swing.list -fPIC -o
.libs/gnu-java-awt-peer-swing.o
gnu/java/awt/peer/swing/SwingFramePeer.java: In class
'gnu.java.awt.peer.swing.SwingFramePeer':
gnu/java/awt/peer/swing/SwingFramePeer.java: In method
'gnu.java.awt.peer.swing.SwingFramePeer.setBounds(int,int,int,int)':
gnu/java/awt/peer/swing/SwingFramePeer.java:118: error: verification failed at
PC=6: didn't see expected constant
make[3]: *** [gnu-java-awt-peer-swing.lo] Error 1

where line 118 is indeed:
 super.setBounds(x, y, w, h);


-- 


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



[Bug target/26636] use of r1-r3 across __sdivsi3_4 call

2006-03-10 Thread rmansfield at qnx dot com


--- Comment #1 from rmansfield at qnx dot com  2006-03-10 18:23 ---
When attaching the test case, I experience a internal error with gcc bugzilla
which I reported to dberlin. I am going to attach the test case in a comment. 
I attempted to reduce the test case, but it changed reg. allocation which made
reproducing it difficult.

#include stdlib.h
#include stdio.h

# define M   14  
# define PIT_MIN 30  
# define SS_AUDIO_SAMPLE_SIZE 2

int main(int argc, char *argv[]) {
int iMarkEvntDelayTime  = 0;
int iSampleRate = 0;
int iBlockSize  = 0;
int t_op;
int corr[1];
int f_io4[1];

int daten[1];

   t_op = wbe_ol_pitch_estimate( daten, corr, f_io4);

return EXIT_SUCCESS;
}

#define PIT_MIN 30
#define PIT_MAX 193
#define L_SUBFR_LB  60 
#define DIM (3*L_SUBFR_LB)
#define OLPX_SHIFT 4

int
wbe_ol_pitch_estimate
(
 short *x_i,   
 int *corr, 
 int *x_local   
)

{

   inttemp, temp1;   
   int  energy; 
   intdenom;   
   intthresh, thresh2;   

   int *x_t1_ptr, *x_t2_ptr;
   int *x_t_max;
   int *x;

   int i,index,p;

   for (i=0; i  PIT_MIN; i++)
  corr[i] = 0;

   x = x_local;
   for (i = -PIT_MAX; i  DIM; i++)
   {
  *(x++) = x_i[i]OLPX_SHIFT;
   }


   x = x_local+PIT_MAX;  
   x_t_max = x +DIM;   
   x_t1_ptr = x;  
   x_t2_ptr = x-PIT_MIN;   
   energy= 0;  
   temp = 0;  

   while( x_t1_ptr  x_t_max)
   {
  temp1 = (int)(*x_t2_ptr);  
  temp +=   (*x_t1_ptr) * temp1;  
  energy += temp1 * temp1;
  x_t1_ptr++;
  x_t2_ptr++;
   }

   denom = energy10;
   if (denom = 0) denom=1;   
   corr[PIT_MIN] = temp/denom; 


   index   = PIT_MIN;  

   for( i=PIT_MIN+1; iPIT_MAX; i++)   
   {
  temp = 0;  
  x_t1_ptr = x;  
  x_t2_ptr = x-i; 
  while( x_t1_ptr  x_t_max)  
  {
 temp +=  (*x_t1_ptr) * (*x_t2_ptr); 
 x_t1_ptr++;
 x_t2_ptr++;

  }

  temp1 = (int)x[DIM-i];
  temp1 *= temp1;
  energy -= temp1;
  temp1 = (int)x[-i];
  temp1 *= temp1;
  energy += temp1;

  /* calculate the normalized correlation temp/energy */

  denom = energy10;
  if (denom = 0) denom=1; 

  temp = temp/denom;   
  corr[i] = temp;
  thresh = (temp2) + (temp1);  
  if( i((index1)-5))
 if( temp  corr[index] )
index = i;

  if( i=((index1)-5))
 if( thresh  corr[index] )
index = i;
   }


   thresh2=(corr[index]1);
   p = index/3;
   for( i=p-5; ip+5; i++)
   {
  if( thresh2  corr[i] )
  {
 index = i;
 thresh2=(corr[index]1); 
  }
   }

   return( index );
} 


-- 


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



[Bug target/26098] [4.0 Regression] ICE in multiplication of 16-byte longlong vector on x86_64

2006-03-10 Thread dtemirbulatov at gmail dot com


--- Comment #3 from dtemirbulatov at gmail dot com  2006-03-10 19:09 ---
Created an attachment (id=11018)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11018action=view)
bug fix

this a backport form the mainline 

2005-05-17  Richard Henderson  [EMAIL PROTECTED]

   * config/i386/sse.md (mulv16qi3, mulv2di3): New


-- 


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



[Bug target/26636] New: use of r1-r3 across __sdivsi3_4 call

2006-03-10 Thread rmansfield at qnx dot com
[EMAIL PROTECTED] rmansfield]$
/home/rmansfield/crosstool/gcc-4.0-20060309-glibc-2.3.6/sh4-unknown-linux-gnu/bin/sh4-unknown-linux-gnu-gcc
-v -o t.s -S -m4 -O2 t.c
Using built-in specs.
Target: sh4-unknown-linux-gnu
Configured with:
/home/rmansfield/crosstool-0.42/build/sh4-unknown-linux-gnu/gcc-4.0-20060309-glibc-2.3.6/gcc-4.0-20060309/configure
--target=sh4-unknown-linux-gnu --host=i686-host_pc-linux-gnu
--prefix=/home/rmansfield/crosstool/gcc-4.0-20060309-glibc-2.3.6/sh4-unknown-linux-gnu
--with-multilib-list=m4,m4-nofpu
--with-headers=/home/rmansfield/crosstool/gcc-4.0-20060309-glibc-2.3.6/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu/include
--with-local-prefix=/home/rmansfield/crosstool/gcc-4.0-20060309-glibc-2.3.6/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu
--disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit
--enable-languages=c --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.0.3


mov.l   .L66,r0
mov r11,r1
mov.w   .L65,r12
add #64,r1  ; use here
mov r3,r8
mov #30,r13
jsr @r0 ; call to __sdivsi3_4
nop
sts fpul,r2
add #-124,r8
mov #120,r0
add r3,r12
mov.l   r0,@(8,r14)
mov #31,r7
mov.l   r2,@(56,r1) ; kaboom

...

.L66:
.long   __sdivsi3_i4


Then in the plt stub r1 gets clobbered.

0x804041c _sdivsi3_i4:mov.l   0x8040424 _sdivsi3_i4+8,r1!
0x80418a0
0x804041e _sdivsi3_i4+2:  mov.l   @r1,r1
0x8040420 _sdivsi3_i4+4:  jmp @r1

/home/rmansfield/crosstool/gcc-4.1.0-glibc-2.3.6/sh4-unknown-linux-gnu/bin/sh4-unknown-linux-gnu-gcc
-v -o t.s -S -m4 -O2 t.c 
Using built-in specs.
Target: sh4-unknown-linux-gnu
Configured with:
/home/rmansfield/crosstool-0.42/build/sh4-unknown-linux-gnu/gcc-4.1.0-glibc-2.3.6/gcc-4.1.0/configure
--target=sh4-unknown-linux-gnu --host=i686-host_pc-linux-gnu
--prefix=/home/rmansfield/crosstool/gcc-4.1.0-glibc-2.3.6/sh4-unknown-linux-gnu
--with-multilib-list=m4,m4-nofpu
--with-headers=/home/rmansfield/crosstool/gcc-4.1.0-glibc-2.3.6/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu/include
--with-local-prefix=/home/rmansfield/crosstool/gcc-4.1.0-glibc-2.3.6/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu
--disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit
--enable-languages=c --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.1.0


gcc 4.1 generates the following code:

mov.l   .L57,r0
jsr @r0
nop
sts fpul,r4
.L8:
mov.w   .L55,r8
mov r9,r1
mov.w   .L56,r12
add #64,r1
add r10,r8
mov.l   r4,@(56,r1)

...
.L57:
.long   __sdivsi3_i4


I think this hasn't been previously observed because the .hidden directive in
lib1funcs.asm makes each shared library get its own private __sdivsi3_i4 that
it can call directly and no registers end up being clobbered. But shouldn't
(clobber (reg:SI R1_REG)) in 
divsi3 prevent the use of R1-R3 across the __sdivsi3 call?


-- 
   Summary: use of r1-r3 across __sdivsi3_4 call
   Product: gcc
   Version: 4.0.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rmansfield at qnx dot com
 GCC build triplet: i686-host_pc-linux-gnu
  GCC host triplet: i686-host_pc-linux-gnu
GCC target triplet: sh4-unknown-linux-gnu


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



[Bug rtl-optimization/25569] [4.2 Regression] FAIL: gfortran.dg/g77/20010610.f -O3 -fomit-frame-pointer -funroll-loops

2006-03-10 Thread law at redhat dot com


--- Comment #6 from law at redhat dot com  2006-03-10 19:37 ---
Subject: Re:  [4.2 Regression] FAIL:
gfortran.dg/g77/20010610.f  -O3 -fomit-frame-pointer -funroll-loops

On Wed, 2006-03-08 at 00:07 +, janis at gcc dot gnu dot org wrote:
 
 --- Comment #5 from janis at gcc dot gnu dot org  2006-03-08 00:07 ---
 A regression hunt on powerpc64-linux using the C test case from comment #4
 identified this patch:
 
 http://gcc.gnu.org/viewcvs?view=revrev=110705
 
 r110705 | law | 2006-02-07 18:31:27 + (Tue, 07 Feb 2006)
 
 
 That date doesn't match up with when the Fortran test started failing so I ran
 another regression hunt using it, which identified this patch:
 
 http://gcc.gnu.org/viewcvs?view=revrev=108425
 
 r108425 | law | 2005-12-12 19:59:16 + (Mon, 12 Dec 2005)
Just an FYI -- I probably won't be able to start looking at this
until Monday.  Hopefully it'll be something I can hunt down
with a cross compiler as I don't have a ppc64 box :-)

jeff


-- 


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



  1   2   3   >