[Bug tree-optimization/24659] Conversions are not vectorized

2007-05-16 Thread ubizjak at gmail dot com


--- Comment #14 from ubizjak at gmail dot com  2007-05-17 07:45 ---
Altivec PPC has int->float cvt insn and provides signed/unsigned vec_unpack
v8hi insn. It should be trivial to implement short->float and unsigned
short->float conversions by providing vec_unpacks_float_lo_v8hi,
vec_unpacks_float_hi_v8hi, vec_unpacku_float_lo_v8hi and
vec_unpacku_float_hi_v8hi patterns (please look into i386/sse.md file).

By providing these patterns, loops in gcc.dg/vect/vect-intfloat-conversion-4a.c
and gcc.dg/vect/vect-intfloat-conversion-4b.c should be vectorized.


-- 


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



[Bug tree-optimization/31966] Miscompiles valid code with -ftree-vectorize and -march=nocona

2007-05-16 Thread lloyd at randombit dot net


--- Comment #1 from lloyd at randombit dot net  2007-05-17 07:36 ---
Created an attachment (id=13567)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13567&action=view)
A short testcase for bug 31966


-- 


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



[Bug tree-optimization/31966] New: Miscompiles valid code with -ftree-vectorize and -march=nocona

2007-05-16 Thread lloyd at randombit dot net
$ gcc-4.2.0 -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.2.0/configure --enable-languages=c,c++,objc,obj-c++
--program-suffix=-4.2.0
Thread model: posix
gcc version 4.2.0
$ gcc-4.2.0 divop.c -o divop
$ ./divop
  3CBA83
$ gcc-4.2.0 -ftree-vectorize -O2  divop.c -o divop
$ ./divop
  3CBA83
$ gcc-4.2.0 -ftree-vectorize -O2 -march=opteron divop.c -o divop
$ ./divop 
  3CBA83
$ gcc-4.2.0 -ftree-vectorize -O2 -march=nocona divop.c -o divop
$ ./divop
  2B672F

This also affects GCC 4.1.1, I have not checked 4.1.2 or the 4.3 snapshots. In
addition to -march=nocona it requires -O1/-O2/-O3 (-Os does not trigger it
under 4.2.0, though it _does_ in 4.1.1).


-- 
   Summary: Miscompiles valid code with -ftree-vectorize and -
march=nocona
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: lloyd at randombit dot net
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug tree-optimization/24659] Conversions are not vectorized

2007-05-16 Thread uros at gcc dot gnu dot org


--- Comment #13 from uros at gcc dot gnu dot org  2007-05-17 07:31 ---
Subject: Bug 24659

Author: uros
Date: Thu May 17 06:31:05 2007
New Revision: 124784

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124784
Log:
PR tree-optimization/24659
* optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
OTI_vec_pack_ufix_trunc.
(vec_unpacks_float_hi_optab): Define new macro.
(vec_unpacks_float_lo_optab): Ditto.
(vec_unpacku_float_hi_optab): Ditto.
(vec_unpacku_float_lo_optab): Ditto.
(vec_pack_sfix_trunc_optab): Ditto.
(vec_pack_ufix_trunc_optab): Ditto.
* genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
and vec_pack_[s|u]fix_trunc_optab using
vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
* tree-vectorizer.c (supportable_widening_operation): Handle
FLOAT_EXPR and CONVERT_EXPR.  Update comment.
(supportable_narrowing_operation): New function.
* tree-vectorizer.h (supportable_narrowing_operation): Prototype.
* tree-vect-transform.c (vectorizable_conversion): Handle
(nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
(vect_gen_widened_results_half): Move before vectorizable_conversion.
(vectorizable_type_demotion): Call supportable_narrowing_operation()
to check for target support.
* optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
for VEC_PACK_FIX_TRUNC_EXPR.
(expand_binop): Special case mode of the result for
vec_pack_[u|s]fix_trunc_optab.
(init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
vec_pack_[u|s]fix_trunc_optab.

* tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
* tree-pretty-print.c (dump_generic_node): Handle
VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
VEC_PACK_FIX_TRUNC_EXPR.
(op_prio): Ditto.
* expr.c (expand_expr_real_1): Ditto.
* tree-inline.c (estimate_num_insns_1): Ditto.
* tree-vect-generic.c (expand_vector_operations_1): Ditto.

* config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
(vec_unpacks_float_lo_v8hi): Ditto.
(vec_unpacku_float_hi_v8hi): Ditto.
(vec_unpacku_float_lo_v8hi): Ditto.
(vec_unpacks_float_hi_v4si): Ditto.
(vec_unpacks_float_lo_v4si): Ditto.
(vec_pack_sfix_trunc_v2df): Ditto.

* doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
Document.
[VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
[VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
* doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
[vec_pack_ufix_trunc]: Ditto.
[vec_unpacks_float_hi]: Ditto.
[vec_unpacks_float_lo]: Ditto.
[vec_unpacku_float_hi]: Ditto.
[vec_unpacku_float_lo]: Ditto.

testsuite/ChangeLog:

PR tree-optimization/24659
* gcc.dg/vect/vect-floatint-conversion-2.c: New test.
* gcc.dg/vect/vect-intfloat-conversion-1.c: Require vect_float,
not vect_int target.
* gcc.dg/vect/vect-intfloat-conversion-2.c: Require vect_float,
not vect_int target.  Loop is vectorized for vect_intfloat_cvt
targets.
* gcc.dg/vect/vect-intfloat-conversion-3.c: New test.
* gcc.dg/vect/vect-intfloat-conversion-4a.c: New test.
* gcc.dg/vect/vect-intfloat-conversion-4b.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-2.c
trunk/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-3.c
trunk/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4a.c
trunk/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4b.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/sse.md
trunk/gcc/doc/c-tree.texi
trunk/gcc/doc/md.texi
trunk/gcc/expr.c
trunk/gcc/genopinit.c
trunk/gcc/optabs.c
trunk/gcc/optabs.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-1.c
trunk/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-2.c
trunk/gcc/tree-inline.c
trunk/gcc/tree-pretty-print.c
trunk/gcc/tree-vect-generic.c
trunk/gcc/tree-vect-transform.c
trunk/gcc/tree-vectorizer.c
trunk/gcc/tree-vectorizer.h
trunk/gcc/tree.def


-- 


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



[Bug c++/29927] template instantiation with function type

2007-05-16 Thread s__nakayama at infoseek dot jp


--- Comment #7 from s__nakayama at infoseek dot jp  2007-05-17 06:04 ---
Fixed already in 4.2.0.


-- 


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



[Bug tree-optimization/31953] [4.3 Regression] ICE in set_value_range, at tree-vrp.c:305

2007-05-16 Thread ian at airs dot com


--- Comment #3 from ian at airs dot com  2007-05-17 05:02 ---
Created an attachment (id=13566)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13566&action=view)
Proposed patch

I'm testing this patch.


-- 


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



[Bug fortran/31964] ishftc fails with certain thrid argument

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


--- Comment #4 from jvdelisle at gcc dot gnu dot org  2007-05-17 04:00 
---
The patch in comment #3 is incorrect.  I have the correct patch coming and will
post to list for approval.


-- 


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



[Bug rtl-optimization/31944] Endless loop while building a 64-bit 2.6.20 kernel

2007-05-16 Thread danglin at gcc dot gnu dot org


--- Comment #2 from danglin at gcc dot gnu dot org  2007-05-17 03:55 ---
Test case also fails to compile on hppa64-hp-hpux11.11.  Compiler
hangs in cse1 pass, apparently doing garbage collection.


-- 


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



[Bug target/30153] -fPIC failure

2007-05-16 Thread price at ifa dot hawaii dot edu


--- Comment #2 from price at ifa dot hawaii dot edu  2007-05-17 03:19 
---
This is also a problem on my amd64 Gentoo laptop, using gcc version Gentoo
4.1.1-r3.

I searched the binutils Bugzilla, but could not find a bug filed for this
problem.

Because the problem disappears when optimisation is turned on, the following
line from the docs for gcc caught my eye: "GCC does not inline any functions
when not optimizing unless you specify the `always_inline' attribute for the
function".  So I tried:

[EMAIL PROTECTED]:/home/price/test>cat static_inline.c 
static void foo (void) __attribute__((always_inline));
static inline void foo (void) { }
void baz (void (*f) (void));
void bar (void) { baz (foo); }
[EMAIL PROTECTED]:/home/price/test>gcc -O0 -g -c -fPIC static_inline.c
[EMAIL PROTECTED]:/home/price/test>gcc -shared -o static_inline.so
static_inline.o 
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld:
warning: creating a DT_TEXTREL in object.
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld:
static_inline.o: relocation R_X86_64_PC32 against `foo' can not be used when
making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld:
final link failed: Bad value
collect2: ld returned 1 exit status


Should I take this bug over to binutils?


-- 

price at ifa dot hawaii dot edu changed:

   What|Removed |Added

 CC||price at ifa dot hawaii dot
   ||edu


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



[Bug testsuite/25241] DejaGNU does not distinguish between errors and warnings

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


--- Comment #49 from manu at gcc dot gnu dot org  2007-05-17 02:52 ---
(In reply to comment #48)
> Created an attachment (id=13561)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13561&action=view) [edit]
> patch for testsuite infrastructure
> 
> This patch overrides dg-error and dg-warning if gcc_error_prefix and
> gcc_warning_prefix are defined; it defines those for C.
> 

Hi Janis, I think we could independently commit the chunk that adds dg-message.
That way we could fix the testcases that need such directive. For example,
gcc.dg/cpp/19940712-1.c (fix-19940712-1.diff). Also, people could start using
it for messages that are neither warnings nor errors.

What do you think?


-- 


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



[Bug target/31965] _INTEGRAL_MAX_BITS defined incorrectly

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-17 02:42 ---
It was added with:
http://gcc.gnu.org/ml/gcc-patches/2007-01/msg00979.html


-- 


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



[Bug target/31965] New: _INTEGRAL_MAX_BITS defined incorrectly

2007-05-16 Thread rridge at csclub dot uwaterloo dot ca
The macro _INTEGRAL_MAX_BITS is a defined as a builtin macro with an incorrect
value on mingw32.  This Microsoft C specific macro is supposed to report "the
maximum size (in bits) for an integral type".  In GCC's case this would be 64,
the size of a long long, not 32 as it currently defines the macro.

(Perhaps the real problem is that this macro is defined at all.  It's specific
to the Microsoft C/C++ compiler and not part of the Windows API.)


-- 
   Summary: _INTEGRAL_MAX_BITS defined incorrectly
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rridge at csclub dot uwaterloo dot ca
 GCC build triplet: i386-pc-mingw32
  GCC host triplet: i386-pc-mingw32
GCC target triplet: i386-pc-mingw32


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



[Bug fortran/31964] ishftc fails with certain thrid argument

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


--- Comment #3 from jvdelisle at gcc dot gnu dot org  2007-05-17 01:49 
---
I think we have an off by one when setting mask.  I want to do some testing and
double check on all this.  Here is a patch:

Index: ishftc.c
===
*** ishftc.c(revision 124756)
--- ishftc.c(working copy)
*** ishftc4 (GFC_INTEGER_4 i, GFC_INTEGER_4 
*** 45,51 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_4)0) << size;
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }
--- 45,51 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_4)0) << (size - 1);
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }
*** ishftc8 (GFC_INTEGER_8 i, GFC_INTEGER_4 
*** 65,71 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_8)0) << size;
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }
--- 65,71 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_8)0) << (size - 1);
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }
*** ishftc16 (GFC_INTEGER_16 i, GFC_INTEGER_
*** 86,92 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_16)0) << size;
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }
--- 86,92 
if (shift == 0 || shift == size)
  return i;

!   mask = (~(GFC_INTEGER_16)0) << (size - 1);
bits = i & ~mask;
return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask);
  }


-- 

jvdelisle at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jvdelisle at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2007-05-17 01:30:46 |2007-05-17 01:49:20
   date||


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



[Bug fortran/31964] ishftc fails with certain thrid argument

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


--- Comment #2 from jvdelisle at gcc dot gnu dot org  2007-05-17 01:30 
---
$ gfc shifter.f90 
$ ./a.out
  32
   2
   1
   1
$ ifort shifter.f90 
$ ./a.out
  32
   2
   2
   2
$ 


-- 

jvdelisle at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-05-17 01:30:46
   date||


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



[Bug fortran/31833] FAIL: gfortran.dg/integer_exponentiation_3.F90 at -O0 and above

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


--- Comment #2 from dave at hiauly1 dot hia dot nrc dot ca  2007-05-17 
01:30 ---
Subject: Re:  FAIL: gfortran.dg/integer_exponentiation_3.F90 at -O0 and above

> All I have access to is hppa2.0w-hp-hpux11.23, do you think it would be
> triggered there also?

Probably, since HP has pretty much frozen library support on hppa.

Dave


-- 


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



[Bug fortran/31964] ishftc fails with certain thrid argument

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


--- Comment #1 from kargl at gcc dot gnu dot org  2007-05-17 00:51 ---
What output were you expecting? 

  write(*,*) ishftc(aint,1)
  write(*,*) ishftc(aint,1,32)
  write(*,*) ishftc(aint,1,BIT_SIZE(aint))

All three of these statements are shifting the 32-bit representation of
of 1 to left and wrapping the 1 shifted bit around.


-- 

kargl at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu dot org


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



[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-16 Thread mark at codesourcery dot com


--- Comment #77 from mark at codesourcery dot com  2007-05-17 00:41 ---
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:

> I don't believe that the C++ standards writers really meant to eliminate 
> TBAA. 
> And that is the inevitable consequence of the dynamic memory type approach if
> you are allowed to change the dynamic type in a function.

I agree with Ian.

I think there is good evidence that the authors of the standard intended
C++ to be *more* typesafe than C, and we should read the standard in
that way.  It's unfortunate that neither the C or C++ standards is very
precise about various aspects of the memory model, but that is what it
is.  I think trying to read the standard to divine the answers to these
questions is essentially futile; this is a situation where we should
accept that the standard doesn't say, and do our best to balance
performance with existing practice and expectations.

I don't fully understand the point of Comment #73.  I thought the whole
point of this series of patches was to make the compiler understand that
memory returned by placement new could alias other memory, or to
otherwise introduce a barrier that would prevent the compiler from
reordering accesses across the call to operator new.  If that's the
case, why does the post-patch compiler still think that the writes to
"f" and "l" don't alias?


-- 


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



[Bug c++/31745] [4.3 regression] ICE on invalid use of namespace

2007-05-16 Thread patchapp at dberlin dot org


--- Comment #1 from patchapp at dberlin dot org  2007-05-17 00:05 ---
Subject: Bug number PR c++/31745

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/msg01091.html


-- 


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



[Bug c++/31948] SH- Mathematical Error handling is no working for valid code

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 23:49 ---
sqrt is part of glibc so report it there.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|major   |normal
 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/31955] gcc-4.2.0.tar.bz2 is missing INSTALL html files

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 23:45 ---
*** Bug 31958 has been marked as a duplicate of this bug. ***


-- 


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



[Bug c/31958] gcc-4.2.0.tar.bz2 is missing INSTALL html files

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 23:45 ---


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


-- 

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



[Bug fortran/31964] New: ishftc fails with certain thrid argument

2007-05-16 Thread trumsko at yahoo dot com
If the third argument of ishftc equals BIT_SIZE of the first argument, the
result shall be the same as if the last argument was omitted. 

program main
  implicit none

  integer aint

  aint=1
  write(*,*) BIT_SIZE(aint)
  write(*,*) ishftc(aint,1)
  write(*,*) ishftc(aint,1,32)
  write(*,*) ishftc(aint,1,BIT_SIZE(aint))

end program main

Produces the following wrong output:
  32
   2
   2
   2


/tmp/forttest3 $ gfortran -v
Using built-in specs.
Target: i386-pc-linux-gnu
Configured with: /home/fxcoudert/gfortran_nightbuild/trunk/configure
--prefix=/home/fxcoudert/gfortran_nightbuild/irun-20070426
--enable-languages=c,fortran --disable-decimal-float --build=i386-pc-linux-gnu
--enable-checking=release
--with-gmp=/home/fxcoudert/gfortran_nightbuild/software
Thread model: posix
gcc version 4.3.0 20070426 (experimental)


-- 
   Summary: ishftc fails with certain thrid argument
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: trumsko at yahoo dot com
 GCC build triplet: i686-redhat-linux-gnu
  GCC host triplet: i686-redhat-linux-gnu
GCC target triplet: i686-redhat-linux-gnu


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



[Bug c++/31951] local structure problem

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 23:16 ---
This is not a bug, local classes cannot be template arguments.


-- 


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



[Bug middle-end/31490] Compile error section type conflict

2007-05-16 Thread dtemirbulatov at gmail dot com


--- Comment #9 from dtemirbulatov at gmail dot com  2007-05-16 22:47 ---
This patch fixes both testcases

--- gcc/varasm.c.orig   2007-05-16 21:32:11.0 +0400
+++ gcc/varasm.c2007-05-16 21:36:14.0 +0400
@@ -5762,12 +5762,14 @@ categorize_decl_for_section (tree decl, 
 be read-only or not, but whether the dynamic link will have to
 do something.  If so, we wish to segregate the data in order to
 minimize cache misses inside the dynamic linker.  */
- if (reloc & targetm.asm_out.reloc_rw_mask ())
+ if (reloc & targetm.asm_out.reloc_rw_mask ()
+ && !lookup_attribute ("section", DECL_ATTRIBUTES (decl)))
ret = reloc == 1 ? SECCAT_DATA_REL_LOCAL : SECCAT_DATA_REL;
  else
ret = SECCAT_DATA;
}
-  else if (reloc & targetm.asm_out.reloc_rw_mask ())
+  else if (reloc & targetm.asm_out.reloc_rw_mask ()
+  && !lookup_attribute ("section", DECL_ATTRIBUTES (decl)))
ret = reloc == 1 ? SECCAT_DATA_REL_RO_LOCAL : SECCAT_DATA_REL_RO;
   else if (reloc || flag_merge_constants < 2)
/* C and C++ don't allow different variables to share the same

, bootstraped and tested on i686-pc-linux-gnu with no new regressions, tested
4.2 version with gdb-sim on following architectures arm-elf, arm-none-eabi,
mips-elf, mipsisa64-elf, powerpc-eabisim, sh-elf, powerpc-unknown-eabispe with
no new regressions


-- 


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



[Bug target/27067] Compile errors with multiple inheritance where the stdcall attribute is applied to virtual functions.

2007-05-16 Thread dannysmith at users dot sourceforge dot net


--- Comment #15 from dannysmith at users dot sourceforge dot net  
2007-05-16 21:34 ---
(In reply to comment #13)
> Subject: Re:  Compile errors with multiple inheritance where
>  the stdcall attribute is applied to virtual functions.
> 
> rridge at csclub dot uwaterloo dot ca wrote:
> > --- Comment #11 from rridge at csclub dot uwaterloo dot ca  2007-05-08 
> > 12:25 ---
> > MSC includes the calling convention as part of its C++ name mangling.  Would
> > this bug be easier to solve if the calling convention was also included as 
> > part
> > of the C++ name mangling in GCC, instead of done afterwards?  If so, it 
> > might
> > be worth this small ABI breaking change in some future release of MinGW.
> 
> I think that would be fine, from a C++ perspective.
> 
Patch to this effect (without ABI breakage) at:
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01046.html
and a demangled version (ie, as an attachment) of above at 
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01047.html

Danny


-- 


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



[Bug c++/31961] Premature hiding of symbols makes a copy constructor shooting at its own foot

2007-05-16 Thread waldemar dot rachwal at googlemail dot com


--- Comment #2 from waldemar dot rachwal at googlemail dot com  2007-05-16 
21:13 ---
Subject: Re:  Premature hiding of symbols makes a copy constructor shooting at
its own foot

Hey,
Maybe I don't catch your "process", but #31961 and #31960 both refer
to the same (identical) text of mine. I'm pretty sure I commited only
*once*.
WR.

On 16 May 2007 18:47:57 -, pinskia at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
>
>
> --- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 19:47 
> ---
>
>
> *** This bug has been marked as a duplicate of 31960 ***
>
>
> --
>
> 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=31961
>
> --- You are receiving this mail because: ---
> You reported the bug, or are watching the reporter.
>


-- 


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



[Bug java/30591] Cross build fails because native gcj needed to build ecjx

2007-05-16 Thread daney at gcc dot gnu dot org


--- Comment #6 from daney at gcc dot gnu dot org  2007-05-16 21:10 ---
Marking as FIXED as it now works for me *if* I use a current native GCC to
build the cross compiler.

I am prepering a documentation patch that explains my interpretation of the
requirements.


-- 

daney at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug c++/31954] template function cannot create object of forward declared class

2007-05-16 Thread fang at csl dot cornell dot edu


--- Comment #2 from fang at csl dot cornell dot edu  2007-05-16 20:56 
---
I concur.  If you want to forcibly delay the dependence on the complete type
until instantiation time, you could use a nested typedef in the class template,
like:

class NonDependent;

template 
struct foo {
  typedef NonDependent Bar;
};

class NonDependent { ... };

and then in members of foo, refer to "typename foo::Bar".


-- 

fang at csl dot cornell dot edu changed:

   What|Removed |Added

 CC||fang at csl dot cornell dot
   ||edu


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



[Bug fortran/31879] ICE with function having array of character variables argument

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


--- Comment #3 from pault at gcc dot gnu dot org  2007-05-16 20:55 ---
This fixes it and much more besides. It needs commenting and tidying up.

Paul

Index: gcc/fortran/trans-array.c
===
*** gcc/fortran/trans-array.c   (révision 124762)
--- gcc/fortran/trans-array.c   (copie de travail)
*** gfc_trans_dummy_array_bias (gfc_symbol *
*** 4243,4248 
--- 4243,4315 
  }


+ static void
+ gfc_fixup_missing_charlen (gfc_se *se, gfc_expr *expr)
+ {
+   tree tmp;
+   gfc_ref *char_ref = expr->ref;
+ 
+   expr->ts.cl = gfc_get_charlen ();
+   expr->ts.cl->next = gfc_current_ns->cl_list;
+   gfc_current_ns->cl_list = expr->ts.cl;
+   expr->ts.cl->backend_decl
+   = gfc_create_var (gfc_charlen_type_node, "cl");
+ 
+   for (; char_ref; char_ref = char_ref->next)
+ if (char_ref->type == REF_SUBSTRING)
+   {
+   mpz_t char_len;
+ 
+   mpz_init_set_ui (char_len, 1);
+   mpz_add (char_len, char_len,
+   char_ref->u.ss.end->value.integer);
+   mpz_sub (char_len, char_len,
+   char_ref->u.ss.start->value.integer);
+   tmp = gfc_conv_mpz_to_tree (char_len,
+   gfc_default_character_kind);
+   /* Cast is necessary for *-charlen refs.  */
+   tmp = convert (gfc_charlen_type_node, tmp);
+ 
+   gfc_add_modify_expr (&se->pre, expr->ts.cl->backend_decl, tmp);
+   mpz_clear (char_len);
+   break;
+   }
+ 
+   if (char_ref == NULL)
+ {
+   mpz_t length;
+   tmp = NULL_TREE;
+ 
+   if (expr->expr_type == EXPR_CONSTANT)
+   mpz_init_set_si (length, expr->value.character.length);
+   else if (expr->expr_type == EXPR_ARRAY)
+   mpz_init_set_si (length,
+   expr->value.constructor->expr->value.character.length);
+   else if (expr->expr_type == EXPR_OP)
+   {
+ if (!expr->value.op.op1->ts.cl)
+   gfc_fixup_missing_charlen (se, expr->value.op.op1);
+ if (!expr->value.op.op2->ts.cl)
+   gfc_fixup_missing_charlen (se, expr->value.op.op2);
+ tmp = fold_build2 (PLUS_EXPR, gfc_charlen_type_node,
+expr->value.op.op1->ts.cl->backend_decl,
+expr->value.op.op2->ts.cl->backend_decl);
+   }
+   else
+   mpz_init_set_ui (length, 0);
+ 
+   if (!tmp)
+   {
+ tmp = gfc_conv_mpz_to_tree (length,
+ gfc_default_character_kind);
+ tmp = convert (gfc_charlen_type_node, tmp);
+   }
+ 
+   gfc_add_modify_expr (&se->pre, expr->ts.cl->backend_decl, tmp);
+ }
+ }
+ 
+ 
  /* Convert an array for passing as an actual argument.  Expressions and
 vector subscripts are evaluated and stored in a temporary, which is then
 passed.  For whole arrays the descriptor is passed.  For array sections
*** gfc_conv_expr_descriptor (gfc_se * se, g
*** 4430,4463 
{
  if (expr->ts.cl == NULL)
{
! /* This had better be a substring reference!  */
! gfc_ref *char_ref = expr->ref;
! for (; char_ref; char_ref = char_ref->next)
!   if (char_ref->type == REF_SUBSTRING)
! {
!   mpz_t char_len;
!   expr->ts.cl = gfc_get_charlen ();
!   expr->ts.cl->next = char_ref->u.ss.length->next;
!   char_ref->u.ss.length->next = expr->ts.cl;
! 
!   mpz_init_set_ui (char_len, 1);
!   mpz_add (char_len, char_len,
!char_ref->u.ss.end->value.integer);
!   mpz_sub (char_len, char_len,
!char_ref->u.ss.start->value.integer);
!   expr->ts.cl->backend_decl
!   = gfc_conv_mpz_to_tree (char_len,
!   gfc_default_character_kind);
!   /* Cast is necessary for *-charlen refs.  */
!   expr->ts.cl->backend_decl
!   = convert (gfc_charlen_type_node,
!  expr->ts.cl->backend_decl);
!   mpz_clear (char_len);
! break;
! }
! gcc_assert (char_ref != NULL);
  loop.temp_ss->data.temp.type
!   = gfc_typenode_for_spec (&expr->ts);
  loop.temp_ss->string_length = expr->ts.cl->backend_decl;
}
  else if (expr->ts.cl->length
--- 4497,4505 
{
  if (expr->ts.cl == NULL)
{
! gfc_fixup_missing_charlen (se, expr);
  loop.temp_ss->data.temp.type
!   = gfc_typenode_for_spec (&expr->ts);
  loop.temp_ss->string_length = expr->ts.cl->backend_decl;
}
  else if (expr->ts.cl->length


-- 

pault at gcc dot gnu dot org changed:

   What|Removed 

[Bug c++/31952] parameters may be redeclared in a function try-block

2007-05-16 Thread fang at csl dot cornell dot edu


--- Comment #1 from fang at csl dot cornell dot edu  2007-05-16 20:46 
---
Poor man's workaround: -Wshadow -Werror


-- 

fang at csl dot cornell dot edu changed:

   What|Removed |Added

 CC||fang at csl dot cornell dot
   ||edu


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



[Bug middle-end/31738] Fortran dot product vectorization is restricted

2007-05-16 Thread dorit at il dot ibm dot com


--- Comment #3 from dorit at il dot ibm dot com  2007-05-16 20:45 ---
(In reply to comment #2)
> Here is what happens in the three loops that don't get vectorized:
> (1) the loop in testvectdp2: 
...
> so the vectorizer is ok, except that in this case D.1437_32 doesn't seem to > 
> be used anywhere in the function, so this stmt looks dead to me, but for 
> some reason it is not cleaned away before the vectorizer...  Still need to
> investigate why. 

So looks like the stmt 
   D.1437_32 = prephitmp.192_37
became dead by pass pr31738a.f90.089t.copyprop3.

So the question is what's the most appropriate fix:
(1) fix copyprop3 to also clean away any dead code it creates?
(2) add a dce pass after copyprop3?
(3) work around it in the vectorizer. I think it should be easy - just move the
check of the uses of the reduction in the loop until after the vectorizer
analysis pass that marks relevant stmts.

If (3) sounds like the way to go - I can prepare a patch for that.


-- 


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



[Bug middle-end/31950] [4.3 Regression] ICE in tree-ssa-alias-warnings.c

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


--- Comment #5 from rguenth at gcc dot gnu dot org  2007-05-16 20:07 ---
*** Bug 31962 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dcb314 at hotmail dot com


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



[Bug c/31962] ice for legal code with -Wall -O2

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


--- Comment #2 from rguenth at gcc dot gnu dot org  2007-05-16 20:07 ---


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


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug target/30486] segfault in aggregate_value_p while bootstrapping fortran

2007-05-16 Thread pbrook at gcc dot gnu dot org


--- Comment #2 from pbrook at gcc dot gnu dot org  2007-05-16 20:05 ---
Fixed.

http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01010.html


-- 

pbrook at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug c++/31961] Premature hiding of symbols makes a copy constructor shooting at its own foot

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 19:47 ---


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


-- 

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



[Bug c++/31960] Premature hiding of symbols makes a copy constructor shooting at its own foot

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 19:47 ---
*** Bug 31961 has been marked as a duplicate of this bug. ***


-- 


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



[Bug bootstrap/31963] The configure option "--enable-stage1-checking" is undocumented (and incorrectly named)

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 19:43 ---
> When I compile with "--enable-checking=?" the "checking" is performed on
> stages 2,3 and the libraries - it is NOT performed on stage 1.

I filed a bug about this while back and it was fixed, see PR 29544.


-- 


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



[Bug driver/31963] New: The configure option "--enable-stage1-checking" is undocumented (and incorrectly named)

2007-05-16 Thread rob1weld at aol dot com
This bug report is listed for the HTB i686-pc-linux-gnu but actually affects
ALL platforms.

The reason I chose to put this under the "Component" choice "driver" is because
there is no choice for "documentation" and it does involve renaming one of the
compiler command line options.

---

When I compile with "--enable-checking=?" the "checking" is performed on stages
2,3 and the libraries - it is NOT performed on stage 1.

When I compile with "--enable-stage1-checking" the "checking" is performed on
stage TWO only, and NOT on any other stages (or the libraries).

To _actually_ check stage 1 you would need the Operating System's GCC to have
been compiled using the checking options - otherwise stage 1 is never checked.

Correct ?


BUG 1): The configure option "--enable-stage1-checking" is named incorrectly.
  We need to change the configure script and make it a depreciated or obsoleted
  option and add an option that is instead called "--enable-stage2-checking"
  (does the same thing, just correct the name).


BUG 2): The configure option "--enable-stage1-checking" (or
"--enable-stage2-checking")
  is not documented. Using grep I find the word in these files:

# grep -r stage1-checking gcc-4_2-branch/*
gcc-4_2-branch/ChangeLog  gcc-4_2-branch/autom4te.cache/output.0 
gcc-4_2-branch/configure  gcc-4_2-branch/configure.in 

The file "gccinstall.info" (and any .html DOCs) and the files that create them
are the correct location to document this feature - directly under the notes
for "--enable-checking".



Suggestion 1): Use "--enable-stage2-checking" to enable a few more checks by
default.

The gccinstall.info file says this for the `--enable-checking' option:

The full set of flags available are: "assert", "fold", "gc", "gcac" "misc", 
"rtl", "rtlflag", "runtime", "tree", and "valgrind". The "rtl", "gcac" and
"valgrind" checks are very expensive. (NOTE: See below! "fold" is expensive -
DOCs are wrong?)

When building from SVN or snapshots we use "assert", "gc", "misc", "rtlflag", 
"runtime" and "tree". The release versions use only "assert" and "runtime".

Thus, according to the DOCs (which do need updating), when we build the SVN we
are not using: "fold", "gcac" "rtl", and "valgrind".


I suggest that when building the SVN version we could use, (on all stages), the
flags "--enable-checking=assert,misc,rtlflag,runtime,tree", and the additional
flag (now called) "--enable-stage2-checking=fold,gc,rtl" for better, faster
checking.

Would we want to add "misc" and "rtlflag" to the release version checks ?

The gcac (GC_ALWAYS_COLLECT) flag could probably be left off the list.



The file, "gcc-4_2-branch\gcc\config.in" documents checking a little
differently
(and each type more thoroughly) than the file "gccinstall.info" does.


ENABLE_ASSERT_CHECKING  -   "assert"
/* Define if you want assertions enabled. This is a cheap check. */


ENABLE_CHECKING -   "misc"
/* Define if you want more run-time sanity checks. This one gets a grab bag of
   miscellaneous but relatively cheap checks. */


ENABLE_FOLD_CHECKING-   "fold"
/* Define if you want fold checked that it never destructs its argument. This
   is quite expensive. */


ENABLE_GC_ALWAYS_COLLECT-   "gcac"
/* Define if you want the garbage collector to operate in maximally paranoid
   mode, validating the entire heap and collecting garbage at every
   opportunity. This is extremely expensive. */


ENABLE_GC_CHECKING  -   "gc"
/* Define if you want the garbage collector to do object poisoning and other
   memory allocation checks. This is quite expensive. */


ENABLE_RTL_CHECKING -   "rtl"
/* Define if you want all operations on RTL (the basic data structure of the
   optimizer and back end) to be checked for dynamic type safety at runtime.
   This is quite expensive. */


ENABLE_RTL_FLAG_CHECKING-   "rtlflag"
/* Define if you want RTL flag accesses to be checked against the RTL codes
   that are supported for each access macro. This is relatively cheap. */


ENABLE_RUNTIME_CHECKING -   "runtime"
/* Define if you want runtime assertions enabled. This is a cheap check. */


ENABLE_TREE_CHECKING-   "tree"
/* Define if you want all operations on trees (the basic data structure of the
   front ends) to be checked for dynamic type safety at runtime. This is
   moderately expensive. The tree browser debugging routines will also be
   enabled by this option. */


ENABLE_VALGRIND_CHECKING-   "valgrind"
/* Define if you want to run subprograms and generated programs through
   valgrind (a memory checker). This is extremely expensive. */


-- 
   Summary: The configure option "--enable-stage1-checking" is
undocumented (and incorrectly named)
   Product: gcc
   Version: 4.2.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: driver
A

[Bug c/31962] ice for legal code with -Wall -O2

2007-05-16 Thread dcb314 at hotmail dot com


--- Comment #1 from dcb314 at hotmail dot com  2007-05-16 19:34 ---
Created an attachment (id=13565)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13565&action=view)
C source code


-- 


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



[Bug c/31962] New: ice for legal code with -Wall -O2

2007-05-16 Thread dcb314 at hotmail dot com
I just tried to compile Suse Linux package icecream-0.7.14a-5 with the GNU C 
compiler version 4.3 snapshot 20070511

The compiler said

minilzo.c: In function '_lzo_config_check':
minilzo.c:2162: internal compiler error: tree check: expected tree that
contains 'decl common' structure, have 'struct_field_tag' in ffan_walker, at
tree-ssa-alias-warnings.c:638
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

Pre-processed source code attached. Flags -Wall -O2 required.


-- 
   Summary: ice for legal code with -Wall -O2
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dcb314 at hotmail dot com
  GCC host triplet: suse-linux-x86_64


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



[Bug c++/31961] New: Premature hiding of symbols makes a copy constructor shooting at its own foot

2007-05-16 Thread waldemar dot rachwal at gmail dot com
When I create an object using copy constructor syntax, giving it other object
of that type and (crucial) the same name as the object just being
constructed... the compiler treats that "other" object as the object being
constructed(!) Similar effects I get with the builtin data types.

Below is the short program demonstrating this (IMO) weird behavior with
associated embedded Makefile and two sample outputs (#if 0--commented).

I couldn't find anything about this issue in the standard (draft), but thinking
about it deeper since yesterday I couldn't discover any reasonable
*application* of such a semantic assuming it was valid. Similar effects with
builtin data types may be a dangerous trap for programmers. At least it's very
unsafe.

Even if g++ gives at last warnings, they appear only when I've added (sic!)
-O1, -O2... options which should have had nothing with the problem encountered
(note that in all my tests I tend to use -Wall -Wextra -pedantic -ansi as a
basis).

On the other hand, in oppose to semantics/behavior I observe with g++, I have
the strong rationale for semantics I expect (in case the standard says nothing
or leave it up to compiler implementators).

I get the problem with 4.1.1 on Solaris, with 3.4.4 on Cygwin as well, so I
think it might be quite general problem (if not solved yet).

Regards,
WR.

code snippet:

// premature-hiding.cpp

// SUBJECT:
//   Premature hiding of symbols makes copy constructor shooting at its own
foot.

// SYNOPSIS:
//   void fun (Seq& seq)  // <- (o)uter symbol
//   {
//   Seq seq(seq);// symbols legend: (i)nner, (o)uter
//   //   ^i  ^o  // **EXPECTED**
//   //   ^i  ^i  // *G++ACTUAL** :(
//   ...
//   }

#include 

using namespace std;

class X {
public:
X ();
// In my original application I intentionally use non-const argument,
// but here I put const variant, because:
// 1) both give the same result, and
// 2) const one looks more severe, as usually assiociated with "copying".
explicit X (const X& rhs);
~X ();
private:
int dummy;
};

inline X::X ()
{
cout << "this ==> " << this << endl;
}

inline X::X (const X& rhs)
{
cout << "&rhs ++> " << &rhs << endl;
cout << "this oo> " << this << endl;
}

X::~X ()
{
cout << "~obj ~~> " << this << endl;
}

int main ()
{
// Weird behavior is observed already
// when dealing with simple builtin types.

cout << endl << "// int n = n + 1;" << endl;
int n = n + 1;
cout << "n ==> " << n << endl;

cout << endl << "// double r = r + 1000.0;" << endl;
double r = r + 1000.0;
cout << "r ==> " << r << endl;

//
// auto object(s)
//
cout << endl << "// X obj;" << endl;
{
// Object 'obj' defined. It should be visible by code that follows.
X obj;

cout << "//   X obj(obj);" << endl;
{
// Object of the same name defined in nested scope
// is expected to be properly "chained" with the parent object
// of the outer scope.
// Unfortunately it doesn't happen :( and GCC
// allows an object being constructed to "copy" over itself.
// It looks the symbol is introduced to symbol table
// on '(' paren, but should be on ')'.
// The latter (IMO proper) approach should only compile
// if there is a symbol of that name already defined
// somewhere earlier (not necessarily in nested {} as in my
example)
// and lexically visible.
X obj(obj); // <* UNEXPECTED BEHAVIOR

cout << "// X obj(obj);" << endl;
{
// Trying the same on the next (3rd in turn) level...
X obj(obj); // <* UNEXPECTED BEHAVIOR (as above)
}
}
}

//
// heap object(s)
//
cout << endl << "// X *ptr = new X(*ptr);" << endl;
X *ptr = new X(*ptr);
delete ptr;

return 0;
}

#if 0 // # Makefile ##
CXX = g++
CXXFLAGS = -g -Wall -Wextra -pedantic -ansi $(EXTFLAGS)

program := premature-hiding

$(program): $(program).cpp Makefile
$(CXX) -o $@ $(CXXFLAGS) $<

run: $(program)
@./$(program)

clean:
-rm $(program) $(program).exe *.o *.s *.ii
#endif

#if 0 // # examining flags ###
make -B CXXFLAGS=   # clean compile, initial surprise
make -B # clean too(!!), big surprise
make -B EXTFLAGS='-O1'  # warnings, but compiles (why it has anything with -O1
?!)
#endif

#if 0 // # g++ (GCC) 4.1.1 [sun4u] ###

// int n = n + 1;
n ==> 67481

// double r = r + 1000.0;
r ==> 1.96794e+307

// X obj;
this ==> 0xffbfefc8
//   X obj(obj);
&rhs ++> 0xffbfefc4 <** UNEXPECTED
this oo> 0xffbfefc4
// X obj(obj);
&rhs ++> 0xffbfefc0 <** UNEXPECTED
this oo> 0xffbfefc0
~obj ~~> 0xffbfefc0
~obj ~~> 0xffbfe

[Bug c++/31954] template function cannot create object of forward declared class

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-05-16 18:23 ---
I don't think this is a bug.  C0 is not dependent so it has to be complete when
the new is parsed in the template.


-- 


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



[Bug c++/31960] New: Premature hiding of symbols makes a copy constructor shooting at its own foot

2007-05-16 Thread waldemar dot rachwal at gmail dot com
When I create an object using copy constructor syntax, giving it other object
of that type and (crucial) the same name as the object just being
constructed... the compiler treats that "other" object as the object being
constructed(!) Similar effects I get with the builtin data types.

Below is the short program demonstrating this (IMO) weird behavior with
associated embedded Makefile and two sample outputs (#if 0--commented).

I couldn't find anything about this issue in the standard (draft), but thinking
about it deeper since yesterday I couldn't discover any reasonable
*application* of such a semantic assuming it was valid. Similar effects with
builtin data types may be a dangerous trap for programmers. At least it's very
unsafe.

Even if g++ gives at last warnings, they appear only when I've added (sic!)
-O1, -O2... options which should have had nothing with the problem encountered
(note that in all my tests I tend to use -Wall -Wextra -pedantic -ansi as a
basis).

On the other hand, in oppose to semantics/behavior I observe with g++, I have
the strong rationale for semantics I expect (in case the standard says nothing
or leave it up to compiler implementators).

I get the problem with 4.1.1 on Solaris, with 3.4.4 on Cygwin as well, so I
think it might be quite general problem (if not solved yet).

Regards,
WR.

code snippet:

// premature-hiding.cpp

// SUBJECT:
//   Premature hiding of symbols makes copy constructor shooting at its own
foot.

// SYNOPSIS:
//   void fun (Seq& seq)  // <- (o)uter symbol
//   {
//   Seq seq(seq);// symbols legend: (i)nner, (o)uter
//   //   ^i  ^o  // **EXPECTED**
//   //   ^i  ^i  // *G++ACTUAL** :(
//   ...
//   }

#include 

using namespace std;

class X {
public:
X ();
// In my original application I intentionally use non-const argument,
// but here I put const variant, because:
// 1) both give the same result, and
// 2) const one looks more severe, as usually assiociated with "copying".
explicit X (const X& rhs);
~X ();
private:
int dummy;
};

inline X::X ()
{
cout << "this ==> " << this << endl;
}

inline X::X (const X& rhs)
{
cout << "&rhs ++> " << &rhs << endl;
cout << "this oo> " << this << endl;
}

X::~X ()
{
cout << "~obj ~~> " << this << endl;
}

int main ()
{
// Weird behavior is observed already
// when dealing with simple builtin types.

cout << endl << "// int n = n + 1;" << endl;
int n = n + 1;
cout << "n ==> " << n << endl;

cout << endl << "// double r = r + 1000.0;" << endl;
double r = r + 1000.0;
cout << "r ==> " << r << endl;

//
// auto object(s)
//
cout << endl << "// X obj;" << endl;
{
// Object 'obj' defined. It should be visible by code that follows.
X obj;

cout << "//   X obj(obj);" << endl;
{
// Object of the same name defined in nested scope
// is expected to be properly "chained" with the parent object
// of the outer scope.
// Unfortunately it doesn't happen :( and GCC
// allows an object being constructed to "copy" over itself.
// It looks the symbol is introduced to symbol table
// on '(' paren, but should be on ')'.
// The latter (IMO proper) approach should only compile
// if there is a symbol of that name already defined
// somewhere earlier (not necessarily in nested {} as in my
example)
// and lexically visible.
X obj(obj); // <* UNEXPECTED BEHAVIOR

cout << "// X obj(obj);" << endl;
{
// Trying the same on the next (3rd in turn) level...
X obj(obj); // <* UNEXPECTED BEHAVIOR (as above)
}
}
}

//
// heap object(s)
//
cout << endl << "// X *ptr = new X(*ptr);" << endl;
X *ptr = new X(*ptr);
delete ptr;

return 0;
}

#if 0 // # Makefile ##
CXX = g++
CXXFLAGS = -g -Wall -Wextra -pedantic -ansi $(EXTFLAGS)

program := premature-hiding

$(program): $(program).cpp Makefile
$(CXX) -o $@ $(CXXFLAGS) $<

run: $(program)
@./$(program)

clean:
-rm $(program) $(program).exe *.o *.s *.ii
#endif

#if 0 // # examining flags ###
make -B CXXFLAGS=   # clean compile, initial surprise
make -B # clean too(!!), big surprise
make -B EXTFLAGS='-O1'  # warnings, but compiles (why it has anything with -O1
?!)
#endif

#if 0 // # g++ (GCC) 4.1.1 [sun4u] ###

// int n = n + 1;
n ==> 67481

// double r = r + 1000.0;
r ==> 1.96794e+307

// X obj;
this ==> 0xffbfefc8
//   X obj(obj);
&rhs ++> 0xffbfefc4 <** UNEXPECTED
this oo> 0xffbfefc4
// X obj(obj);
&rhs ++> 0xffbfefc0 <** UNEXPECTED
this oo> 0xffbfefc0
~obj ~~> 0xffbfefc0
~obj ~~> 0xffbfe

[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-16 Thread ian at airs dot com


--- Comment #76 from ian at airs dot com  2007-05-16 18:01 ---
I don't believe that the C++ standards writers really meant to eliminate TBAA. 
And that is the inevitable consequence of the dynamic memory type approach if
you are allowed to change the dynamic type in a function.

If we really want to adopt that approach, then the simple fix is for the C++
frontend to set flag_strict_aliasing to 0.  But I don't think we want to do
that.


-- 


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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #75 from rguenth at gcc dot gnu dot org  2007-05-16 17:08 
---
In the chance of endlessly repeating myself here (;)) - what comment #73 boils
down to is that we may not prune alias sets of stores based on TBAA results.
In fact, we need to realize that C++ object lifetime rules need to be modeled
somehow - it's those rules that count after all, not some magic side-effects
of placement new.

Of course I realize that without TBAA pruning we have no alias information left
on the RTL side for stores (so stores effectively have alias set zero).


-- 


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



[Bug middle-end/31959] [4.3 Regression] ICE in expand_builtin_expect, at builtins.c:5112

2007-05-16 Thread tbm at cyrius dot com


--- Comment #1 from tbm at cyrius dot com  2007-05-16 16:58 ---
struct btree_priv *area;
typedef struct bt_node_t
{
  int next;
  int used;
}
bt_leaf_t;
typedef union bt_page_t
{
  bt_leaf_t leaf;
}
bt_page_t;
static inline bt_page_t *
vbt_deref (struct btree_priv *bt)
{
}
static inline bt_page_t *
bt_deref (const struct btree_priv *bt)
{
  return vbt_deref ((struct btree_priv *) bt);
}
btree_fetch (struct btree_priv *area)
{
  int pos;
  const bt_leaf_t *leaf;
  if (__builtin_expect ((pos + 1 >= leaf->used), 0))
{
  leaf = &bt_deref (area)->leaf;
}
}


-- 


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



[Bug middle-end/31959] New: [4.3 Regression] ICE in expand_builtin_expect, at builtins.c:5112

2007-05-16 Thread tbm at cyrius dot com
4.3 ICEs during error recovery.  This doesn't happen with 4.2.

(sid)24008:[EMAIL PROTECTED]: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O2 -Werror 
btree.c
cc1: warnings being treated as errors
btree.c: In function 'bt_deref':
btree.c:20: error: passing argument 1 of 'vbt_deref' discards qualifiers from
pointer target type
btree.c: In function 'btree_fetch':
btree.c:26: internal compiler error: in expand_builtin_expect, at
builtins.c:5112


-- 
   Summary: [4.3 Regression] ICE in expand_builtin_expect, at
builtins.c:5112
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com


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



[Bug middle-end/31950] [4.3 Regression] ICE in tree-ssa-alias-warnings.c

2007-05-16 Thread tbm at cyrius dot com


--- Comment #4 from tbm at cyrius dot com  2007-05-16 16:39 ---
CCing Richi in case he didn't see the comment saying that his patch works.


-- 

tbm at cyrius dot com changed:

   What|Removed |Added

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


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



[Bug c/31958] New: gcc-4.2.0.tar.bz2 is missing INSTALL html files

2007-05-16 Thread simon dot marshall at misys dot com
I hesitate to report this because it seems so obvious I must be wrong:
gcc-4.2.0/INSTALL only contains the README file (which says to look in
index.html).  In previous tarballs, INSTALL contained the config/build/etc.
instructions as HTML files.

I haven't seen anything that would suggest that it is not intended to be the
case anymore: gcc-4.2.0/README and gcc-4.2.0/INSTALL/README haven't changed in
years...


-- 
   Summary: gcc-4.2.0.tar.bz2 is missing INSTALL html files
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: simon dot marshall at misys dot com


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



[Bug bootstrap/31957] New: Build of compiler fails with 'error: #endif without #if'

2007-05-16 Thread joerg dot richter at pdv-fs dot de
$ configure --enable-languages=c,c++ --with-ld=/bin/ld --with-as=/bin/as
$ make

leads to:

In file included from
.../obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include/cctype:50,
 from
.../gcc-4.2.0/libstdc++-v3/include/precompiled/stdc++.h:38:
.../obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include/powerpc-ibm-aix5.2.0.0/bits/c++config.h:1087:2:
error: #endif without #if

While doing:
make[4]: Entering directory
`/pdv/.ws/jrichter/gcc420/obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include'
sed: 0602-429 No editing script was provided.
Usage:  sed [-n] Script [File ...]
sed [-n] [-e Script] ... [-f Script_file] ... [File ...]
if [ ! -d "./powerpc-ibm-aix5.2.0.0/bits/stdc++.h.gch" ]; then \
  mkdir -p ./powerpc-ibm-aix5.2.0.0/bits/stdc++.h.gch; \
fi; \
/ws/jrichter/gcc420/obj/./gcc/xgcc -shared-libgcc
-B/ws/jrichter/gcc420/obj/./gcc -nostdinc++
-L/ws/jrichter/gcc420/obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/src
-L/ws/jrichter/gcc420/obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/src/.libs
-B/usr/local/powerpc-ibm-aix5.2.0.0/bin/
-B/usr/local/powerpc-ibm-aix5.2.0.0/lib/ -isystem
/usr/local/powerpc-ibm-aix5.2.0.0/include -isystem
/usr/local/powerpc-ibm-aix5.2.0.0/sys-include -Winvalid-pch -Wno-deprecated -x
c++-header -g -O2 
-I/ws/jrichter/gcc420/obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include/powerpc-ibm-aix5.2.0.0
-I/ws/jrichter/gcc420/obj/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include
-I/ws/jrichter/gcc420/gcc-4.2.0/libstdc++-v3/libsupc++ -O0 -g
/ws/jrichter/gcc420/gcc-4.2.0/libstdc++-v3/include/precompiled/stdc++.h -o
powerpc-ibm-aix5.2.0.0/bits/stdc++.h.gch/O0g.gch


the file
.../powerpc-ibm-aix5.2.0.0/libstdc++-v3/include/powerpc-ibm-aix5.2.0.0/bits/c++config.h
has as the last line:
   #endif // _CXXCONFIG_
but no corresponding #ifndef/#define lines of his header guard


-- 
   Summary: Build of compiler fails with 'error: #endif without #if'
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: joerg dot richter at pdv-fs dot de
 GCC build triplet: powerpc-ibm-aix5.2.0.0
  GCC host triplet: powerpc-ibm-aix5.2.0.0
GCC target triplet: powerpc-ibm-aix5.2.0.0


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



[Bug middle-end/31950] [4.3 Regression] ICE in tree-ssa-alias-warnings.c

2007-05-16 Thread Ralf dot Wildenhues at gmx dot de


--- Comment #3 from Ralf dot Wildenhues at gmx dot de  2007-05-16 16:07 
---
Your patch seems to fix the failure for both reduced test cases
as well as the original code.  Thanks for the prompt response!


-- 


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



[Bug tree-optimization/31191] [4.3 Regression] 1000% Runtime regression for FreeFEM navier-stokes example

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


--- Comment #3 from rguenth at gcc dot gnu dot org  2007-05-16 16:03 ---
Magically fixed itself.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug c++/31956] New: names declared in a condition may be redeclared

2007-05-16 Thread andrew dot stubbs at st dot com
The C++ standard, clauses 3.3.2 paragraph 4, and 6.4 paragraph 3, states that
names declared in the condition of `while', `if', `for' and `switch'
statements, may not be redeclared in any of the outermost controlled blocks.

This does work for `while' statements, however it does not work with `if', or
`switch' statements.

E.g. The following are compiled, but should not:

if (int foo = 0)
  {
int foo = 1; // invalid
  }

switch (int foo = 0)
  {
default:
  int foo = 1; // invalid
  }

A similar example with a for statement is reported in Bug #2288


-- 
   Summary: names declared in a condition may be redeclared
   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=31956



[Bug fortran/31833] FAIL: gfortran.dg/integer_exponentiation_3.F90 at -O0 and above

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


--- Comment #1 from fxcoudert at gcc dot gnu dot org  2007-05-16 15:46 
---
All I have access to is hppa2.0w-hp-hpux11.23, do you think it would be
triggered there also?


-- 


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



[Bug c/31955] New: gcc-4.2.0.tar.bz2 is missing INSTALL html files

2007-05-16 Thread simon dot marshall at misys dot com
I hesitate to report this because it seems so obvious I must be wrong:
gcc-4.2.0/INSTALL only contains the README file (which says to look in
index.html).  In previous tarballs, INSTALL contained the config/build/etc.
instructions as HTML files.

I haven't seen anything that would suggest that it is not intended to be the
case anymore: gcc-4.2.0/README and gcc-4.2.0/INSTALL/README haven't changed in
years...


-- 
   Summary: gcc-4.2.0.tar.bz2 is missing INSTALL html files
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: simon dot marshall at misys dot com


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



[Bug tree-optimization/31953] [4.3 Regression] ICE in set_value_range, at tree-vrp.c:305

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


--- Comment #2 from rguenth at gcc dot gnu dot org  2007-05-16 15:43 ---
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-05-16 15:43:17
   date||
   Target Milestone|--- |4.3.0


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



[Bug middle-end/31950] [4.3 Regression] ICE in tree-ssa-alias-warnings.c

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


--- Comment #2 from rguenth at gcc dot gnu dot org  2007-05-16 15:41 ---
Confirmed.

Index: tree-ssa-alias-warnings.c
===
--- tree-ssa-alias-warnings.c   (revision 124763)
+++ tree-ssa-alias-warnings.c   (working copy)
@@ -635,7 +635,7 @@ ffan_walker (tree *t,
  int *go_below ATTRIBUTE_UNUSED,
  void *data ATTRIBUTE_UNUSED)
 {
-  if (DECL_P (*t) && DECL_ARTIFICIAL (*t))
+  if (DECL_P (*t) && !MTAG_P (*t) && DECL_ARTIFICIAL (*t))
 return *t;
   else
 return NULL_TREE;


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rus at google dot com
 Status|UNCONFIRMED |NEW
  Component|c++ |middle-end
 Ever Confirmed|0   |1
   Keywords||ice-on-valid-code
   Last reconfirmed|-00-00 00:00:00 |2007-05-16 15:41:36
   date||
Summary|ICE in tree-ssa-alias-  |[4.3 Regression] ICE in
   |warnings.c  |tree-ssa-alias-warnings.c
   Target Milestone|--- |4.3.0


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



[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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #74 from rguenth at gcc dot gnu dot org  2007-05-16 15:36 
---
Note that another solution to this whole problem is to record conflicts for
all stored-to types that we cannot disambiguate by points-to analysis.  This
also solves the reading of the standard that allows

  int i = 1;
  (float *)&i = 0.0;

at RTL expansion time we need to do the same apart from that we don't have
points-to information available.

The above supports the notion of "re-using memory changes its dynamic type".
Which of course gets a little interesting for aggregates that are initialized
piece-wise (not that this problem isn't present now).


-- 


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



[Bug fortran/30820] -Wno-error not necessary in Make-lang.in any more?

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


--- Comment #2 from fxcoudert at gcc dot gnu dot org  2007-05-16 15:34 
---
On mainline, we currently require GMP >= 4.1, for which this transformation is
safe (the mpz_get_ui inline function in gmp.h was corrected to avoid this
warning). Thus, simply removing these lines should work fine:


Index: Make-lang.in
===
--- Make-lang.in(revision 124460)
+++ Make-lang.in(working copy)
@@ -48,13 +48,6 @@ GFORTRAN_TARGET_INSTALL_NAME := $(target
 # Use strict warnings for this front end.
 fortran-warn = $(STRICT_WARN)

-# These files get warnings from an inline function in GMP saying:
-# "control may reach end of non-void function '__gmpz_get_ui' being inlined"
-fortran/expr.o-warn = -Wno-error
-fortran/resolve.o-warn = -Wno-error
-fortran/simplify.o-warn = -Wno-error
-fortran/trans-common.o-warn = -Wno-error
-
 # These are the groups of object files we have.  The F95_PARSER_OBJS are
 # all the front end files, the F95_OBJS are the files for the translation
 # from the parse tree to GENERIC


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |fxcoudert at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Keywords||patch
   Last reconfirmed|2007-02-16 11:08:24 |2007-05-16 15:34:54
   date||


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



[Bug c/31949] SH- Aliasing problem for incompatible pointers in c code

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


--- Comment #1 from rguenth at gcc dot gnu dot org  2007-05-16 15:24 ---
You are accessing memory of type structC via a pointer of type structB * which
violates C aliasing rules.


-- 

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



[Bug c++/31954] New: template function cannot create object of forward declared class

2007-05-16 Thread thomas at maier-komor dot de
The following code works on gcc-4.1.2, but is rejected with gcc-4.2.0:

class ABC0
{
public:
virtual ~ABC0() = 0;
virtual int something() = 0;
};

inline ABC0::~ABC0()
{ }

struct C0;

struct ABC1 : public ABC0
{
explicit ABC1()
: ABC0()
{ }

virtual ABC0 *sometwhat() = 0;
};


template
struct C1 : public ABC1
{
ABC0 *somewhat();
};


template
ABC0 *C1::somewhat()
{
return new C0;
}


struct C0 : public ABC0
{
C0(int c)
: ABC0()
, _c(c)
{ }

int something()
{ return 0; }

private:
int _c;
};


$ g++ -V4.2.0 -c bug.cc
bug.cc: In member function 'ABC0* C1::somewhat()':
bug.cc:34: error: invalid use of incomplete type 'struct C0'
bug.cc:12: error: forward declaration of 'struct C0'


-- 
   Summary: template function cannot create object of forward
declared class
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: thomas at maier-komor dot de
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


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



[Bug fortran/31483] [4.1/4.2 only] ICE on fortran Code

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


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||fxcoudert at gcc dot gnu dot
   ||org
  GCC build triplet|x86_64-unknown-linux-gnu|
   GCC host triplet|x86_64-unknown-linux-gnu|
 GCC target triplet|x86_64-unknown-linux-gnu|
   Keywords||ice-on-valid-code, patch
  Known to fail||4.2.1 4.1.3
  Known to work||4.3.0
Summary|ICE on fortran Code |[4.1/4.2 only] ICE on
   ||fortran Code
   Target Milestone|--- |4.2.1


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



[Bug tree-optimization/31953] [4.3 Regression] ICE in set_value_range, at tree-vrp.c:305

2007-05-16 Thread tbm at cyrius dot com


--- Comment #1 from tbm at cyrius dot com  2007-05-16 15:04 ---
Reduced testcase:

struct WView
{
  int hexedit_mode:1;
};
toggle_hexedit_mode (struct WView *view)
{
  if (view->hexedit_mode)
{
}
  else
{
  view->hexedit_mode = !view->hexedit_mode;
}
}


-- 


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



[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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #73 from rguenth at gcc dot gnu dot org  2007-05-16 15:02 
---
For the following testcase, loop store motion re-orders the writes to *l and *f
at -O2.  (Note as is, the testcase is only valid for n == 1)

inline void* operator new(unsigned long, void* __p) throw() { return __p; }

extern void bar();

long foo(double *p, int n)
{
  long *f;
  for (int i=0; i:
  if (n > 0)
goto ;
  else
goto ;

:
  f = (long int *) p;
  <<>>
  # SMT.4_27 = VDEF 
  *f = -1;
  # SMT.5_35 = VDEF 
  *(int *) p = 0;

:
  # SMT.4_23 = VDEF 
  # SMT.5_24 = VDEF 
  bar ();
  return *f;

which is wrong.  Runtime testcase that aborts:

inline void* operator new(unsigned long, void* __p) throw() { return __p; }

void __attribute__((noinline)) bar() {};

long __attribute__((noinline)) foo(double *p, int n)
{
  long *f;
  for (int i=0; ihttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=29286



[Bug fortran/31725] [4.1 only] substring bound evaluated multiple times: wrong code for string(function():) = 'X'

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


--- Comment #8 from fxcoudert at gcc dot gnu dot org  2007-05-16 15:01 
---
Fixed on mainline and 4.2.1


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
  Known to work|4.3.0   |4.3.0 4.2.1
 Resolution||FIXED
Summary|[4.1/4.2 only] substring|[4.1 only] substring bound
   |bound evaluated multiple|evaluated multiple times:
   |times: wrong code for   |wrong code for
   |string(function():) = 'X'   |string(function():) = 'X'


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



[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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #72 from rguenth at gcc dot gnu dot org  2007-05-16 14:49 
---
inline void* operator new(unsigned long, void* __p) throw() { return __p; }

extern void bar();

float foo(double *p)
{
  long *l = (long *)p;
  *l = 1;
  float *f = new (p) float;
  *f = 0.0;
  bar ();
  return *f;
}

with -O2 I see

:
  l_2 = (long int *) p_1(D);
  # SMT.4_12 = VDEF 
  *l_2 = 1;
  <<>>
  __p_8 = p_1(D);
  f_5 = (float *) __p_8;
  # SMT.5_14 = VDEF 
  *f_5 = 0.0;
  # SMT.4_15 = VDEF 
  # SMT.5_16 = VDEF 
  bar ();
  # VUSE 
  D.2462_6 = *f_5;
  return D.2462_6;

which looks wrong - the store to f_5 needs to alias *l_2?


-- 


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



[Bug tree-optimization/31953] New: [4.3 Regression] ICE in set_value_range, at tree-vrp.c:305

2007-05-16 Thread tbm at cyrius dot com
This worked with 4.3.0 20070422 but fails now with 20070515:

(sid)23934:[EMAIL PROTECTED]: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O2 mc-view.i
view.c: In function 'toggle_hexedit_mode':
view.c:2045: internal compiler error: in set_value_range, at tree-vrp.c:305
Please submit a full bug report,
with preprocessed source if appropriate.


-- 
   Summary: [4.3 Regression] ICE in set_value_range, at tree-
vrp.c:305
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com


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



[Bug fortran/31725] [4.1/4.2 only] substring bound evaluated multiple times: wrong code for string(function():) = 'X'

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


--- Comment #7 from fxcoudert at gcc dot gnu dot org  2007-05-16 14:36 
---
Subject: Bug 31725

Author: fxcoudert
Date: Wed May 16 13:36:03 2007
New Revision: 124769

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124769
Log:
PR fortran/31725

* trans-expr.c (gfc_conv_substring): Evaluate substring bounds
only once.

* gfortran.dg/substr_4.f: New test.

Added:
branches/gcc-4_2-branch/gcc/testsuite/gfortran.dg/substr_4.f
  - copied unchanged from r124720,
trunk/gcc/testsuite/gfortran.dg/substr_4.f
Modified:
branches/gcc-4_2-branch/gcc/fortran/ChangeLog
branches/gcc-4_2-branch/gcc/fortran/trans-expr.c
branches/gcc-4_2-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug libffi/31937] libffi doesn't support ppc without FPU

2007-05-16 Thread patrick dot olinet at gmail dot com


--- Comment #1 from patrick dot olinet at gmail dot com  2007-05-16 14:23 
---

Notice that this bug prevents loading and running java bytecode from a native
code binary compiled with gcj. I guess it relies on libffi to call the methods
of the bytecode.

This java problem is what I've encountered first before investigating and
finding out that it all comes from libfii.


-- 

patrick dot olinet at gmail dot com changed:

   What|Removed |Added

 CC||patrick dot olinet at gmail
   ||dot com


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



[Bug c++/31952] New: parameters may be redeclared in a function try-block

2007-05-16 Thread andrew dot stubbs at st dot com
According to the C++ standard, clause 3.3.2, paragraph 2, sentence 3, the
following program should be invalid:

int
foo (int bar)
try
{
  return 0;
}
catch (...)
{
  int bar = 0; // invalid
  return 1;
}

Specifically, `bar' may not be redeclared in the outermost block of a handler
in a function try-block.

GCC 4.1.1 gives no errors or warnings (other than unused parameters and
variables).


-- 
   Summary: parameters may be redeclared in a function try-block
   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=31952



[Bug c++/986] g++ misses warning for & on temporary

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


--- Comment #23 from manu at gcc dot gnu dot org  2007-05-16 14:03 ---
Hi Naimu, I am not speaking in the name of the GCC community but I would like
to prevent your frustration. You exposed your point clearly. People that have a
deep knowledge of C++ and g++ don't agree with you. Repeating your point again
is not doing any good. 

You may go to [EMAIL PROTECTED] and expose your point to a broader audience. I
think this is going to be unsuccessful for a fundamental and a practical
reason. The fundamental reason is that the standard doesn't call this an error.
And GCC implements that C++ standard. It is the same case as with uninitialized
variables. 

The practical reason is that converting a warning into an error is trivial (or
viceversa) but implementing the warning/error in the first place is not. So
people are going to say "Come back when it is implemented and we will discuss
then whether it should be a warning or an error".


-- 


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



[Bug target/31679] Incorrect result of multiplication long long by 0xFFFFFFFFLL constant.

2007-05-16 Thread ian dot rogers at manchester dot ac dot uk


--- Comment #5 from ian dot rogers at manchester dot ac dot uk  2007-05-16 
14:01 ---
For the following code given in [1] GCC produces identical multiplication by
constant code [2]. I think as 0x0 is one of the parameters in this bug
the fact we generate identical multiplication code for 0x1 means this
is another example of this error.

Thanks,
Ian Rogers

[1]
test.c:
extern long long x;
long long foo() {
   return x * long long)0) << 32) + -1);
}
long long foo2() {
   return x * long long)1) << 32) + -1);
}

[2]
test.s:
.file   "test.c"
.text
.p2align 4,,15
.globl foo
.type   foo, @function
foo:
movlx, %eax
movlx+4, %edx
pushl   %ebp
movl%esp, %ebp
negl%eax
popl%ebp
adcl$0, %edx
negl%edx
ret
.size   foo, .-foo
.p2align 4,,15
.globl foo2
.type   foo2, @function
foo2:
movlx, %eax
movlx+4, %edx
pushl   %ebp
movl%esp, %ebp
negl%eax
popl%ebp
adcl$0, %edx
negl%edx
ret
.size   foo2, .-foo2
.ident  "GCC: (GNU) 4.1.2 20061115 (prerelease) (SUSE Linux)"
.section.note.GNU-stack,"",@progbits 


-- 


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



[Bug c++/31951] New: local structure problem

2007-05-16 Thread ndbecker2 at gmail dot com
2nd call to partial_sort gives 'no match...' error, but 1st is OK.
Doesn't seem right.

#include 
#include 

template
 struct Sort_Func2  {
  vector_t const& mag;
  Sort_Func2 (vector_t const& _mag) : mag (_mag) {}
  bool operator() (int a, int b) const { return mag [a] < mag [b]; }
};

template
void F (vector_t const& v) {
  struct Sort_Func {
vector_t const& mag;
Sort_Func (vector_t const& _mag) : mag (_mag) {}
bool operator() (int a, int b) const { return mag [a] < mag [b]; }
  };

  std::vector indexes (v.size());
  std::partial_sort (indexes.begin(), indexes.begin()+2, indexes.end(),
Sort_Func2 (v));
  std::partial_sort (indexes.begin(), indexes.begin()+2, indexes.end(),
Sort_Func (v));
}

int main() {
  std::vector v;
  F (v);
}


-- 
   Summary: local structure problem
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ndbecker2 at gmail dot com


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



[Bug c++/31950] ICE in tree-ssa-alias-warnings.c

2007-05-16 Thread Ralf dot Wildenhues at gmx dot de


--- Comment #1 from Ralf dot Wildenhues at gmx dot de  2007-05-16 13:35 
---
Reduced test case.  Both tests also fail with current mainline (revision
124767M).

struct B {
  ~B();
};

struct A {
  B* b;
  virtual ~A() { delete[] b; }
};

A Op(void);

int main()
{
  A a(Op());
  return 0;
}


-- 

Ralf dot Wildenhues at gmx dot de changed:

   What|Removed |Added

 CC||Ralf dot Wildenhues at gmx
   ||dot de


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



[Bug c++/31950] New: ICE in tree-ssa-alias-warnings.c

2007-05-16 Thread Ralf dot Wildenhues at gmx dot de
With mainline as of a couple of days ago:
| gcc version 4.3.0 20070514 (experimental)

g++ -O2 -Wstrict-aliasing=3 -c t.cc

gives me this error:
| t.cc: In function ‘int main()’:
| t.cc:11: internal compiler error: tree check: expected tree that contains
‘decl common’ structure, have ‘struct_field_tag’ in ffan_walker, at
tree-ssa-alias-warnings.c:638

on the following code.  I haven't tried eliminating  yet,
but may try to do so, given time.  Will try updated mainline next.

Cheers,
Ralf

#include 
using std::valarray;

struct A {
  valarray* v;
  virtual ~A() { delete[] v; }
};

A Op(void);

int main()
{
  A a(Op());
  return 0;
}


-- 
   Summary: ICE in tree-ssa-alias-warnings.c
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Ralf dot Wildenhues at gmx dot de
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #71 from rguenth at gcc dot gnu dot org  2007-05-16 13:05 
---
But it doesn't fix the POOMA miscompilations if I change its Pool allocator to
use placement new instead of this

  // Release a block to the pool.
  inline void free(void *b)
{
  // Record a free.
  outstandingAllocs_m -= 1;

  // Cast the pointer to the right type.
  Link *p = (Link*)b;

  // Make it point to the current head of the free list.
  p->next_m = head_m;

  // Make the next one the new head of the list.
  // We can't do head_m = p->next_m since p will soon be treated
  // as something other than a Link.  By doing this assignment
  // with memcpy, we ensure that p->next_m will be read before
  // it is clobbered.
  memcpy(&p->next_m, &head_m, sizeof(head_m));

  // Make it the head of the free list.
  head_m = p;
}

memcpy hack.  I'll try to investigate...


-- 


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



[Bug bootstrap/26998] [4.1 Regression] bootstrap failure building libdecnumber, ICE in compare_values, tree-vrp.c:432

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


--- Comment #19 from rguenth at gcc dot gnu dot org  2007-05-16 13:02 
---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
  Known to fail||4.1.0 4.1.2
 Resolution||FIXED


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



[Bug bootstrap/26998] [4.1 Regression] bootstrap failure building libdecnumber, ICE in compare_values, tree-vrp.c:432

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


--- Comment #18 from rguenth at gcc dot gnu dot org  2007-05-16 12:57 
---
Subject: Bug 26998

Author: rguenth
Date: Wed May 16 11:57:09 2007
New Revision: 124767

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=124767
Log:
2007-05-16  Richard Guenther  <[EMAIL PROTECTED]>

Backport from mainline:
2006-06-09  Richard Guenther  <[EMAIL PROTECTED]>

PR tree-optimization/26998
* tree-vrp.c (extract_range_from_unary_expr): For NEGATE_EXPR
of signed types, only TYPE_MIN_VALUE is special, but for both,
minimum and maximum value.  Likewise VR_ANTI_RANGE is special
in this case, as is -fwrapv.

* gcc.dg/torture/pr26998.c: New testcase.
* gcc.dg/tree-ssa/vrp29.c: New testcase.

Added:
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/torture/pr26998.c
  - copied unchanged from r114507,
trunk/gcc/testsuite/gcc.dg/torture/pr26998.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/tree-ssa/vrp29.c
  - copied unchanged from r114507,
trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp29.c
Modified:
branches/gcc-4_1-branch/gcc/ChangeLog
branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
branches/gcc-4_1-branch/gcc/tree-vrp.c


-- 


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



[Bug c/31949] New: SH- Aliasing problem for incompatible pointers in c code

2007-05-16 Thread Ashay dot Jaiswal at kpitcummins dot com
Hello all,

I have successfully built SH4-Linux toolchain based on  
(binutils-2.17, gcc-4.2-20061205, glibc-2.5) for Renesas SH target. 

I am facing problem while executing the following C program.

 -- 
 #include 

 struct structB { int x; int y; };
 struct structC { int x; int y; };

 main()
 {
   struct structC varCs, *varCp=&varCs, **varCpp=&varCp;
   struct structB *varBp;

   varCs.x = 10;
   varCs.y = 20;
   varBp = *((struct structB **)varCpp);
   varBp->x = varBp->y;
   printf("%d",varCs.x);
 }

 -- 

The above program compiles successfully with the sh4-linux toolchain.   
While executing on target platform it is generating wrong result.

Observations:

1. When the above program is compiled with '-O0' optimization the value of
   varCs.x is printed as 20, which is the expected output.
   Command: sh4-linux-gcc 

2. When the above program is compiled with '-O2' optimization the program is 
   giving following errors:
   a) "Bus error" when executed on SH7780 Highlander board.
   b) "Killing process due to unaligned access in user space" when executed on 
   SH7751 R2D board.
   Command: sh4-linux-gcc -O2 

3. When the above program is compiled with '-O2' and '-fno-strict-aliasing' 
   option the value of varCs.x is printed as 20.
   Command: sh4-linux-gcc -O2 -fno-strict-aliasing 

Is the above problem related to strict aliasing ? As with 'fno-strict-aliasing'
option the above code works fine.


Any help on this will be appreciated.

Regards,   
Ashay Jaiswal   
KPIT Cummins Infosystems Ltd, 
Pune (INDIA) 

~~  
Free download of GNU based SH-Linux toolchains for Renesas' SH Series.  
The following site also offers free technical support to its users. 
Visit http://www.kpitgnutools.com for details.
Latest versions of KPIT GNU SH-Linux tools were released on April 5, 2007.  
~


-- 
   Summary: SH- Aliasing problem for incompatible pointers in c code
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Ashay dot Jaiswal at kpitcummins dot com
 GCC build triplet: i686-pc-gnu
  GCC host triplet: sh4-unknown-linux
GCC target triplet: sh4-unknown-linux


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



[Bug c++/31948] New: SH- Mathematical Error handling is no working for valid code

2007-05-16 Thread Ashay dot Jaiswal at kpitcummins dot com
Hello all,

I have successfully built SH4-Linux toolchain based on  
(binutils-2.17, gcc-4.2-20061205, glibc-2.5) for Renesas SH target. 

I am facing problem while executing the following C++ program.  

 -- 
 #include 
 #include 
 #include 

 double  value;

 int main( void )
 {
 value = sqrt(-1.2);
 if (errno != EDOM) {
 printf("sqrt: GOT %f\n", value);
 }
 }

 -- 

The above program compiles successfully with the sh4-linux toolchain.   
While executing on target platform "sqrt" function is returning "nan" but 
"errno" variable is not set to "EDOM".
Command: sh4-linux-gcc  {here default target is m4}

Observations:

1. When the above program is compiled with "-m4-nofpu" target option  or with
   any other FPU less target option program executes successfully and the 
   "errno" variable is set to "EDOM".
   Command: sh4-linux-gcc -m4-nofpu 

Is there any relation with the target processor (i.e. floating point unit
processor or non - floating point unit processor)?  Because the only difference
between success and failure condition in our case is the target switch we are
specifying (m4-nofpu or m4 respectively ).

Any help on this will be appreciated.

Regards,   
Ashay Jaiswal   
KPIT Cummins Infosystems Ltd, 
Pune (INDIA) 

~~  
Free download of GNU based SH-Linux toolchains for Renesas' SH Series.  
The following site also offers free technical support to its users. 
Visit http://www.kpitgnutools.com for details.
Latest versions of KPIT GNU SH-Linux tools were released on April 5, 2007.  
~


-- 
   Summary: SH- Mathematical Error handling is no working for valid
code
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Ashay dot Jaiswal at kpitcummins dot com
 GCC build triplet: i686-pc-linux
  GCC host triplet: sh4-unknown-linux
GCC target triplet: sh4-unknown-linux


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



[Bug middle-end/31947] [4.2 Regression] ICE in calc_dfs_tree, at dominance.c:374

2007-05-16 Thread tbm at gcc dot gnu dot org


-- 

tbm at gcc dot gnu dot org changed:

   What|Removed |Added

  Component|tree-optimization   |middle-end
   Keywords||ice-on-valid-code
   Target Milestone|--- |4.2.1


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



[Bug tree-optimization/31947] [4.2 Regression] ICE in calc_dfs_tree, at dominance.c:374

2007-05-16 Thread tbm at cyrius dot com


--- Comment #2 from tbm at cyrius dot com  2007-05-16 11:29 ---
Note that the testcases from PR30509 work fine with 4.2, so this appears to
be a different bug.


-- 


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



[Bug tree-optimization/31947] [4.2 Regression] ICE in calc_dfs_tree, at dominance.c:374

2007-05-16 Thread tbm at cyrius dot com


--- Comment #1 from tbm at cyrius dot com  2007-05-16 11:26 ---
Created an attachment (id=13564)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13564&action=view)
testcase


-- 


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



[Bug tree-optimization/31947] New: [4.2 Regression] ICE in calc_dfs_tree, at dominance.c:374

2007-05-16 Thread tbm at cyrius dot com
I'm getting the following ICE with gcc 4.2.0 RC3.  It compiles fine
with gcc 4.1 and 4.3 20070515.

(sid)23889:[EMAIL PROTECTED]: ~] /usr/lib/gcc-snapshot/bin/g++ -c -O2
freehdl-vital_timing.cc
freehdl-vital_timing.cc: In function 'array_type delay(const
array_type&)':
freehdl-vital_timing.cc:38: internal compiler error: in calc_dfs_tree, at
dominance.c:374
Please submit a full bug report,
with preprocessed source if appropriate.
(sid)23890:[EMAIL PROTECTED]: ~] g++-4.1 -c -O2 freehdl-vital_timing.cc
(sid)23891:[EMAIL PROTECTED]: ~]


-- 
   Summary: [4.2 Regression] ICE in calc_dfs_tree, at
dominance.c:374
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com


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



[Bug rtl-optimization/31944] Endless loop while building a 64-bit 2.6.20 kernel

2007-05-16 Thread aurelien at aurel32 dot net


--- Comment #1 from aurelien at aurel32 dot net  2007-05-16 11:08 ---
The problem is also present in gcc HEAD (SVN from today) built as a
cross-compiler on x86_64-linux-gnu.


-- 


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



[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-16 Thread rguenth at gcc dot gnu dot org


--- Comment #70 from rguenth at gcc dot gnu dot org  2007-05-16 10:57 
---
The last patch looks good sofar.


-- 


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



[Bug c++/31941] [4.1/4.2/4.3 Regression] "confused by earlier errors" message without earlier error message

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


--- Comment #3 from rguenth at gcc dot gnu dot org  2007-05-16 10:23 ---
/home/tbm/src/digikam-0.9.1/./digikam/libs/widgets/metadata/iptcwidget.cpp:159:
error: request for member 'c_str' in '

?

so there seems to be an error.  Of course we probably ICE during error
reporting
which may confuse this matter ;)


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords||error-recovery, ice-on-
   ||invalid-code


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



[Bug bootstrap/26998] [4.1 Regression] bootstrap failure building libdecnumber, ICE in compare_values, tree-vrp.c:432

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


--- Comment #17 from rguenth at gcc dot gnu dot org  2007-05-16 10:20 
---
Reopen, because this happens on the 4.1 branch as well with -O2 -ftrapv

void f1(int);
void f2(int x)
{
if (x != -2147483647 - 1)
f1(-x);
}


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |
Summary|bootstrap failure building  |[4.1 Regression] bootstrap
   |libdecnumber, ICE in|failure building
   |compare_values, tree-   |libdecnumber, ICE in
   |vrp.c:432   |compare_values, tree-
   ||vrp.c:432
   Target Milestone|--- |4.1.3


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



[Bug tree-optimization/31940] [4.1 Regression] ICE with -O -ftrapv -ftree-vrp on negation after comparison to INT_MIN

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


--- Comment #1 from rguenth at gcc dot gnu dot org  2007-05-16 10:18 ---
Confirmed.  A regression with -O2 -ftrapv.

Program received signal SIGSEGV, Segmentation fault.
0x00830f6e in compare_values (val1=0x0, val2=0x2ac511f0e9f0)
at /space//rguenther/src/svn/gcc-4_1-branch/gcc/tree-vrp.c:435
435   gcc_assert (POINTER_TYPE_P (TREE_TYPE (val1))

we extract from unary

-xD.1609_3

with a value range

~[-INF, -2147483648]  EQUIVALENCES: { x_1 } (1 elements)

but of course,

  if (code == NEGATE_EXPR
  && !TYPE_UNSIGNED (TREE_TYPE (expr)))
{
  /* NEGATE_EXPR flips the range around.  */
  min = (vr0.max == TYPE_MAX_VALUE (TREE_TYPE (expr)) && !flag_wrapv)
 ? TYPE_MIN_VALUE (TREE_TYPE (expr))
 : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.max);

  max = (vr0.min == TYPE_MIN_VALUE (TREE_TYPE (expr)) && !flag_wrapv)
 ? TYPE_MAX_VALUE (TREE_TYPE (expr))
 : fold_unary_to_constant (code, TREE_TYPE (expr), vr0.min);
}

is bogus.  And this is a dup of PR26998.

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


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
   Keywords||ice-on-valid-code
  Known to fail||4.1.0 4.1.2
  Known to work||4.2.0
 Resolution||DUPLICATE
Summary|ICE with -O -ftrapv -ftree- |[4.1 Regression] ICE with -O
   |vrp on negation after   |-ftrapv -ftree-vrp on
   |comparison to INT_MIN   |negation after comparison to
   ||INT_MIN
   Target Milestone|--- |4.1.3


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



[Bug bootstrap/26998] bootstrap failure building libdecnumber, ICE in compare_values, tree-vrp.c:432

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


--- Comment #16 from rguenth at gcc dot gnu dot org  2007-05-16 10:18 
---
*** Bug 31940 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||truedfx at gentoo dot org


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



[Bug fortran/31930] bes[jy]n intrinsics do not follow definition of elemental functions

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


--- Comment #3 from pault at gcc dot gnu dot org  2007-05-16 09:50 ---
Over to you, Daniel - I was smiling when I mentioned using the time for
something else; there was no need to apologise.

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|pault at gcc dot gnu dot org|dfranke at gcc dot gnu dot
   ||org


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



[Bug tree-optimization/31946] New: missed vectorization due to too strict peeling-for-alignment policy

2007-05-16 Thread dorit at il dot ibm dot com
The vectorizer is too restricted in the way it decides by how many iterations
to peel a loop in order to align a certain memory reference in a loop. It
considers only the first (potentially) misaligned store it encounters in the
loop. For this reason the testcases vect-multitypes-1.c, vect-multitypes-4.c
and vect-iv-4.c don't get vectorized. For example (using Vector Size of 16
bytes), in vect-multitypes-1.c we have:

short sa[N], sb[N];
int ia[N], ib[N];  
for (i = 0; i < n; i++) {
  ia[i+3] = ib[i];
  sa[i+3] = sb[i];
}

The current peeling-for-alignment scheme will consider the 'ia[i+3]' access for
peeling, and therefore will examine the option of using a peeling factor =
(4-3)%4 = 1. This will not align the access 'sa[i+3]', for which we need to
peel 5 iterations. As a result the loop doesn't get vectorized (cause we
currently can't handle misaligned stores unless we align them by peeling).
However, if we had considered the 'sa[i+3]' access as well for peeling, we
would have examined the option of using a peeling factor = (8-3)%8 = 5, which
would align both accesses, and would allow us to vectorize the loop. So the
vectorizer needs to be extended to consider more peeling factors, and not just
one.


-- 
   Summary: missed vectorization due to too strict peeling-for-
alignment policy
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dorit at il dot ibm dot com


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



[Bug tree-optimization/31945] New: missing type vector conversions patterns on spu

2007-05-16 Thread dorit at il dot ibm dot com
Since the following patch:

2007-04-22  Uros Bizjak  <[EMAIL PROTECTED]>

PR tree-optimization/24659

GCC supports vectorization of float<-->double conversions. These can also be
modelled for the spu target by implementing the following patterns:
vec_pack_trunc_v2df
vec_unpacks_lo_v4sf
vec_unpacks_hi_v4sf

(also see PR24659)


-- 
   Summary: missing type vector conversions patterns on spu
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dorit at il dot ibm dot com
 GCC build triplet: spu
  GCC host triplet: spu
GCC target triplet: spu


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



[Bug fortran/31427] TRANSFER with mold kind /= lval kind: ICE on ia64, i686; no warning

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


--- Comment #11 from pault at gcc dot gnu dot org  2007-05-16 09:15 ---
Fixed on trunk

Paul and Brooks


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/31216] TRANSFER in CASE leads to ICE

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


--- Comment #3 from pault at gcc dot gnu dot org  2007-05-16 09:14 ---
Fixed on trunk

Paul and Brooks


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/31194] NaN transfer - internal compiler error: in gfc_conv_constant

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


--- Comment #4 from pault at gcc dot gnu dot org  2007-05-16 09:13 ---
Fixed on trunk

Paul and Brooks


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/30881] Select case of case(transfer(...)) wrongly rejected

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


--- Comment #6 from pault at gcc dot gnu dot org  2007-05-16 09:11 ---
Fixed on trunk

Paul and Brooks


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/18769] ICE in gfc_conv_array_initializer with array initialization with transfer

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


--- Comment #18 from pault at gcc dot gnu dot org  2007-05-16 09:10 ---
Fixed on trunk

Paul and Brooks


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c++/986] g++ misses warning for & on temporary

2007-05-16 Thread raf2 at msux dot cjb dot net


--- Comment #22 from raf2 at msux dot cjb dot net  2007-05-16 08:50 ---
Mmm... maybe I haven't explained correctly.

If you contract someone to build stairs and later he says: "As long as you
don't touch this step, everything's ok" you tell him some nasty things.

The users of our g++ programs, our boss, will tell us the same nasty things if
they know of equivalent features in our programs. 

That's the point of having the compiler stopping compilations when (for
example) it detects a reference to an object that has been destroyed. 

Unless someone has a useful employ ofhaving references to objects that have
been destroyed, that is why a sample is asked.


-- 


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