[Bug target/30474] Bad 16bit constant code generation on 64bit host

2007-05-23 Thread liqin at gcc dot gnu dot org


--- Comment #3 from liqin at gcc dot gnu dot org  2007-05-23 07:09 ---
Subject: Bug 30474

Author: liqin
Date: Wed May 23 06:09:20 2007
New Revision: 124983

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=124983
Log:
2007-05-23  Chen Liqin  [EMAIL PROTECTED]

PR target/30987
* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
* config/score/predicate.md (const_pow2, const_npow2): remove.
* config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL
undef.
PR target/30474
* config/score/score.c (score_print_operand): makes sure that only
lower 
bits are used.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/score/misc.md
trunk/gcc/config/score/predicates.md
trunk/gcc/config/score/score.c
trunk/gcc/config/score/score.h


-- 


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



[Bug target/30987] [4.3 Regression] Problem while compiling gcc for score

2007-05-23 Thread liqin at gcc dot gnu dot org


--- Comment #8 from liqin at gcc dot gnu dot org  2007-05-23 07:09 ---
Subject: Bug 30987

Author: liqin
Date: Wed May 23 06:09:20 2007
New Revision: 124983

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=124983
Log:
2007-05-23  Chen Liqin  [EMAIL PROTECTED]

PR target/30987
* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
* config/score/predicate.md (const_pow2, const_npow2): remove.
* config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL
undef.
PR target/30474
* config/score/score.c (score_print_operand): makes sure that only
lower 
bits are used.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/score/misc.md
trunk/gcc/config/score/predicates.md
trunk/gcc/config/score/score.c
trunk/gcc/config/score/score.h


-- 


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



[Bug target/30987] [4.3 Regression] Problem while compiling gcc for score

2007-05-23 Thread liqin at gcc dot gnu dot org


--- Comment #9 from liqin at gcc dot gnu dot org  2007-05-23 07:31 ---
* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
* config/score/predicate.md (const_pow2, const_npow2): remove.


-- 

liqin at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug target/30474] Bad 16bit constant code generation on 64bit host

2007-05-23 Thread liqin at gcc dot gnu dot org


--- Comment #4 from liqin at gcc dot gnu dot org  2007-05-23 07:35 ---
* config/score/score.c (score_print_operand): makes sure that only
lower bits are used.


-- 

liqin at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug objc++/32052] New: [4.3 Regression] encode-2.mm, encode-3.mm fail on at least powerpc-darwin

2007-05-23 Thread pinskia at gcc dot gnu dot org
encode-2.mm produces Vec=ffi for its enconding of @encode(Vecfloat).
which is wrong, it should produce Vecfloat=ffi. 

This was caused by:
2007-02-22  Michael Matz  [EMAIL PROTECTED]

PR c++/29433
* cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
* error.c (dump_aggr_type, dump_simple_decl, dump_decl,
dump_function_decl): Guard emitting outer scopes by new flag.
* cp-lang.c (cxx_dwarf_name): New function.
(LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
* pt.c (classtype_mangled_name, mangle_class_name_for_template):
Remove functions.
(push_template_decl_real, lookup_template_class): Remove calls
to above functions.


-- 
   Summary: [4.3 Regression] encode-2.mm, encode-3.mm fail on at
least powerpc-darwin
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: objc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
GCC target triplet: powerpc-darwin
 BugsThisDependsOn: 29433


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



[Bug objc++/32052] [4.3 Regression] encode-2.mm, encode-3.mm fail on at least powerpc-darwin

2007-05-23 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.3.0


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



[Bug fortran/31917] [4.1 only] GFORTRAN_CONVERT_UNIT is ignored

2007-05-23 Thread burnus at gcc dot gnu dot org


--- Comment #6 from burnus at gcc dot gnu dot org  2007-05-23 08:44 ---
 Do you plan a backport?  If not, we should close this.
I decided to backport it in the basis that the failures are difficult to track
as there is not any feedback whether the environment are in effect or not.
Additionally, the fix is very localized.

Fixed.


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
  Known to fail|4.2.0 4.1.2 |4.2.0
  Known to work|4.3.0   |4.3.0 4.1.2
 Resolution||FIXED
Summary|[4.2, 4.1 only] |[4.1 only]
   |GFORTRAN_CONVERT_UNIT is|GFORTRAN_CONVERT_UNIT is
   |ignored |ignored
   Target Milestone|--- |4.2.1


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



[Bug fortran/31917] [4.1 only] GFORTRAN_CONVERT_UNIT is ignored

2007-05-23 Thread burnus at gcc dot gnu dot org


--- Comment #7 from burnus at gcc dot gnu dot org  2007-05-23 08:44 ---
Subject: Bug 31917

Author: burnus
Date: Wed May 23 07:44:23 2007
New Revision: 124984

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=124984
Log:
2007-05-23  Tobias Burnus [EMAIL PROTECTED]

PR fortran/31917
Backport from trunk.
* runtime/environ.c (mark_range): Fix setting default convert unit.


Modified:
branches/gcc-4_2-branch/libgfortran/ChangeLog
branches/gcc-4_2-branch/libgfortran/runtime/environ.c


-- 


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



[Bug fortran/32046] [4.3 Regression] wrong code with -O2 for gfortran.dg/interface_12.f90 result_in_spec_1.f90

2007-05-23 Thread fxcoudert at gcc dot gnu dot org


--- Comment #8 from fxcoudert at gcc dot gnu dot org  2007-05-23 09:25 
---
Subject: Bug 32046

Author: fxcoudert
Date: Wed May 23 08:25:05 2007
New Revision: 124985

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=124985
Log:
PR fortran/32046
* trans-expr.c (gfc_trans_zero_assign): Convert the result of
TYPE_SIZE_UNIT into a signed type.
(gfc_trans_array_copy):  Likewise.
(gfc_trans_array_constructor_copy): Likewise.
* trans-array.c (gfc_trans_create_temp_array): Likewise.
(gfc_grow_array): Likewise.
(gfc_array_init_size): Likewise.
(gfc_duplicate_allocatable): Likewise.
* trans-stmt.c (allocate_temp_for_forall_nest_1): Likewise.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-array.c
trunk/gcc/fortran/trans-expr.c
trunk/gcc/fortran/trans-stmt.c


-- 


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



[Bug fortran/32046] [4.3 Regression] wrong code with -O2 for gfortran.dg/interface_12.f90 result_in_spec_1.f90

2007-05-23 Thread fxcoudert at gcc dot gnu dot org


--- Comment #9 from fxcoudert at gcc dot gnu dot org  2007-05-23 09:34 
---
Fixed.


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #124 from rguenther at suse dot de  2007-05-23 09:35 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Tue, 22 May 2007, dberlin at dberlin dot org wrote:

 --- Comment #116 from dberlin at gcc dot gnu dot org  2007-05-22 18:13 
 ---
 Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
 dynamic type as it should
 
 On 22 May 2007 17:01:40 -, gdr at cs dot tamu dot edu
 [EMAIL PROTECTED] wrote:
 
 
  --- Comment #114 from gdr at cs dot tamu dot edu  2007-05-22 18:01 
  ---
  Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
  dynamic type as it should
 
  mark at codesourcery dot com [EMAIL PROTECTED] writes:
 
  | Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
  |  new does not change the dynamic type as it should
  |
  | gdr at cs dot tamu dot edu wrote:
  |  --- Comment #112 from gdr at cs dot tamu dot edu  2007-05-22 17:46
  ---
  |  Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change
  the
  |  dynamic type as it should
  | 
  |  mark at codesourcery dot com [EMAIL PROTECTED] writes:
  | 
  |  | But, I don't think the standard contemplated
  |  | these issues in sufficient detail to make it useful in this respect.
  | 
  |  The issues has been raised on the -core reflector.
  |
  | So that I understand, do you mean that they have been raised in the
  | past, and settled, or that you've just raised them now?
 
  I just raised it, mainly because I do not believe your conclusions are
  right.
 
  The type information you can get from write and read  are not just
  those appearing lexically in a scope.  In fact, the semantics is defined
  in terms of the run time read and write access.
  That is what makes C a strongly typed and weakly check language (DMR).
 
  This whole issue does not mean you have to abandon TBAA.  It means you
  have be careful in how you use the information gained from TBAA.  In
  particular, many conclusions are OK when you have the definition of
  the objects at hand.
 
 Uh, you do more or less have to abandon TBAA for pointer arguments
 unless you can account for every single caller of your function, and
 ensure that none of them are passing you pointers external to what
 your compiler can see.  This case is *extremely rare* outside of the
 user giving us a whole program guarantee.
 
 TBAA's main use is in fact, in disambiguating pointer arguments.  If
 you take that away, it becomes pretty much useless.
 It's guarantees about local objects were never interesting.

But you can still perform hoisting loads of incoming pointer arguments
and sinking stores to incoming pointer arguments.  Please read comment 
#105 and come up with a testcase where we wouldn't be allowed to do
a useful transformation we do now.  So I believe making placement new
work with our current scheme will severely pessimize placement new
users, but if we slightly change rules for everyone we'll be all happy.

Richard.


-- 


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



[Bug objc++/32052] [4.3 Regression] encode-2.mm, encode-3.mm fail on at least powerpc-darwin

2007-05-23 Thread matz at gcc dot gnu dot org


--- Comment #1 from matz at gcc dot gnu dot org  2007-05-23 09:36 ---
The ObjC frontend seems to use IDENTIFIER_POINTER directly to produce
this encoding.  This doesn't contain template arguments anymore.  And from
quick reading of obj-act.c it's also not clear if it was really expecting
funny characters like '' in those identifiers.  It happily uses these
names to construct other identifiers.  This works fine in C, but in C++,
when they still contained template args the new identifiers would contain 
and ,, surely not something you expect from normal identifiers.

I would suggest auditing objc-act.c carefully, if using IDENTIFIER_POINTER
is really correct everywhere.

Additionally, someone knowledgable in Obj-C++ should define once and for
all what the encoding of such types should be.  If it is supposed to
include template args, then you need to use a different mean than
accessing IDENTIFIER_POINTER.  One way would be
  decl_as_string (t, TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME);
(Or leaving out TFF_UNQUALIFIED_NAME if you also need toplevel namespaces
in there).


-- 


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



[Bug fortran/32046] [4.3 Regression] wrong code with -O2 for gfortran.dg/interface_12.f90 result_in_spec_1.f90

2007-05-23 Thread patchapp at dberlin dot org


--- Comment #10 from patchapp at dberlin dot org  2007-05-23 09:44 ---
Subject: Bug number PR32046

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/2007-05/msg01499.html


-- 


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



[Bug c++/32053] New: Anonymous union members' names should be distinct within enclosing scope

2007-05-23 Thread andrew dot stubbs at st dot com
The following program should not compile:

extern int foo;
static union
{
 int foo; // clash
};

C++ standard clause 9.5/2 states that members of anonymous unions must have
names distinct from other names in the same scope.

If the `extern' keyword is removed from the example above, the error is
diagnosed correctly (followed by an ICE).


-- 
   Summary: Anonymous union members' names should be distinct within
enclosing scope
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot stubbs at st dot com


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



[Bug c++/32054] New: Storage classes on anonymous unions in classes

2007-05-23 Thread andrew dot stubbs at st dot com
The following program should not compile.

class C
{
  auto union  // bad
{
  int a;
};
  register union  // bad
{
  int b;
};
  static union  // bad
{
  int c;
};
  extern union  // bad
{
  int d;
};
  mutable union  // bad
{
  int e;
};
};

auto, register, and extern are not normally allowed in classes.

static and mutable might be allowed on other members, but not on anonymous
unions. See C++ standard clause 9.5/3.


-- 
   Summary: Storage classes on anonymous unions in classes
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot stubbs at st dot com


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



[Bug middle-end/32044] udivdi3 counterproductive, unwarranted use

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2007-05-23 11:17 ---
This particular case is indeed an optimization issue and __udivdi3 can be
avoided
by using volatile as stated and verified.


-- 

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=32044



[Bug fortran/32048] max / min and NaN

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2007-05-23 11:21 ---
Of course people are complaining that min/max as of IEEE does not propagate
NaNs
as other operations do.


-- 


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



[Bug fortran/31219] ICE on array of character function results

2007-05-23 Thread patchapp at dberlin dot org


--- Comment #8 from patchapp at dberlin dot org  2007-05-23 11:25 ---
Subject: Bug number PR31219

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/2007-05/msg01540.html


-- 


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



[Bug fortran/32047] ICE (segfault) for pure function without argument

2007-05-23 Thread pault at gcc dot gnu dot org


--- Comment #2 from pault at gcc dot gnu dot org  2007-05-23 11:36 ---
I will submit a patch in a few minutes.

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-05-23 11:36:21
   date||


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



[Bug fortran/32047] ICE (segfault) for pure function without argument

2007-05-23 Thread patchapp at dberlin dot org


--- Comment #3 from patchapp at dberlin dot org  2007-05-23 11:55 ---
Subject: Bug number PR32047

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/2007-05/msg01541.html


-- 


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



[Bug target/32055] New: reload failure building libgfortran

2007-05-23 Thread rask at sygehus dot dk
I have configured gcc (revision 124905) like this:
/n/08/rask/src/gcc/configure --target=m32c-unknown-elf --with-gmp=${HOME}/opt
--with-mpfr=${HOME}/opt --disable-nls --with-newlib --enable-sim
--disable-multilib

Building libgfortran fails with this ICE:

/home/rask/build/gcc-m32c-unknown-elf/./gcc/gfortran
-B/home/rask/build/gcc-m32c-unknown-elf/./gcc/ -nostdinc
-B/home/rask/build/gcc-m32c-unknown-elf/m32c-unknown-elf/newlib/ -isystem
/home/rask/build/gcc-m32c-unknown-elf/m32c-unknown-elf/newlib/targ-include
-isystem /n/08/rask/src/gcc/newlib/libc/include
-B/usr/local/m32c-unknown-elf/bin/ -B/usr/local/m32c-unknown-elf/lib/ -isystem
/usr/local/m32c-unknown-elf/include -isystem
/usr/local/m32c-unknown-elf/sys-include
-L/home/rask/build/gcc-m32c-unknown-elf/./ld
-B/home/rask/build/gcc-m32c-unknown-elf/m32c-unknown-elf/libgloss/m32c
-L/home/rask/build/gcc-m32c-unknown-elf/m32c-unknown-elf/libgloss/m32c
-L/home/rask/build/gcc-m32c-unknown-elf/m32c-unknown-elf/libgloss/libnosys -I .
-Wall -fno-repack-arrays -fno-underscoring -fallow-leading-underscore -g -O2 -c
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90 -o
selected_int_kind.o
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90: In function
'_gfortran_selected_int_kind':
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90:42: error:
unable to find a register to spill in class 'A_REGS'
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90:42: error: this
is the insn:
(jump_insn 81 79 117 3
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90:36 (set (pc)
(if_then_else (lt (mem/s/u:HI (plus:HI (reg:SI 0 r0 [100])
(const:HI (plus:HI (symbol_ref:HI (int_infos.867)
[flags 0x2] var_decl 0x4872f1cc int_infos)
(const_int 6 [0x6] [2 variable.range+2 S2
A8])
(reg:HI 3 r3 [orig:108 pretmp.24+2 ] [108]))
(label_ref 96)
(pc))) 48 {cbranchhi4} (insn_list:REG_DEP_TRUE 79 (nil))
(expr_list:REG_BR_PROB (const_int 5000 [0x1388])
(nil)))
/n/08/rask/src/gcc/libgfortran/intrinsics/selected_int_kind.f90:42: internal
compiler error: in spill_failure, at reload1.c:2002

The (plus:HI (reg:SI ...)) bit looks suspicious.


-- 
   Summary: reload failure building libgfortran
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rask at sygehus dot dk
 GCC build triplet: i386-unknown-netbsdelf2.0.2
  GCC host triplet: i386-unknown-netbsdelf2.0.2
GCC target triplet: m32c-unknown-elf


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



[Bug c++/32056] New: Storage classes on template parameters

2007-05-23 Thread andrew dot stubbs at st dot com
None of the following should be accepted.

template auto int T struct A {};
template extern int T struct B {};
template static int T struct C {};
template register int T struct D {};
template mutable int T struct E {};

The extern, static and mutable are rejected with this message:

t.cxx:2: error: storage class specifiers invalid in parameter declarations
t.cxx:2: error: storage class specified for parameter ‘T’
t.cxx:3: error: storage class specifiers invalid in parameter declarations
t.cxx:3: error: storage class specified for parameter ‘T’
t.cxx:5: error: non-member ‘T’ cannot be declared ‘mutable’

But static and register have been accepted.

Clause 14.1/2 of the C++ standard says that storage classes should not be used
here.


-- 
   Summary: Storage classes on template parameters
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot stubbs at st dot com


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



[Bug other/32051] Patch: Add GCC Extension Modules (GEM) to 4.1.1 4.2.1 4.3.0

2007-05-23 Thread manu at gcc dot gnu dot org


--- Comment #7 from manu at gcc dot gnu dot org  2007-05-23 13:06 ---
(In reply to comment #6)
 Got mid-air colision message when clicking submit. I understand this is
 closed.
 

What Andrew is trying to say in his particular way is that we cannot accept
those patches (for the reasons stated), thus we are not going to spend time on
discussing about it or much less reviewing the code because it will be a waste
of our scarce time. Once the issues are solved (the copyright assignment is a
major issue, another issue is who is going to maintain and fix bugs in all this
code in the future), you may be able to convince someone to look into it.

You may check out your own version and play with frameworks on it. However, GNU
GCC is not a research toy. My sincere advice: find people interested on GEM,
create a community around it, make it popular some many
people/corporations/distributions start using it, then try to get it merged.

I wish good luck and happy coding!


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org


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



[Bug middle-end/32044] udivdi3 counterproductive, unwarranted use

2007-05-23 Thread manu at gcc dot gnu dot org


--- Comment #9 from manu at gcc dot gnu dot org  2007-05-23 13:15 ---
(In reply to comment #3)
 
 The meaning of __builtin_expect is as defined in the documentation.
 This particular transformation has nothing to do with __builtin_expect.
 The transformation happens regardless of __builtin_expect.
 
 scev_const_prop eliminates the loop by replacing
 the final value with an expression using divide.
 Probably the right approach would be to prevent this from happening
 ifthe final value expression looks expensive
 (like DImode divide on targets without native DImode divide).
 

Isn't there a way for __builtin_expect to modify this behaviour? After all, it
is telling us that the loop is cheap. And the difference in computation time is
not trivial at all.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org


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



[Bug middle-end/32044] udivdi3 counterproductive, unwarranted use

2007-05-23 Thread malitzke at metronets dot com


--- Comment #10 from malitzke at metronets dot com  2007-05-23 13:17 ---
Mr. Guenther!

The volatile fix would be fine, but (at least for me) does not work with the
kernel. There is that little message:

kernel/time.c:479: warning: passing argument 3 of 'div_long_rem_signed'
discards qualifiers from pointer target type.

and others like it, and, udivdi3 reappears.

Mr. Park!

The patch you kindly included in comment 3 presented two difficulties:

1. I Acould not extricate it cleanly enough from the html encoding apparently
standard with bugzilla. (this is a Mozilla Product)

2. After some editing patch just accepted 1 hunk and upon checking it turned
out that the svn derived tree-scalar.evolution.c did not match the enclosing
lines around the lines to be added. I added those lines by hand (possibly
imperfectly, enven on careful checking) the file compiled OK, but, runnign the
gcc check sequence I got a stream of error. These errors disappeared on using a
sequestered unpatched copy of the file. Hence, udivdi3 reappeared. If you see
fit for me to test this not only on the reduced test case but on the actual
kernel I suggest sending me a updated patch as a text attachment to my email.

Thanks to all for trying to help.




-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #125 from gdr at cs dot tamu dot edu  2007-05-23 14:22 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

rguenther at suse dot de [EMAIL PROTECTED] writes:

[...]

| But you can still perform hoisting loads of incoming pointer arguments
| and sinking stores to incoming pointer arguments.  Please read comment 
| #105 and come up with a testcase where we wouldn't be allowed to do
| a useful transformation we do now.  So I believe making placement new
| work with our current scheme will severely pessimize placement new
| users, but if we slightly change rules for everyone we'll be all happy.

Update.

The only comment I have so far on the -core reflector is to the effect
that the reading that the program I posted earlier violates NO
aliasing rule.  I'll follow with the proposal to bring the rules in
line with recent C99 rules.

-- Gaby


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #126 from rguenther at suse dot de  2007-05-23 14:43 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, gdr at cs dot tamu dot edu wrote:

 --- Comment #125 from gdr at cs dot tamu dot edu  2007-05-23 14:22 ---
 Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
 dynamic type as it should
 
 rguenther at suse dot de [EMAIL PROTECTED] writes:
 
 [...]
 
 | But you can still perform hoisting loads of incoming pointer arguments
 | and sinking stores to incoming pointer arguments.  Please read comment 
 | #105 and come up with a testcase where we wouldn't be allowed to do
 | a useful transformation we do now.  So I believe making placement new
 | work with our current scheme will severely pessimize placement new
 | users, but if we slightly change rules for everyone we'll be all happy.
 
 Update.
 
 The only comment I have so far on the -core reflector is to the effect
 that the reading that the program I posted earlier violates NO
 aliasing rule.  I'll follow with the proposal to bring the rules in
 line with recent C99 rules.

Note that it is important to retain the capability to implement
memory allocators in C++ that are allowed to re-use memory for different
typed objects.  Which is not possible with C99 rules.

Richard.


-- 


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



[Bug middle-end/32044] udivdi3 counterproductive, unwarranted use

2007-05-23 Thread malitzke at metronets dot com


--- Comment #11 from malitzke at metronets dot com  2007-05-23 14:51 ---
Mr. Ibanez!

Thank you (muchas gracias) for looking at the matter from a user's point of
view and considering my arguments concerning __builtin_expect. You seem to be
the first to look at the timings and amount of code generated. If you are
interested I have equivalent data taken on a MAC with dual G4's. I did not send
it so far because until you intervened I got mostly legalistic arguments and
proposed fixes that do no solve the real problem of avoiding both udivdi3 and
more importantly libgcc.


-- 

malitzke at metronets dot com changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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



[Bug testsuite/32057] New: Random failure on gfortran.dg/secnds.f

2007-05-23 Thread hjl at lucon dot org
I got random failure on gfortran.dg/secnds.f, which has

  t1 = secnds (0.0)
  call date_and_time (dum1, dum2, dum3, values)
  t1a = secnds (0.0)
  dat1 = 0.001*real (values(8)) + real (values(7)) +
 60.0*real (values(6)) + 3600.0* real (values(5))
  if (((dat1 - t1)  0.) .or. ((dat1 - t1)  (t1a - t1))) call abort ()
  do j=1,1
do i=1,1
end do
  end do
  t2a = secnds (t1a)
  call date_and_time (dum1, dum2, dum3, values)
  t2 = secnds (t1)
  dat2 = 0.001*real (values(8)) + real (values(7)) +
 60.0*real (values(6)) + 3600.0* real (values(5))
  if (((dat2 - dat1)  t2a) .or. ((dat2 - dat1)  t2)) call abort ()

I assume the dummy loop is used for delay. I don't think it is that reliable.
Can't we use sleep here?


-- 
   Summary: Random failure on gfortran.dg/secnds.f
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl at lucon dot org


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



[Bug middle-end/32044] udivdi3 counterproductive, unwarranted use

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #12 from rguenth at gcc dot gnu dot org  2007-05-23 15:13 
---
So this is now an enhancement request for sccp to honor loop roll count or
basic-block frequency and cost of the replacement.  Note the loop appears to be
peeled twice before sccp already, but peeling doesn't decay probabilities
further.

Testcase:

int rmg(unsigned long long nsec)
{
   int sec = 0;
   nsec++;
   while (__builtin_expect(nsec = 10UL, 0)) {
  nsec -= 10UL;
  ++sec;
   }
   return sec;
}

note this can be worked around with -fno-tree-scev-cprop as well.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rakdver at gcc dot gnu dot
   ||org
   Severity|normal  |enhancement
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-05-23 15:13:15
   date||


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread ian at airs dot com


--- Comment #127 from ian at airs dot com  2007-05-23 15:23 ---
Re comment #105.

The case where TBAA is most useful is on a deeply pipelined in-order processor
with multiple function units and a high latency memory cache.  One example I've
worked on is an embedded VLIW processor with vector instructions.  TBAA is of
relatively little interest on an out-of-order processor.

It's interesting to talk about PTA when you see the actual objects and you see
how the pointers are taken.  But in practice many real functions simply take
pointers to arrays in memory.  PTA can say nothing useful about those pointers,
since they could point to anything.  TBAA can say a lot.

Losing the ability to sinks loads across stores and vice-versa means putting
additional constraints on the scheduler which makes it harder to exploit the
multiple function units.  Conversely, it constrains the register allocator by
tending to extend register lifetimes.

Also, in your list of cases, you missed
x = *int;
*double = 1.0;
x = *int;
With TBAA we can eliminate the second load as a duplicate.  With your proposed
aliasing change we can not.

I don't understand why you argue in comment #124 that our current scheme will
esverely penalize placement new.  On mainline there is no penalty for placement
new.  So you must be referring to one of the patches.  But I don't think we've
agreed on any of them at the moment.  And I think we see the outlines of a
successful patch: make placement new return a pointer which effectively aliases
everything.  That will permit us to reorder loads and eliminate dead stores. 
It won't permit us to arbitrarily re-order loads and stores, but I'm skeptical
that that will count as a severe penalty.


-- 


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



[Bug bootstrap/32009] [4.3 Regression] building gcc4-4.3.0-20070518 failed on OSX 10.3.9

2007-05-23 Thread bonzini at gnu dot org


--- Comment #8 from bonzini at gnu dot org  2007-05-23 15:24 ---
I have a Mac so I can fix this, but I'm not sure on the timing.  I'm commenting
out the BOOT_CFLAGS setting for a moment to unbreak bootstrap.


-- 


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



[Bug bootstrap/32009] [4.3 Regression] building gcc4-4.3.0-20070518 failed on OSX 10.3.9

2007-05-23 Thread bonzini at gcc dot gnu dot org


--- Comment #9 from bonzini at gnu dot org  2007-05-23 15:26 ---
Subject: Bug 32009

Author: bonzini
Date: Wed May 23 14:26:31 2007
New Revision: 124990

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=124990
Log:
2007-05-23  Paolo Bonzini  [EMAIL PROTECTED]

PR bootstrap/32009
* mh-ppc-darwin: Temporarily disable.


Modified:
trunk/config/ChangeLog
trunk/config/mh-ppc-darwin


-- 


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



[Bug testsuite/32057] Random failure on gfortran.dg/secnds.f

2007-05-23 Thread dominiq at lps dot ens dot fr


--- Comment #1 from dominiq at lps dot ens dot fr  2007-05-23 15:34 ---
 I assume the dummy loop is used for delay. I don't think it is that reliable.

I think you are right about the delay, but not about the real problem: you have
the same with secnds-1.f which does not cantain the loop. The goal of the tests
is not to measure some time, but to check that intervals are properly ordered,
i.e., t1=dat1=t1a and t2a=dat2-dat1= t2.

I have started to investigate the problem, see the thread:

http://gcc.gnu.org/ml/fortran/2007-05/msg00216.html

I have started to prepare a report of my findings, but I got distracted because
gcc is no longer building on Darwin. 

The main cause of failures is because the tests do not account for round off
errors.  This can easily handled for first test by comparing to the nearest
values from below and above: the failure rate seems below a couple ppb (part
per billion) measured on secnds-1.f, using a naive way to measure it. I think
this is due to the fact that t1 and t1a are absolute times.  For the second
test I had to use wider tolerances (such as spacing(24.0*3600.0)) and even so I
get some errors on Pentium machines ~1/1.

After having removed this main source of failure I have found three more:
(1) the tests do not handle timing around midnight when the counts go from
86400.0 to 0.0,
(2) there is a rounding problem in secnds such that secnds(86400.0) returns
86400.0 during the 3ms before midnight,
(3) on some machine the clock synchronization put the tests in jeopardy when
the clock has a negative lag: the value returned after is before the value
returned before! I think this is a detectable but unrecoverable error and,
when detected, the tests should be skipped and repeated.  I have a fix for the
two other cases, although (2) should probably handled at the secnds level.

In top of the report, I have started to prepare a program to do some testing on
platforms I have no access to (I have used PPC Darwin, and AMD64 and Pentium
Linux). I was planning to join it to the report (Encouragements are welcome !-)


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #128 from rguenther at suse dot de  2007-05-23 15:37 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, ian at airs dot com wrote:

 --- Comment #127 from ian at airs dot com  2007-05-23 15:23 ---
 Re comment #105.
 
 The case where TBAA is most useful is on a deeply pipelined in-order processor
 with multiple function units and a high latency memory cache.  One example 
 I've
 worked on is an embedded VLIW processor with vector instructions.  TBAA is of
 relatively little interest on an out-of-order processor.
 
 It's interesting to talk about PTA when you see the actual objects and you see
 how the pointers are taken.  But in practice many real functions simply take
 pointers to arrays in memory.  PTA can say nothing useful about those 
 pointers,
 since they could point to anything.  TBAA can say a lot.
 
 Losing the ability to sinks loads across stores and vice-versa means putting
 additional constraints on the scheduler which makes it harder to exploit the
 multiple function units.  Conversely, it constrains the register allocator by
 tending to extend register lifetimes.

Sure, scheduling is one of the places we sink loads or hoist stores.

 
 Also, in your list of cases, you missed
 x = *int;
 *double = 1.0;
 x = *int;
 With TBAA we can eliminate the second load as a duplicate.  With your proposed
 aliasing change we can not.

We still can.  We can hoist the second load before the store and so make
both loads load the same value.  The fact that there is a second load
of int after the store to double disambiguates the two memory locations.

 I don't understand why you argue in comment #124 that our current scheme will
 esverely penalize placement new.  On mainline there is no penalty for 
 placement
 new.  So you must be referring to one of the patches.

Yes, I was refering to patches that make changes to forbid sinking a load
across a store.  With our current IL this will also forbid hoisting a
loop-invariant load - which is the key to good performance on tramp3d.

 But I don't think we've
 agreed on any of them at the moment.  And I think we see the outlines of a
 successful patch: make placement new return a pointer which effectively 
 aliases
 everything.  That will permit us to reorder loads and eliminate dead stores. 
 It won't permit us to arbitrarily re-order loads and stores, but I'm skeptical
 that that will count as a severe penalty.

But...

void foo(int *p)
{
  float *f = (float *)p;
  new (p) float;
  *f = 1.0;
}

there is no new pointer from placement new.  All placement new does is
(magically) change the dynamic pointed-to type.

Or would you argue the above is invalid?  It is hard to make
non-trivial cases work and not impose a full memory barrier at the
point of the placement new.  In the above case you would need to
make the alias sets of float conflict with everything in which case
only trivial cases will allow to DSE stores to float or hoist loads
of floats.

As I said - with our current IL design I see no nice way to express
the constraints placement new sets without imposing more constraints
than necessary.  (This is also true for my proposed changes -- those
constraints would be implicit in the IL, just optimization passes
would not need to look for PLACEMENT_NEW_EXPRs but simply follow
rules if they do optimizations on memory operations)

Maybe to find a compromise how about making PLACEMENT_NEW_EXPR
effective only after RTL expansion?  So, during tree optimization
completely ignore it (from the alias IL representation perspective)
and follow the changed rules I proposed and after RTL expansion
make placement new effects explicit, like by merging target type
alias sets with alias set zero.

Richard.


-- 


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



[Bug bootstrap/32009] [4.3 Regression] building gcc4-4.3.0-20070518 failed on OSX 10.3.9

2007-05-23 Thread dominiq at lps dot ens dot fr


--- Comment #10 from dominiq at lps dot ens dot fr  2007-05-23 15:39 ---
 I have a Mac so I can fix this, but I'm not sure on the timing.  
 I'm commenting out the BOOT_CFLAGS setting for a moment to unbreak bootstrap.

I'll give a try tonight, but it should work (I am not sure to believe the 3-5%
on compile time, I'll see!-).

Thanks


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #129 from gdr at cs dot tamu dot edu  2007-05-23 15:59 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

rguenther at suse dot de [EMAIL PROTECTED] writes:

| Note that it is important to retain the capability to implement
| memory allocators in C++ that are allowed to re-use memory for different
| typed objects.

Yes, the C++ committee will never allow a rule that bans
platcement-new and memory allocators :-)

-- Gaby


-- 


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



[Bug testsuite/32057] Random failure on gfortran.dg/secnds.f

2007-05-23 Thread kargl at gcc dot gnu dot org


--- Comment #2 from kargl at gcc dot gnu dot org  2007-05-23 16:05 ---

 Can't we use sleep here?
 

No.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread ian at airs dot com


--- Comment #130 from ian at airs dot com  2007-05-23 16:43 ---
In this example

void foo(int *p)
{
  float *f = (float *)p;
  new (p) float;
  *f = 1.0;
}

the pointer is p.  In fact the relevant pointer is always the argument to
placement new, and every pointer which PTA can associate with it.

We may simply have an impasse here.  You have a set of rules which will change
the compiler to support placement new while giving better results for your
code.  I believe that your change will penalize the code I used to work with.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #131 from rguenther at suse dot de  2007-05-23 16:54 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, ian at airs dot com wrote:

 --- Comment #130 from ian at airs dot com  2007-05-23 16:43 ---
 In this example
 
 void foo(int *p)
 {
   float *f = (float *)p;
   new (p) float;
   *f = 1.0;
 }
 
 the pointer is p.  In fact the relevant pointer is always the argument to
 placement new, and every pointer which PTA can associate with it.

I don't read that into the semantics of placement new ;)  Placement
new doesn't care about the pointer used to refer to the memory it
operates on.

 We may simply have an impasse here.  You have a set of rules which will change
 the compiler to support placement new while giving better results for your
 code.  I believe that your change will penalize the code I used to work with.

Ok, fair enough.  I'll try to teach load-store-motion for loops to not
re-order the inserted stores compared to the order on the loop exit path.
This is the only transformation on the tree-level I came across that 
violates my proposed semantics.

Richard.


-- 


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



[Bug c/32023] No casts in lvalue error message

2007-05-23 Thread manu at gcc dot gnu dot org


--- Comment #10 from manu at gcc dot gnu dot org  2007-05-23 16:57 ---
(In reply to comment #8)
 The point I'm trying to express is that it's useful for user to have more
 precise explanation.
 

Would you be happy with something like?

t.c:9: error: lvalue required as increment operand
t.c:9: note: a cast is not a lvalue

Perhaps we could even pack it in a single line.

The feasibility of this depends on whether we can get this information when we
emit the diagnostic. I think if someone wants to pursue it, it shouldn't be
difficult. So why not keep it open? Low-hanging fruit like this is ideal for
newbies.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||diagnostic
   Last reconfirmed|-00-00 00:00:00 |2007-05-23 16:57:17
   date||


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



[Bug c/32023] No casts in lvalue error message

2007-05-23 Thread nshmyrev at yandex dot ru


--- Comment #11 from nshmyrev at yandex dot ru  2007-05-23 17:06 ---
Exactly :) Thanks Manuel


-- 


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



[Bug c++/32058] New: invalid computed void parameter in template

2007-05-23 Thread paul_m_doc at hotmail dot com
Can't return void from type function instantiation with dependent args for use
in function declaration.

all versions from 3.4 to the latest 4.3.0 build on x86 cygwin/linux complain
with:

error: invalid parameter type 'void'
...

=

template int cond
struct F { typedef void Type; };

template int I
struct X {

   // does not accept dependent computed type void!
   // (void* is fine as is non-dependent F0::Type)

   typedef typename FI::Type ParmT;

   static int func(ParmT) { return 1; }
};

int main()
{
   int i = X0::func();
}



The VisualC++ compilers are fine.


-- 
   Summary: invalid computed void parameter in template
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: paul_m_doc at hotmail dot com


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



[Bug c/31673] `for' loop initial declaration used outside C99 mode is confusing

2007-05-23 Thread manu at gcc dot gnu dot org


--- Comment #6 from manu at gcc dot gnu dot org  2007-05-23 17:36 ---
(In reply to comment #1)
 Created an attachment (id=13431)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13431action=view) [edit]
 Suggested patch.
 

Joerg, please test the patch and modify any failing testcases, then submit the
patch to gcc-patches. I think your version is clearer. Perhaps `for' loop
initial declarations only allowed in C99 mode is shorter and equally clear.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org


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



[Bug other/32051] Patch: Add GCC Extension Modules (GEM) to 4.1.1 4.2.1 4.3.0

2007-05-23 Thread rob1weld at aol dot com


--- Comment #8 from rob1weld at aol dot com  2007-05-23 17:57 ---
Thanks Manuel.

I imagined that since I read it at http://gcc.gnu.org/readings.html that the
GEM would (or _might_) be incorporated in future.


My purpose in posting:

1): The patches were posted MORE with the thought that the general public
would apply the patches, do some tests, submit any fixes - and AFTER all that,
then (and only then) _might_ the maintainers _consider_ adding GEM. 

2): To avoid the possiblility that people who write code (maintainers) would
avoid writing code that shut GEM out (_if_ it _might_ be coming in the future).

One example of this happening is that I tried to add boehm-gc 7 to GCC but the
_Java_ code was written in such a way that you can't add gc-7 without some
re-writing (if you compile GCC _WITHOUT_ Java it compiles fine). The Java
maintainers went under the ABI and snooped in GC's .h files and used
features that have been discontinued and did not follow exactly what is on
http://gcc.gnu.org/contribute.html .

3): I thought it was GPL.

4): It was _never_ my thought that one of the maintainers were simply going to
apply the patches to the SVN and unleash it on everyone.


I agree with Andrew that were not putting it in SVN today - if that is what you
thought I meant. I thought it was something that _might_ be coming and so made
the patches for people to play with it.

I'll fiddle with something else. Maybe have another look at GC7.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread dberlin at dberlin dot org


--- Comment #132 from dberlin at gcc dot gnu dot org  2007-05-23 19:03 
---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

On 23 May 2007 08:35:12 -, rguenther at suse dot de
[EMAIL PROTECTED] wrote:


 --- Comment #124 from rguenther at suse dot de  2007-05-23 09:35 ---
 Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
  new does not change the dynamic type as it should

 On Tue, 22 May 2007, dberlin at dberlin dot org wrote:

  --- Comment #116 from dberlin at gcc dot gnu dot org  2007-05-22 18:13 
  ---
  Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
  dynamic type as it should
 
  On 22 May 2007 17:01:40 -, gdr at cs dot tamu dot edu
  [EMAIL PROTECTED] wrote:
  
  
   --- Comment #114 from gdr at cs dot tamu dot edu  2007-05-22 18:01 
   ---
   Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change 
   the
   dynamic type as it should
  
   mark at codesourcery dot com [EMAIL PROTECTED] writes:
  
   | Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
   |  new does not change the dynamic type as it should
   |
   | gdr at cs dot tamu dot edu wrote:
   |  --- Comment #112 from gdr at cs dot tamu dot edu  2007-05-22 17:46
   ---
   |  Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not 
   change
   the
   |  dynamic type as it should
   | 
   |  mark at codesourcery dot com [EMAIL PROTECTED] writes:
   | 
   |  | But, I don't think the standard contemplated
   |  | these issues in sufficient detail to make it useful in this respect.
   | 
   |  The issues has been raised on the -core reflector.
   |
   | So that I understand, do you mean that they have been raised in the
   | past, and settled, or that you've just raised them now?
  
   I just raised it, mainly because I do not believe your conclusions are
   right.
  
   The type information you can get from write and read  are not just
   those appearing lexically in a scope.  In fact, the semantics is defined
   in terms of the run time read and write access.
   That is what makes C a strongly typed and weakly check language (DMR).
  
   This whole issue does not mean you have to abandon TBAA.  It means you
   have be careful in how you use the information gained from TBAA.  In
   particular, many conclusions are OK when you have the definition of
   the objects at hand.
 
  Uh, you do more or less have to abandon TBAA for pointer arguments
  unless you can account for every single caller of your function, and
  ensure that none of them are passing you pointers external to what
  your compiler can see.  This case is *extremely rare* outside of the
  user giving us a whole program guarantee.
 
  TBAA's main use is in fact, in disambiguating pointer arguments.  If
  you take that away, it becomes pretty much useless.
  It's guarantees about local objects were never interesting.

 But you can still perform hoisting loads of incoming pointer arguments
 and sinking stores to incoming pointer arguments.  Please read comment
 #105 and come up with a testcase where we wouldn't be allowed to do
 a useful transformation we do now.  So I believe making placement new
 work with our current scheme will severely pessimize placement new
 users, but if we slightly change rules for everyone we'll be all happy.

Have fun encoding this into the IL :)
If TBAA can't say things about particular load/store pairs, without
having to do a lot of work to see what is in between them, it's not
going to be useful to us.


-- 


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



[Bug middle-end/30537] [4.3 regression] ICE with -fno-unit-at-a-time an inlining

2007-05-23 Thread janis at gcc dot gnu dot org


--- Comment #3 from janis at gcc dot gnu dot org  2007-05-23 19:39 ---
A regression hunt on powerpc-linux using the submitter's test case identified
the following patch:

http://gcc.gnu.org/viewcvs?view=revrev=120835

r120835 | hubicka | 2007-01-16 21:30:54 + (Tue, 16 Jan 2007)


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #133 from mark at codesourcery dot com  2007-05-23 19:43 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

ian at airs dot com wrote:

 The case where TBAA is most useful is on a deeply pipelined in-order processor
 with multiple function units and a high latency memory cache.  One example 
 I've
 worked on is an embedded VLIW processor with vector instructions.  TBAA is of
 relatively little interest on an out-of-order processor.

The original motivating case for me was stuff like:

  void f (int *a, double *d) {
for (int i = 1; i  N; ++i) {
  a[i] += i;
  d[i] = d[i-1] * a[i];
}
  }

That's not the right code, but the point is that TBAA can allow us to
avoid reloading d[i-1] from one iteration to the next, despite the store
to a[i].  That reduces memory access and instruction count.  Ordinary
PTA does not allow this.

Of course, Gaby's memory model doesn't allow this optimization either;
we have to worry that a and d are both in some union somewhere.
That's why Gaby's model is so bad from an optimization point of view; it
makes the compiler assume a worst-case situation, even though that
worst-case situation almost never actually happens.

I'm not an expert on CPU models, so I'm not sure how out-of-order vs.
in-order might matter here.

 And I think we see the outlines of a
 successful patch: make placement new return a pointer which effectively 
 aliases
 everything.  That will permit us to reorder loads and eliminate dead stores. 
 It won't permit us to arbitrarily re-order loads and stores, but I'm skeptical
 that that will count as a severe penalty.

That's exactly what I think.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #134 from rguenth at gcc dot gnu dot org  2007-05-23 19:54 
---
But using a union for type-punning is a gcc extension (and of course the
extension
is only for access through the union), so with strict C99/C++ semantics we can
avoid reloading d[i-1] even if a and d were in the same union because the code
would then be invalid.  So the union case is a non-issue here (it was only used
to
make available enough properly aligned storage for the particular testcase).


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #135 from rguenth at gcc dot gnu dot org  2007-05-23 19:56 
---
Re comment #132 -- you cannot encode this into the IL :/  And I don't propose
to
do so.  And I say any working and optimal (from optimization perspective)
variant
of a fix for this PR has the same problem.


-- 


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



[Bug fortran/32059] New: include directives don't work with absolute pathnames

2007-05-23 Thread Catherine dot M dot Moroney at jpl dot nasa dot gov
The include directive does not accept absolute path names that start
with a /.

For example (below).  If I use the absolute pathname, the compiler complains
that it cannot find the file.  Using the relative pathname works fine.

module io

contains
subroutine hi3
!include /data/L2TC/cmm/linux_code/gfortran/hi.f90  ! Does not work
include ../gfortran/hi.f90  !
This works
 write(*,*) inside hi3
end subroutine hi3

end module io


PROGRAM te_inc_str

use io

call hi3

END PROGRAM te_inc_str


-- 
   Summary: include directives don't work with absolute pathnames
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Catherine dot M dot Moroney at jpl dot nasa dot gov


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #136 from mark at codesourcery dot com  2007-05-23 20:10 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

rguenth at gcc dot gnu dot org wrote:
 --- Comment #134 from rguenth at gcc dot gnu dot org  2007-05-23 19:54 
 ---
 But using a union for type-punning is a gcc extension (and of course the
 extension
 is only for access through the union), so with strict C99/C++ semantics we can
 avoid reloading d[i-1] even if a and d were in the same union because the code
 would then be invalid.  

Gaby's claim, as I understand it, is that writing to a union member,
even through a pointer, rather than directly through the union, is
valid, and activates that part of the union.  So, it is not a GCC
extension.  For code like:

  a[i] = i;
  d[i] = d[i-1] + a[i];

I guess you can argue that a[i] does not alias d[i-1], even in Gaby's
model, because a[i] is written to right before the access to d[i-1].
But, you don't know that a[m] doesn't alias d[n] for arbitrary m and n.
 So, it's easy to create variations on the case I posted that can't be
optimized, if you agree to Gaby's model.

 So the union case is a non-issue here (it was only used to
 make available enough properly aligned storage for the particular testcase).

I agree that union case *should* be a non-issue in this context, where
we were discussing how to fix placement new, but Gaby has made it one
because he is claiming that placement new is not the only way to change
the dynamic type of memory.  Gaby's claim is that given an arbitrary
pointer p, saying:

 (int *)p = 3;

is the same as saying:

 *(new (p) int) = 3;

That makes life for the optimizers much, much harder.


-- 


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



[Bug fortran/32059] include directives don't work with absolute pathnames

2007-05-23 Thread tkoenig at gcc dot gnu dot org


--- Comment #1 from tkoenig at gcc dot gnu dot org  2007-05-23 20:33 ---
Which version of gfortran are you using?

This may be a duplicate of PR 30276, which was
fixed in 4.2 and 4.3, but not 4.1.

Upgrading to 4.2 (which is now released) may help.

If the problem persists in 4.2 or 4.3, please drop us a line :-)


-- 

tkoenig at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||tkoenig at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |WAITING


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



[Bug fortran/32059] include directives don't work with absolute pathnames

2007-05-23 Thread Catherine dot M dot Moroney at jpl dot nasa dot gov


--- Comment #2 from Catherine dot M dot Moroney at jpl dot nasa dot gov  
2007-05-23 20:39 ---
Subject: Re:  include directives don't work with absolute pathnames

I'm using v4.1.1, which I'm stuck at for reasons of compatability
with another computing center.

Catherine

On May 23, 2007, at 12:33 PM, tkoenig at gcc dot gnu dot org wrote:



 --- Comment #1 from tkoenig at gcc dot gnu dot org  2007-05-23  
 20:33 ---
 Which version of gfortran are you using?

 This may be a duplicate of PR 30276, which was
 fixed in 4.2 and 4.3, but not 4.1.

 Upgrading to 4.2 (which is now released) may help.

 If the problem persists in 4.2 or 4.3, please drop us a line :-)


 --  

 tkoenig at gcc dot gnu dot org changed:

What|Removed |Added
 --- 
 -
  CC||tkoenig at gcc dot  
 gnu dot
||org
  Status|UNCONFIRMED |WAITING


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

 --- You are receiving this mail because: ---
 You reported the bug, or are watching the reporter.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #137 from rguenth at gcc dot gnu dot org  2007-05-23 20:46 
---
Created an attachment (id=13607)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13607action=view)
patch to perserve store ordering in loop load/store motion

quote
Gaby's claim is that given an arbitrary
pointer p, saying:

 (int *)p = 3;

is the same as saying:

 *(new (p) int) = 3;

That makes life for the optimizers much, much harder.
/quote

I say so as well (that those are the same), but I don't agree that this
makes life for optimizers much harder.

Anyway, this is a proposed patch for loop load/store motion that fixes the
last posted testcase.  Scheduling issues remain.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenth at gcc dot gnu dot org


--- Comment #138 from rguenth at gcc dot gnu dot org  2007-05-23 20:57 
---
Note the patch is not 100% correct as we need to preserve store ordering on the
path to all exit edges which may be different for each exit.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread joseph at codesourcery dot com


--- Comment #139 from joseph at codesourcery dot com  2007-05-23 21:00 
---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, mark at codesourcery dot com wrote:

 Of course, Gaby's memory model doesn't allow this optimization either;
 we have to worry that a and d are both in some union somewhere.

DR#236 http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_236.htm was 
what eventually said for C that you don't need to worry about that; I'd 
think the aim should be to get C++ to agree with that ruling.

DR#283, to appear in TC3, is what specifies type punning through unions.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #140 from mark at codesourcery dot com  2007-05-23 21:07 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

rguenth at gcc dot gnu dot org wrote:

 quote
 Gaby's claim is that given an arbitrary
 pointer p, saying:
 
  (int *)p = 3;
 
 is the same as saying:
 
  *(new (p) int) = 3;
 
 That makes life for the optimizers much, much harder.
 /quote
 
 I say so as well (that those are the same), but I don't agree that this
 makes life for optimizers much harder.

Placement new is rare; assignments to pointers are everywhere.

Note that the first case does not need to use an explicit cast.  In a
function:

  void f(int *p) {
*p = 3;
  }

under Gaby's interpretation, we cannot be sure that p points to an
int before this function, so we can't be sure the write to *p
doesn't clobber memory of other types.  TBAA is one of the few ways to
disambiguate pointers in the absence of whole-program optimization, and
this model really undermines TBAA.

Frankly, I'm surprised that you are taking this position.  This is a
change to the compiler that can only hurt high-performance C++
applications, which is an area I know you care about.  I know that
you're unhappy about how Ian's patches might hurt programs that use
placement-new in an inner loop, but this model will impose the same
penalties on programs that write to pointers in an inner loop.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #141 from mark at codesourcery dot com  2007-05-23 21:13 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

joseph at codesourcery dot com wrote:

 DR#236 http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_236.htm was 
 what eventually said for C that you don't need to worry about that; I'd 
 think the aim should be to get C++ to agree with that ruling.

Thank you for the pointer.  That seems directly on point, and makes C99
match the existing GCC practice: we don't need to worry that pointers
might point to unions.

Gaby, would you please forward that to the C++ reflector, so that the
reflector has that information as well?  They should be aware that the
model you're proposing is at odds with C99.

Thanks,


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #142 from rguenther at suse dot de  2007-05-23 21:14 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, mark at codesourcery dot com wrote:

 --- Comment #140 from mark at codesourcery dot com  2007-05-23 21:07 
 ---
 Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
  new does not change the dynamic type as it should
 
 rguenth at gcc dot gnu dot org wrote:
 
  quote
  Gaby's claim is that given an arbitrary
  pointer p, saying:
  
   (int *)p = 3;
  
  is the same as saying:
  
   *(new (p) int) = 3;
  
  That makes life for the optimizers much, much harder.
  /quote
  
  I say so as well (that those are the same), but I don't agree that this
  makes life for optimizers much harder.
 
 Placement new is rare; assignments to pointers are everywhere.
 
 Note that the first case does not need to use an explicit cast.  In a
 function:
 
   void f(int *p) {
 *p = 3;
   }
 
 under Gaby's interpretation, we cannot be sure that p points to an
 int before this function, so we can't be sure the write to *p
 doesn't clobber memory of other types.  TBAA is one of the few ways to
 disambiguate pointers in the absence of whole-program optimization, and
 this model really undermines TBAA.

In C inside the function f we can indeed be sure *p points to an int.
Now what matters is, that even in C for

double g(int *p, double *d)
{
  f(p);
  return *d;
}

we cannot be sure (in absence of whole-program optimization or the
body of f available) that the call to f does not clobber *d through
the value of the pointer p.  As it can look like

void f(int *p)
{
  double *d = p;
  *d = 1.0;
}

 Frankly, I'm surprised that you are taking this position.  This is a
 change to the compiler that can only hurt high-performance C++
 applications, which is an area I know you care about.  I know that
 you're unhappy about how Ian's patches might hurt programs that use
 placement-new in an inner loop, but this model will impose the same
 penalties on programs that write to pointers in an inner loop.

No it won't.  Or at least - I belive so - unless I see a patch that
manages to implement placement new with the same minor restrictions.

If you discount scheduling on in-order machines, what would be an
optimization that can be no longer done with Gabys and my scheme?
I believe there are none.  Also other compilers manage to not
miscompile in the face of placement new but still optimize loops
with them.

Richard.


-- 


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



[Bug ada/31174] [4.2 regression] ACATS C380004 fails

2007-05-23 Thread anhvofrcaus at gmail dot com


--- Comment #4 from anhvofrcaus at gmail dot com  2007-05-23 21:19 ---
Now ACATS c380004 passes in gcc-4.3-20070518.


-- 


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



[Bug middle-end/31685] [4.3 regression] ICE in set_mem_attributes

2007-05-23 Thread janis at gcc dot gnu dot org


--- Comment #3 from janis at gcc dot gnu dot org  2007-05-23 21:26 ---
A regression hunt on powerpc-linux using the test case from comment #1
identified the following patch:

http://gcc.gnu.org/viewcvs?view=revrev=120835

r120835 | hubicka | 2007-01-16 21:30:54 + (Tue, 16 Jan 2007)

Yes, this really is the same result as for the other reghunt I did today, I
double-checked!


-- 

janis at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu dot
   ||org


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #143 from mark at codesourcery dot com  2007-05-23 21:27 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

rguenther at suse dot de wrote:

   void f(int *p) {
 *p = 3;
   }

 under Gaby's interpretation, we cannot be sure that p points to an
 int before this function, so we can't be sure the write to *p
 doesn't clobber memory of other types.  TBAA is one of the few ways to
 disambiguate pointers in the absence of whole-program optimization, and
 this model really undermines TBAA.
 
 In C inside the function f we can indeed be sure *p points to an int.

Not before the assignment to p.  In:

  void f(int *p, double *q) {
double d = *q;
*p = 3;
return d;
  }

your interpretation does not allow moving the load of *q after the
store to *p.  That's clearly limiting the freedom of the optimizer.

Now, we can argue about how much that matters -- but it's inarguable
that it's a limitation.

 If you discount scheduling on in-order machines, what would be an
 optimization that can be no longer done with Gabys and my scheme?
 I believe there are none.  Also other compilers manage to not
 miscompile in the face of placement new but still optimize loops
 with them.

I'm lost.

What does Gaby's model have to do with placement new?

We're all agreed that (a) placement new can change the dynamic type of
memory, (b) therefore GCC currently has a bug, (c) we want the fix to
have as little optimization impact as possible.

Gaby's model says that we know less about dynamic types than we
presently think we do, because there might be a union out there
somewhere.  (Fortunately, as Joseph points out, C99 has already answered
this question.  Surely we can agree that making C99 and C++ different in
this respect is a bad idea.)

If *p = 3 changes the dynamic type of *p, that just means we know
even less.  The less we know, the less optimization we can do.  Making
*p = 3 change the dynamic type of *p can't possibly help us
implement placement new more efficiently.  Whatever conservative
assumptions we want to make about *p = 3 we could make about new (p)
int instead.

If you have a patch that fixes the placement new problem, making us
generate correct code, and with minimal/no impact on optimization,
that's great!  But, that can't possibly, in and of itself, be a reason
to change the rules we're using for TBAA.


-- 


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



[Bug testsuite/32060] New: gcc/testsuite/gcc/gcc.log - WARNING: Could not compile gcc.dg/compat/struct-layout-1 generator

2007-05-23 Thread rob1weld at aol dot com
A few broken spots in the testsuite ...

# gcc/xgcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /root/downloads/gcc-4_3-trunk/configure --verbose
--enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --with-tune=athlon-xp
--prefix=/usr --enable-objc-gc --enable-concept-checks --disable-multilib
--with-gxx-include-dir=/usr/include/c++/4.3 --enable-libstdcxx-debug
--enable-static --enable-shared --enable-initfini-array --enable-__cxa_atexit
--enable-threads=posix --enable-version-specific-runtime-libs --enable-libssp
--enable-libmudflap --enable-libgomp --disable-werror --enable-nls
--with-included-gettext --enable-decimal-float --with-long-double-128
--enable-debug --enable-java-gc=boehm --with-x --x-includes=/usr/X11R6/include
--x-libraries=/usr/X11R6/lib --enable-java-awt=gtk,xlib --enable-gtk-cairo
--enable-qt-peer --enable-xmlj --enable-gconf-peer --enable-tool-wrappers
--enable-portable-native-sync --enable-libgcj-multifile --with-stabs
--enable-hash-synchronization --enable-gc-debug --enable-interpreter
--with-system-zlib --enable-libada --with-tls --with-cpu=athlon-xp
--with-arch=athlon-xp
--enable-stage1-checking=assert,gc,misc,rtl,rtlflag,runtime
Thread model: posix
gcc version 4.3.0 20070523 (experimental)

---

# grep -B 5 -A 5 gcc.dg-struct-layout-1_generate gcc/testsuite/gcc/gcc.log

FAIL: gcc.dg/compat/vector-2 c_compat_x_tst.o-c_compat_y_tst.o execute 
testcase /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/compat.exp
completed in 57 seconds
Running
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
...
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/
dfprt5233.c  -fno-show-column  -lm   -o dfprt5233.x(timeout = 300)
Setting LD_LIBRARY_PATH to
:/opt/gcc-4_3-build/gcc::/opt/gcc-4_3-build/gcc:/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build/./gcc:/opt/gcc-4_3-build/./prev-gcc
Executing on host: gcc -g -O2 -o
/opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate 
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/generate-random.c
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/generate-random_r.c  
 (timeout = 300)
WARNING: Could not compile gcc.dg/compat/struct-layout-1 generator
testcase
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
completed in 0 seconds
Running /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/cpp/cpp.exp ...
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/cpp/19921210-1.c-ansi
-pedantic-errors -fno-show-column -S  -o 19921210-1.s(timeout = 300)
PASS: gcc.dg/cpp/19921210-1.c (test for excess errors)


The message WARNING: Could not compile gcc.dg/compat/struct-layout-1 generator
 is odd. The gcc.log _claims_ it is using the OS gcc to compile:

# ls -l /opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate
ls: /opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate: No
such file or directory

# gcc -g -O2 -o
/opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate 
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/generate-random.c
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.dg/compat/generate-random_r.c

# ls -l /opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate
-rwxr-xr-x 1 root root 69791 May 23 12:48
/opt/gcc-4_3-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1_generate


When I cut-and-paste the gcc command from the log the generator compiles OK.
The testsuite works on 4.2.0 i686-pc-cygwin and 4.2.1 i686-pc-linux-gnu.


Point 1): Having the testsuite fail with this warning denies the testsuite from
running a whole battery of tests that the generator creates. One warning
_might_ cover-up many _possible_ errors if the test were ran (or hide many
sucesses).


Point 2): (Retorical Questions) Why do we use gcc ? - The OS's gcc. Which
version are we using, do we care? Can it actually compile the tests?

We _ought_ to use gcc/xgcc ! - then we know which version of gcc we are using.

If xgcc can not compile the generator then _IT_ is at fault. If the OS's gcc
can not compile the generator then does that _actually_ matter - no.

If the program is so trivial that any compiler can compile it then why not have
xgcc do it. That makes the warning into an error _IF_ it fails, if it
succeeds then it is a pass and not a warning.

The rest of the tests can then get a chance to run instead of being denied
simply because the OS's gcc did not compile the file.


Another problem occurs immediatly after:

WARNING: Could not compile gcc.dg/compat

[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread rguenther at suse dot de


--- Comment #144 from rguenther at suse dot de  2007-05-23 21:48 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Wed, 23 May 2007, mark at codesourcery dot com wrote:

 rguenther at suse dot de wrote:
 
void f(int *p) {
  *p = 3;
}
 
  under Gaby's interpretation, we cannot be sure that p points to an
  int before this function, so we can't be sure the write to *p
  doesn't clobber memory of other types.  TBAA is one of the few ways to
  disambiguate pointers in the absence of whole-program optimization, and
  this model really undermines TBAA.
  
  In C inside the function f we can indeed be sure *p points to an int.
 
 Not before the assignment to p.  In:
 
   void f(int *p, double *q) {
 double d = *q;
 *p = 3;
 return d;
   }
 
 your interpretation does not allow moving the load of *q after the
 store to *p.  That's clearly limiting the freedom of the optimizer.

Yes, it's limiting the freedom of optimizers.

 Now, we can argue about how much that matters -- but it's inarguable
 that it's a limitation.
 
  If you discount scheduling on in-order machines, what would be an
  optimization that can be no longer done with Gabys and my scheme?
  I believe there are none.  Also other compilers manage to not
  miscompile in the face of placement new but still optimize loops
  with them.
 
 I'm lost.
 
 What does Gaby's model have to do with placement new?

Only so much that we seem to agree on the semantics of placement new.
Gaby extends this semantics to any store, so

  *p = X;

is equivalent to

  *(new (p) __typeof__ *p) = X;

to which semantics we thus can agree (not to whether those two should
be the same, mandated by the standard or liked by some of us or not).

 Gaby's model says that we know less about dynamic types than we
 presently think we do, because there might be a union out there
 somewhere.  (Fortunately, as Joseph points out, C99 has already answered
 this question.  Surely we can agree that making C99 and C++ different in
 this respect is a bad idea.)

I don't think dragging in unions helps us here ;)  Maybe Gaby can clarify
if and how unions relate here, but I didn't percieve any previous comment
as making implicit unions relevant here apart from what GCC and
apperantly C99 agree to.

 If *p = 3 changes the dynamic type of *p, that just means we know
 even less.  The less we know, the less optimization we can do.

True.

 Making *p = 3 change the dynamic type of *p can't possibly help us
 implement placement new more efficiently.

I disagree here.  Making *p = 3 change the dynamic type of *p will
make the placement new issue moot - the current library implementation
is fine then and we don't need any new explicit or implicit side-effects
of it.

 Whatever conservative
 assumptions we want to make about *p = 3 we could make about new (p)
 int instead.

True.  I say making them about *p = 3 is way easier as we are changing
semantics of memory operations and *p = 3 is one, but placement new is 
not.

 If you have a patch that fixes the placement new problem, making us
 generate correct code, and with minimal/no impact on optimization,
 that's great!  But, that can't possibly, in and of itself, be a reason
 to change the rules we're using for TBAA.

Well, it depends if you read it as changing TBAA rules.  Does preserving
store ordering in loop load/store motion change TBAA rules?  Not in
itself - but clearly changed TBAA rules would force us to.  Same for
limiting scheduling of memory operations.  Btw, the necessary patch
may be as simple as

Index: alias.c
===
--- alias.c (revision 124998)
+++ alias.c (working copy)
@@ -2284,7 +2284,8 @@ write_dependence_p (rtx mem, rtx x, int 
   || MEM_ALIAS_SET (mem) == ALIAS_SET_MEMORY_BARRIER)
 return 1;

-  if (DIFFERENT_ALIAS_SETS_P (x, mem))
+  /* We cannot rely on alias set differences for C++ aliasing semantics.  
*/
+  if (0  DIFFERENT_ALIAS_SETS_P (x, mem))
 return 0;

   /* A read from read-only memory can't conflict with read-write memory.  */

but as I'm currently lacking a testcase that fails due to scheduling
I'm not 100% sure.

Richard.


-- 


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



[Bug bootstrap/32009] [4.3 Regression] building gcc4-4.3.0-20070518 failed on OSX 10.3.9

2007-05-23 Thread dominiq at lps dot ens dot fr


--- Comment #11 from dominiq at lps dot ens dot fr  2007-05-23 21:48 ---
With the last patch the build passed the critical point!-)
I'll have the full build tomorrow morning (Paris time).
Thanks


-- 


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



[Bug preprocessor/20077] [4.0/4.1/4.2/4.3 Regression] GCC accepts macro definitions that fail a constraint

2007-05-23 Thread simartin at gcc dot gnu dot org


--- Comment #7 from simartin at gcc dot gnu dot org  2007-05-23 21:58 
---
Subject: Bug 20077

Author: simartin
Date: Wed May 23 20:58:34 2007
New Revision: 125000

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125000
Log:
2007-05-23  Simon Martin  [EMAIL PROTECTED]

PR preprocessor/20077
* macro.c (create_iso_definition): Fixed the method to determine
whether
the token-pasting operator appears at the beginning or the end of a
macro.

Added:
trunk/gcc/testsuite/gcc.dg/cpp/paste15.c
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/macro.c


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread dberlin at dberlin dot org


--- Comment #145 from dberlin at gcc dot gnu dot org  2007-05-23 22:02 
---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

On 23 May 2007 18:57:03 -, rguenth at gcc dot gnu dot org
[EMAIL PROTECTED] wrote:


 --- Comment #135 from rguenth at gcc dot gnu dot org  2007-05-23 19:56 
 ---
 Re comment #132 -- you cannot encode this into the IL :/  And I don't propose
 to
 do so.  And I say any working and optimal (from optimization perspective)
 variant
 of a fix for this PR has the same problem.
So instead you are going to change every single optimization to
preserve things like store ordering, even though the underlying
aliasing information says it's okay to reorder (because it's broken in
the presence of these restrictions)?
No thanks!
This would be a massive rathole to go down in the end, and completely
at odds with the idea that our middle end IL is language independent,
and like *C*.
C99 has a clear proposed resolution to DR 236, and it says you need to
visibly use a union (which takes care of the other issue mentioned
here)
If placement new needs to mean a memory barrier to get things right
for placement new/C++, it needs to mean a memory barrier to get things
right for now.
Changing language independent optimizations to preserve something
magical in the face of wrong aliasing information is not the way to
fix this PR.

I would support turning off TBAA over that solution, given the choice.


-- 


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



[Bug preprocessor/20077] [4.0/4.1/4.2/4.3 Regression] GCC accepts macro definitions that fail a constraint

2007-05-23 Thread simartin at gcc dot gnu dot org


--- Comment #8 from simartin at gcc dot gnu dot org  2007-05-23 22:05 
---
Fixed on the mainline.


-- 

simartin at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||simartin at gcc dot gnu dot
   ||org


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread mark at codesourcery dot com


--- Comment #146 from mark at codesourcery dot com  2007-05-23 22:13 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

rguenther at suse dot de wrote:

 Only so much that we seem to agree on the semantics of placement new.
 Gaby extends this semantics to any store, so
 
   *p = X;
 
 is equivalent to
 
   *(new (p) __typeof__ *p) = X;
 
 to which semantics we thus can agree (not to whether those two should
 be the same, mandated by the standard or liked by some of us or not).

I think I understand.  Let me just restate this, to make sure:

(a) Gaby's model makes the first assignment above equivalent to the second
(b) Thus, in Gaby's model, if we solve either case, we solve both.

I agree with that statement.  (I don't like the model -- but I agree
with the logic.)

 Making *p = 3 change the dynamic type of *p can't possibly help us
 implement placement new more efficiently.
 
 I disagree here.  Making *p = 3 change the dynamic type of *p will
 make the placement new issue moot - the current library implementation
 is fine then and we don't need any new explicit or implicit side-effects
 of it.
 
 Whatever conservative
 assumptions we want to make about *p = 3 we could make about new (p)
 int instead.
 
 True.  I say making them about *p = 3 is way easier as we are changing
 semantics of memory operations and *p = 3 is one, but placement new is 
 not.

I think I understand what you're saying here too; again, I'll restate to
make sure:

(a) In the model where *p = 3 changes the dynamic type of memory, we
don't need to do anything special to handle placement new.
(b) It's relatively easy to implement support for *p = 3 changing the
dynamic type of memory.
(c) Therefore, it's relatively easy to fix our placement new problem.

I agree with those statements too.

However, I don't like this approach because I believe it will result in
inferior code.  I think that you're looking at the proposed placement
new patches, then looking at what they do to a particular codebase,
which happens to use placement-new in an inner loop, and becoming
unhappy with the patches.  I suspect that the changes required to
support the *p = 3 model, while perhaps better for that case, will be
worse for many others.

I can't prove that.  But, I did implement TBAA after looking at what
other compilers did, specifically to improve performance of (ironically)
POOMA.  So, I'm afraid that you're going to find that if we allow memory
writes to change the type of memory, that we will get worse performance.

That's why I'm much more comfortable with a change that only affects
placement new.  At least, if placement new is slow, we can tell users
not to use it in inner loops.  If using pointers are slow, there's
nothing we can do.


-- 


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



[Bug other/31827] limits-exprparen.c: Pid 2297 received a SIGSEGV for stack growth failure

2007-05-23 Thread sje at cup dot hp dot com


--- Comment #2 from sje at cup dot hp dot com  2007-05-23 22:19 ---
I am not sure what, if anything, we should do with this bug report.  The
compiler is working as designed, the test case has a very large number of
nested parenthesis which causes the parser to recurse over and over as it
parses through the expression.  If you have enough stack space (and swap space)
the test seems to compile fine in a reasonable amount of time.  If you run out
of stack space or run out of swap space then the test fails.

This test runs fine on my IA64 HP-UX and Linux boxes and on my HPPA HP-UX boxes
where I have increased the stack size.  If I change the test case to do more
nesting, I can get it to fail.


-- 

sje at cup dot hp dot com changed:

   What|Removed |Added

 CC||sje at cup dot hp dot com


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



[Bug boehm-gc/21942] boehm-gc doesn't compile on Solaris 10/amd64

2007-05-23 Thread philip_walker at raytheon dot com


--- Comment #6 from philip_walker at raytheon dot com  2007-05-23 22:43 
---
I experienced the same error trying to compile 4.2.0 using gcc 4.1.2.  
gcc -v output is: Target: i386-pc-solaris2.10  configured with: ./configure
--with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld
--without-gnu-ld --languages=c,c++ --enable-shared
Thread model =posix
gcc version 4.1.2

I get two errors about the -- before token, one on line 466 and one on line
2177 of gcconfig.h

I will be glad to provide more info if needed.

Philip


-- 


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



[Bug java/32010] bootstrap fails; chooses wrong zlib for building jc1

2007-05-23 Thread lucier at math dot purdue dot edu


--- Comment #1 from lucier at math dot purdue dot edu  2007-05-23 23:11 
---
I believe you need to add

BOOT_LDFLAGS='-Wl,-search_paths_first'

to make bootstrap to get it to work.  If this fixes bootstrap, then I'll
prepare a brief patch to the documentation.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #147 from gdr at cs dot tamu dot edu  2007-05-23 23:42 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

mark at codesourcery dot com [EMAIL PROTECTED] writes:

| Of course, Gaby's memory model doesn't allow this optimization either;
| we have to worry that a and d are both in some union somewhere.
| That's why Gaby's model is so bad from an optimization point of view; it

A meta comment:  I would highly appreciate if you stopped calling it
Gaby's model. 

It is the *current C++ standard object model*.  If you don't like it; 
that is fine.  But, you don't have to like it.  (I don't).  But,
please don't call it Gaby's model.  The fact that you don't like it
does not suddenly make it not the standard model.

-- Gaby


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #148 from gdr at cs dot tamu dot edu  2007-05-23 23:50 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

mark at codesourcery dot com [EMAIL PROTECTED] writes:

| Gaby's claim, as I understand it, is that writing to a union member,
| even through a pointer, rather than directly through the union, is
| valid, and activates that part of the union.

Yes; that is what the current C++ standard says.  

C99 tried to fix things with the notion of effective type, but that
notion does not fully address the issue and it is not part of C++98
and C++03.  What I'm doing is making sure that we all know where
(potential existing codes) we are starting from and make sure that we
do understand the implications of the changes we would like to make to
make optimizers easier.  I spent some of my time this afternoon
going through this with the original inventor of C++ and trying to see
whether we have choice to make things less hard.  

It is clear to us that, *if* we have a choice -- note *if* we have a
choice -- when the aliasing through union should be made appearant;
but for the moment, that is hard to formulate correctly  and simply
(with the constraint of not breaking the existing object model
badly). 

-- Gaby


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #149 from gdr at cs dot tamu dot edu  2007-05-23 23:56 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

mark at codesourcery dot com [EMAIL PROTECTED] writes:

| --- Comment #140 from mark at codesourcery dot com  2007-05-23 21:07
---
| Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
|  new does not change the dynamic type as it should
| 
| rguenth at gcc dot gnu dot org wrote:
| 
|  quote
|  Gaby's claim is that given an arbitrary
|  pointer p, saying:
|  
|   (int *)p = 3;
|  
|  is the same as saying:
|  
|   *(new (p) int) = 3;
|  
|  That makes life for the optimizers much, much harder.
|  /quote
|  
|  I say so as well (that those are the same), but I don't agree that this
|  makes life for optimizers much harder.
| 
| Placement new is rare; assignments to pointers are everywhere.

Naked placement new may be rare; but, placement new is general are not
rare because of the STL-style containers and algorithms.

| 
| Note that the first case does not need to use an explicit cast.  In a
| function:
| 
|   void f(int *p) {
| *p = 3;
|   }
| 
| under Gaby's interpretation, we cannot be sure that p points to an
| int before this function, so we can't be sure the write to *p
| doesn't clobber memory of other types.

Note that is is a problem only with PODs -- because only those can
appear in unions.  That does not help much, but it is a distinction
you have to make when you're considering what the standard says.

-- Gaby


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #150 from gdr at cs dot tamu dot edu  2007-05-23 23:57 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

mark at codesourcery dot com [EMAIL PROTECTED] writes:

| Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
|  new does not change the dynamic type as it should
| 
| joseph at codesourcery dot com wrote:
| 
|  DR#236 http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_236.htm was 
|  what eventually said for C that you don't need to worry about that; I'd 
|  think the aim should be to get C++ to agree with that ruling.
| 
| Thank you for the pointer.  That seems directly on point, and makes C99
| match the existing GCC practice: we don't need to worry that pointers
| might point to unions.
| 
| Gaby, would you please forward that to the C++ reflector, so that the
| reflector has that information as well?  They should be aware that the
| model you're proposing is at odds with C99.
| 

Yes, I'll right now.

Since I brought upt this issue, Nick MacLaren sent me a note he had
circulated about these very issues on C99.  It is also being discussed
on the -core reflector.

-- Gaby


-- 


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



[Bug c/32061] New: wrong warning wording

2007-05-23 Thread eyal at eyal dot emu dot id dot au
This warning is logically incorrect:
  logical '' with non-zero constant will always evaluate as true
should say '... will have no effect'?

Reproduce with
==
/* run: gcc -v -save-temps -Wlogical-op -c xx.c
*/
#define FORCE   1
#define FLAG1
static int func (int resp, int flags)
{
  return (resp  (FORCE || (FLAG  flags)));
}

output
==
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /usr/local/src/gcc/src/gcc-current/configure
--srcdir=/usr/local/src/gcc/src/gcc-current --prefix=/usr/local/gcc-current
--enable-languages=c,c++ --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp
Thread model: posix
gcc version 4.3.0 20070518 (experimental)

/data2/usr/local/gcc-current-20070519-083055/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.0/cc1
-E -quiet -v -iprefix
/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/
xx.c -mtune=generic -Wlogical-op -fpch-preprocess -o xx.i
ignoring nonexistent directory
/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include
ignoring duplicate directory
/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include
ignoring duplicate directory
/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed
ignoring nonexistent directory
/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include
#include ... search starts here:
#include ... search starts here:

/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/include

/data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed
 /usr/local/include
 /data2/usr/local/gcc-current-20070519-083055/bin/../lib/gcc/../../include
 /usr/include
End of search list.

/data2/usr/local/gcc-current-20070519-083055/bin/../libexec/gcc/i686-pc-linux-gnu/4.3.0/cc1
-fpreprocessed xx.i -quiet -dumpbase xx.c -mtune=generic -auxbase xx
-Wlogical-op -version -o xx.s
GNU C version 4.3.0 20070518 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 4.3.0 20070518 (experimental), GMP version
4.2.1, MPFR version 2.2.1.
warning: GMP header version 4.2.1 differs from library version 4.1.4.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 128b6cbfc01a7daaa897672777a1e4cb
xx.c: In function 'func':
xx.c:7: warning: logical '' with non-zero constant will always evaluate as
true
 as -V -Qy -o xx.o xx.s
GNU assembler version 2.15 (i386-linux) using BFD version 2.15


-- 
   Summary: wrong warning wording
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: eyal at eyal dot emu dot id dot au


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



[Bug c/32061] wrong warning wording

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-24 00:47 ---
I don't see the problem because
xx.c:7: warning: logical '' with non-zero constant will always evaluate as
true
means the non-zero constant will evaluate as true and not the logical will
evaluate as true.


-- 


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



[Bug other/31827] limits-exprparen.c: Pid 2297 received a SIGSEGV for stack growth failure

2007-05-23 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #3 from dave at hiauly1 dot hia dot nrc dot ca  2007-05-24 
00:53 ---
Subject: Re:  limits-exprparen.c: Pid 2297 received a SIGSEGV for stack growth
failure

 This test runs fine on my IA64 HP-UX and Linux boxes and on my HPPA HP-UX 
 boxes
 where I have increased the stack size.  If I change the test case to do more
 nesting, I can get it to fail.

For the record, these are the limits on the machine where I saw
the failure:

-bash-2.05b$ ulimit -a
core file size(blocks, -c) 2097151
data seg size (kbytes, -d) 786432
file size (blocks, -f) unlimited
max memory size   (kbytes, -m) unlimited
open files(-n) 256
pipe size  (512 bytes, -p) 16
stack size(kbytes, -s) 16384
cpu time (seconds, -t) unlimited
max user processes(-u) 76
virtual memory(kbytes, -v) unlimited

I believe the stack size limit is double the default value.  The machine
has 7 GB of memory, so I doubt swap is an issue.

It's my personal belief that nesting routines to great depths
is bad design.  It makes debugging nearly impossible.  It's
possible we are hurt on hppa64 because the argument pointer isn't
a fixed register and this prevents the sibcall optimization
from occurring.

Dave


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #151 from gdr at cs dot tamu dot edu  2007-05-24 00:58 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

rguenther at suse dot de [EMAIL PROTECTED] writes:

[...]

|  Gaby's model says that we know less about dynamic types than we
|  presently think we do, because there might be a union out there
|  somewhere.  (Fortunately, as Joseph points out, C99 has already answered
|  this question.  Surely we can agree that making C99 and C++ different in
|  this respect is a bad idea.)
| 
| I don't think dragging in unions helps us here ;)  Maybe Gaby can clarify
| if and how unions relate here, but I didn't percieve any previous comment
| as making implicit unions relevant here apart from what GCC and
| apperantly C99 agree to.

I believe we all agree that placement new changes the dynamic type.


I brought in the union example to point of a fundamental problem with
this issue.  I have been following the discussion without saying much,
until I realized that the interpretation Mark was offering is a
redefinition of the C++ object model that conflicts with the current
standard text. That was the point of the union example.  In the
example 

void f(int* p, double* q) {
*p = 42;
*q = 3.12;
}

All we know is that after the store to *p, the object there will have
type int (if it did not already have one).  Similarly, for the store
to *q, the object there will have type double.  Can the stores be
rearranged?  Under the current C++ rules (which were inherited from
C90, and not C99) yes if we know that the objects are distinct.
Can we infer the disjoinctness from the types?  Not always under
current C++ rules for union, and in this specific case, the answer is 
no.

I never said I liked that model.  I was merely pointing out that
people where on the slope of redefining the object model.

I spent the afternoon trying to see how C++ can move forward.
The effective types of C99 has its own sets of incompleteness and
inconsistency problems that Nick MacLaren has brought to my attention
since I raised the issue on the C++ -core reflector.

-- Gaby


-- 


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



[Bug c/32061] wrong warning wording

2007-05-23 Thread eyal at eyal dot emu dot id dot au


--- Comment #2 from eyal at eyal dot emu dot id dot au  2007-05-24 01:00 
---
(In reply to comment #1)
 I don't see the problem because
 xx.c:7: warning: logical '' with non-zero constant will always evaluate as
 true
 means the non-zero constant will evaluate as true and not the logical will
 evaluate as true.
 

(In reply to comment #1)
 I don't see the problem because
 xx.c:7: warning: logical '' with non-zero constant will always evaluate as
 true
 means the non-zero constant will evaluate as true and not the logical will
 evaluate as true.
 

But it says 'logical... will always evaluate as true' which clearly refers to
the result of the logical operator, not to one of its arguments.

BTW, why no warning for this?
   resp == 0  0
Naturally, all the above constants will hide behind some macros which could
indicate a real error, hence the value of the warning.


-- 


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



[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should

2007-05-23 Thread gdr at cs dot tamu dot edu


--- Comment #152 from gdr at cs dot tamu dot edu  2007-05-24 01:06 ---
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement new does not change the
dynamic type as it should

mark at codesourcery dot com [EMAIL PROTECTED] writes:

[...]

| However, I don't like this approach because I believe it will result in
| inferior code.

I believe (without offering data, sorry) it *may* yield inferior code.
However, my original point was to make sure that we understood your
interpretation was a change to the C++ standard object model.

Given the consequences, I think it was appropriate to raise the issue
to the C++ committee.  So far, the only response I got was the
sentiment that it is a change in semantics. Given C99's move, it is
essential for C++ to get to a better state of the object model.
However, C99's notion of effective type is not without its own set of
problems (already in C99).  The details can be found in Nick
MacLaren's paper.

-- Gaby


-- 


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



[Bug testsuite/32062] New: gcc revision 20070523 - Non-existant sse4 test (with wrong path) causes UNSUPPORTED for working tests

2007-05-23 Thread rob1weld at aol dot com
I have 4.3.0 SVN 20070523 and just updated it a minute ago to revision
125011.

I ran make -i check and noticed a number of UNSUPPORTED in the C tests.


# grep -B 5 -A 0 15233 gcc/testsuite/gcc/gcc.log
PASS: gcc.target/i386/sse3-movshdup.c execution test
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.target/i386/sse3-movsldup.c  
-O2 -msse3 -fno-show-column  -lm   -o ./sse3-movsldup.exe(timeout = 300)
PASS: gcc.target/i386/sse3-movsldup.c (test for excess errors)
Setting LD_LIBRARY_PATH to
:/opt/gcc-4_3-build/gcc::/opt/gcc-4_3-build/gcc:/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build/./gcc:/opt/gcc-4_3-build/./prev-gcc
PASS: gcc.target/i386/sse3-movsldup.c execution test
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2
-msse4.1 -fno-show-column -c  -o sse4.15233.o sse4.15233.c(timeout = 300)


Notice that the test of sse3-movsldup.c uses the path gcc.target/i386/ .

Notice that the test of sse4.15233.c uses the path  . In addition, the file
sse4.15233.c did not exist the other day when I got the SVN _AND_ it still
does not exist now when I re-got the SVN a few minutes ago. I checked
my HD to see if it was generated, it does not exist.


When the compilation of sse4.15233.c fails it causes a number of tests that
follow to be ASSUMED (or at least reported) as unsupported.

Here are a few:
UNSUPPORTED: gcc.target/i386/sse4_1-blendpd.c
UNSUPPORTED: gcc.target/i386/sse4_1-blendps.c
UNSUPPORTED: gcc.target/i386/sse4_1-blendvpd.c


_MY_ test method:

# ls -l sse4_1*
ls: sse4_1*: No such file or directory

# /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2 -msse4.1
-fno-show-column -c  -o sse4_1-blendpd.o
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.target/i386/sse4_1-blendpd.c

# /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2 -msse4.1
-fno-show-column -c  -o sse4_1-blendps.o
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.target/i386/sse4_1-blendps.c

# /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2 -msse4.1
-fno-show-column -c  -o sse4_1-blendvpd.o
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.target/i386/sse4_1-blendvpd.c
: Assembler messages:
:187: Error: no such instruction: `blendvpd %xmm0,-1000(%ebx,%ebp),%xmm1'

# ls -l sse4_1*
-rw-r--r-- 1 root root 1648 May 23 17:38 sse4_1-blendpd.o
-rw-r--r-- 1 root root 1664 May 23 17:39 sse4_1-blendps.o


So the more correct message would be:
PASS: gcc.target/i386/sse4_1-blendpd.c
PASS: gcc.target/i386/sse4_1-blendps.c
UNSUPPORTED: gcc.target/i386/sse4_1-blendvpd.c


The testsuite thinks that the failure of a non-existant file means the rest of
the tests won't pass.

I'm not an SSE expert but with so many processors types and variables you
_might_ need to test for processor capability with a _COORECT_ program. Then
use a huge chart that says exactly what is supported by the manufacturer -
unless you actually wish to test unsupported but working instructions.

Many cpuid programs are not bleading edge and you don't want to keep
updating.
Keeping a chart is a pain. Using cat /proc/cpuinfo is not reliable.

cat /proc/cpuinfo
processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 15
model   : 43
...
fdiv_bug: no
hlt_bug : no
f00f_bug: no
coma_bug: no
fpu : yes
fpu_exception   : yes
cpuid level : 1
wp  : yes
flags   : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat
pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow
up pni lahf_lm cmp_legacy ts fid vid ttp

I bet you think I have an Opteron, many programs do.


There were so many problems with the gcc tests that I'll need to poke around
and type make -i check-gcc to re-check gcc only. The other tests are not as
bad.

It is important that C work as it affects all the other compilers - and thus
the results. We need ZERO errors in C (and Ada since it is a first-stager).


-- 
   Summary: gcc revision 20070523 - Non-existant sse4 test (with
wrong path) causes UNSUPPORTED for working tests
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rob1weld at aol dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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



[Bug testsuite/32062] gcc revision 20070523 - Non-existant sse4 test (with wrong path) causes UNSUPPORTED for working tests

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-24 01:56 ---
What binutils version do you have?  Check via as --version.


-- 


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



[Bug testsuite/32062] gcc revision 20070523 - Non-existant sse4 test (with wrong path) causes UNSUPPORTED for working tests

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2007-05-24 02:01 ---
The check in gcc/gcc/testsuite/gcc.target/i386/i386.exp checks if pabsd128 
works, so that means if that does not work, then all the testcases will cause
an unsupported.  This is not really a bug, as the unsupported test means it is
not supported on your configuration which is true (too of a fine checking is
just causes more problems than it solves).


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug fortran/32059] include directives don't work with absolute pathnames

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2007-05-24 02:17 ---


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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||DUPLICATE


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



[Bug fortran/30276] gfortran include problem

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #12 from pinskia at gcc dot gnu dot org  2007-05-24 02:17 
---
*** Bug 32059 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||Catherine dot M dot Moroney
   ||at jpl dot nasa dot gov


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



[Bug fortran/30276] gfortran include problem

2007-05-23 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to fail|4.1.1 4.2.0 4.3.0   |4.1.1
  Known to work||4.2.0 4.3.0
   Target Milestone|--- |4.2.0


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



[Bug java/32010] bootstrap fails; chooses wrong zlib for building jc1

2007-05-23 Thread lucier at math dot purdue dot edu


--- Comment #2 from lucier at math dot purdue dot edu  2007-05-24 02:19 
---
My guess was correct, but I don't see where to put the note in the
documentation.

Perhaps I'll ask Jack to do it.


-- 


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



[Bug c++/32058] invalid computed void parameter in template

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-24 02:56 ---
GCC is correct, this code is invalid C++. See PR 9278.

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/9278] Illegal use of typedef to void

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #26 from pinskia at gcc dot gnu dot org  2007-05-24 02:56 
---
*** Bug 32058 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||paul_m_doc at hotmail dot
   ||com


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



[Bug c++/32042] linkage confused with scope?

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-24 03:11 ---
Confirmed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||accepts-invalid
  Known to fail||4.3.0 4.1.0
   Last reconfirmed|-00-00 00:00:00 |2007-05-24 03:11:53
   date||


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



[Bug c++/32029] Internal Compiler Error on instantiation of template parameter

2007-05-23 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2007-05-24 03:18 ---
Here is a reduced testcase:
templateclass Base
struct Factory0Arg
{
templateclass T struct Factory { };
};
templateclass T, class Al=class Factory0ArgT::FactoryT 
struct thing {
Al allocator;
};
thingint t;


-- 


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



[Bug testsuite/32063] New: contrib/test_summary script could output results more neatly

2007-05-23 Thread rob1weld at aol dot com
This affects any HTB triplet if the person runs the contrib/test_summary
script. 

The script creates results that are not pretty-printed and mails them to
[EMAIL PROTECTED] which automatically generates ugly web pages.


We might improved the line spacing in the mailer script, here is an example:

---START---
/opt/gcc-4_3-build/gcc/testsuite/gfortran/../../gfortran  version 4.3.0
20070523 (experimental)

=== gnat tests ===


Running target unix
FAIL: gnat.dg/address_conversion.adb execution test

=== gnat Summary ===

# of expected passes168
# of unexpected failures1
=== obj-c++ tests ===


Running target unix
--- END ---


I suggest it would look better if it were like this:


---START---
/opt/gcc-4_3-build/gcc/testsuite/gfortran/../../gfortran  version 4.3.0
20070523 (experimental)

(Add a blank line here)
=== gnat tests ===
(Subtract a blank line here)
Running target unix
FAIL: gnat.dg/address_conversion.adb execution test

=== gnat Summary ===

# of expected passes168
# of unexpected failures1
(Add a blank line here)
(Add a blank line here)
=== obj-c++ tests ===
(Subtract a blank line here)
Running target unix
--- END ---


That is only a dozen line example. The _whole_ output is like that; with extra
C/R's where they are not needed and too few C/R's in some spots.

I realize that the output is supposed to be machine readable, so is our ource
code. We have _standards_ for the appearance of the source, why not the output.

While this is trivial we should have pride in our great compiler and the
usually great results. Even if there are failures we should still present them
neatly.

See here for many examples: http://gcc.gnu.org/ml/gcc-testresults/2007-05/


-- 
   Summary: contrib/test_summary script could output results more
neatly
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: testsuite
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rob1weld at aol dot com


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



[Bug testsuite/32062] gcc revision 20070523 - Non-existant sse4 test (with wrong path) causes UNSUPPORTED for working tests

2007-05-23 Thread rob1weld at aol dot com


--- Comment #3 from rob1weld at aol dot com  2007-05-24 04:39 ---
# as --version
GNU assembler 2.17 Debian GNU/Linux

That is the _newest_ apt-get from Debian. 

My test results are here:
http://gcc.gnu.org/ml/gcc-testresults/2007-05/msg01171.html


 This is not really a bug, as the unsupported test means it is not supported
 on your configuration which is true (too of a fine checking is just causes
 more problems than it solves).

You know I am big fan of everything ON, and working ;)

It seems a shame that the test works when ran manually but that the automated
mechanism is not going to be too fine grained.


Another interesting command to run is this:

# grep -B 5 -A 5 Assembler\ messages gcc/testsuite/gcc/gcc.log
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/
/root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.target/i386/sse3-movsldup.c  
-O2 -msse3 -fno-show-column  -lm   -o ./sse3-movsldup.exe(timeout = 300)
PASS: gcc.target/i386/sse3-movsldup.c (test for excess errors)
Setting LD_LIBRARY_PATH to
:/opt/gcc-4_3-build/gcc::/opt/gcc-4_3-build/gcc:/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build/./gcc:/opt/gcc-4_3-build/./prev-gcc
PASS: gcc.target/i386/sse3-movsldup.c execution test
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2
-msse4.1 -fno-show-column -c  -o sse4.125141.o sse4.125141.c(timeout = 300)
/tmp/ccKqTs3N.s: Assembler messages:
/tmp/ccKqTs3N.s:8: Error: no such instruction: `pmulld %xmm1,%xmm0'
compiler exited with status 1
output is:
/tmp/ccKqTs3N.s: Assembler messages:
/tmp/ccKqTs3N.s:8: Error: no such instruction: `pmulld %xmm1,%xmm0'

UNSUPPORTED: gcc.target/i386/sse4_1-blendpd.c
UNSUPPORTED: gcc.target/i386/sse4_1-blendps.c
UNSUPPORTED: gcc.target/i386/sse4_1-blendvpd.c
--
UNSUPPORTED: gcc.target/i386/sse4_1-roundss-1.c
UNSUPPORTED: gcc.target/i386/sse4_1-roundss-2.c
UNSUPPORTED: gcc.target/i386/sse4_1-roundss-3.c
UNSUPPORTED: gcc.target/i386/sse4_1-roundss-4.c
Executing on host: /opt/gcc-4_3-build/gcc/xgcc -B/opt/gcc-4_3-build/gcc/  -O2
-msse4a -fno-show-column -c  -o sse4a25141.o sse4a25141.c(timeout = 300)
/tmp/ccMwoETb.s: Assembler messages:
/tmp/ccMwoETb.s:8: Error: no such instruction: `insertq %xmm1,%xmm0'
compiler exited with status 1
output is:
/tmp/ccMwoETb.s: Assembler messages:
/tmp/ccMwoETb.s:8: Error: no such instruction: `insertq %xmm1,%xmm0'

UNSUPPORTED: gcc.target/i386/sse4a-extract.c
UNSUPPORTED: gcc.target/i386/sse4a-insert.c
UNSUPPORTED: gcc.target/i386/sse4a-montsd.c


Even though the assembler does not support _some_ instructions I can manually
compile _some_ of the test programs. I guess ./configure must test as .

It is not the fault of the (average) user if they have the newest apt-get of
Debian GNU/Linux and something is broken.

I am not average and I would be more than happy to compile binutils. I would
want to use the same ./configure flags so I don't screw my as .(TM)


-- 


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



[Bug testsuite/32062] gcc revision 20070523 - Non-existant sse4 test (with wrong path) causes UNSUPPORTED for working tests

2007-05-23 Thread rob1weld at aol dot com


--- Comment #4 from rob1weld at aol dot com  2007-05-24 06:01 ---
According to this page: http://www.gnu.org/software/binutils/

The newest version is being called binutils-2.17.50 (name for snapshot).

ftp://sourceware.org/pub/binutils/snapshots/
05/17/2006 12:00AM 13,716,872 binutils-2.16.93.tar.bz2
06/12/2006 12:00AM 13,814,217 binutils-2.16.94.tar.bz2
05/22/2007 05:47AM 14,958,122 binutils-2.17.50.tar.bz2


The best solution for Debian _might_ be:

cvs -z 9 -d :pserver:[EMAIL PROTECTED]:/cvs/src login
  {enter anoncvs as the password}
cvs -z 9 -d :pserver:[EMAIL PROTECTED]:/cvs/src co binutils

and then go here: http://packages.debian.org/unstable/source/binutils and apply
http://ftp.debian.org/debian/pool/main/b/binutils/binutils_2.17cvs20070426-5.diff.gz
- making sure not to _undo_ anything, just planning to get the Debian'isms and
GNU/Linix'ishness .


After I do this it can not be my fault, correct ?
Do you have better advice?

I maintain that this should not be neccesary. It is like this for a lot of
parts of GCC, requiring bleeding edge (Like GTK libs). I can do it and don't
mind but it reduces the number of people who can do everything and increases
tech-support / bug reports.


-- 


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



[Bug fortran/31716] segfault with real array bounds

2007-05-23 Thread jvdelisle at gcc dot gnu dot org


--- Comment #12 from jvdelisle at gcc dot gnu dot org  2007-05-24 06:04 
---
Subject: Bug 31716

Author: jvdelisle
Date: Thu May 24 05:03:51 2007
New Revision: 125013

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125013
Log:
2007-05-23  Jerry DeLisle  [EMAIL PROTECTED]

PR fortran/31716
* array.c (spec_dimen_size): Test for correct BT_INTEGER type.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/array.c


-- 


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



[Bug bootstrap/30341] Makefile using mv instead of ln not working on WinXP Cygwin Bash

2007-05-23 Thread rob1weld at aol dot com


--- Comment #4 from rob1weld at aol dot com  2007-05-24 06:05 ---
I have found that with very low system load that it _can_ occur using an XTerm
window afterall - infrequently.

If your compiling for Cygwin it is best to make the mod to the Makefile.


-- 


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



[Bug fortran/31716] segfault with real array bounds

2007-05-23 Thread jvdelisle at gcc dot gnu dot org


--- Comment #13 from jvdelisle at gcc dot gnu dot org  2007-05-24 06:05 
---
Fixed on trunk.


-- 

jvdelisle at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.3.0


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



  1   2   >