[Bug tree-optimization/28952] [4.2 regression] tree check: expected class 'expression', have 'exceptional' (ssa_name) in vectorizable_condition, at tree-vect-transform.c:2122

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


--- Comment #6 from pinskia at gcc dot gnu dot org  2006-09-06 06:07 ---
Subject: Bug 28952

Author: pinskia
Date: Wed Sep  6 06:06:55 2006
New Revision: 116716

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116716
Log:
2006-09-05  Andrew Pinski  [EMAIL PROTECTED]

PR tree-opt/28952
* tree-vect-transform.c (vectorizable_condition): Move the check
for the type after the check for simple condition.
2006-09-05  Andrew Pinski  [EMAIL PROTECTED]

PR tree-opt/28952
* gcc.dg/vect/pr28952.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/vect/pr28952.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-transform.c


-- 


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



[Bug tree-optimization/28952] [4.1 regression] tree check: expected class 'expression', have 'exceptional' (ssa_name) in vectorizable_condition, at tree-vect-transform.c:2122

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


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-09-06 06:08 ---
Fixed on the mainline, this is a latent bug on the 4.1 branch which was not
there in 4.0 so I will also apply it to the 4.1 branch after a week or so.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|[4.2 regression] tree check:|[4.1 regression] tree check:
   |expected class 'expression',|expected class 'expression',
   |have 'exceptional'  |have 'exceptional'
   |(ssa_name) in   |(ssa_name) in
   |vectorizable_condition, at  |vectorizable_condition, at
   |tree-vect-transform.c:2122  |tree-vect-transform.c:2122
   Target Milestone|4.2.0   |4.1.2


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



[Bug tree-optimization/28937] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309

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


--- Comment #10 from pinskia at gcc dot gnu dot org  2006-09-06 06:13 
---
Subject: Bug 28937

Author: pinskia
Date: Wed Sep  6 06:13:22 2006
New Revision: 116717

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116717
Log:
2006-09-05  Andrew Pinski  [EMAIL PROTECTED]

PR tree-opt/28937
* tree-flow.h (tree_ssa_unswitch_loops): Return unsigned int.
(canonicalize_induction_variables): Likewise.
(tree_unroll_loops_completely): Likewise.
(tree_ssa_prefetch_arrays): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Return
TODO_cleanup_cfg instead of directly calling
cleanup_tree_cfg_loop.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
Likewise.
(tree_unroll_loops_completely): Likewise.
(remove_empty_loops): Likewise.
* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Likewise.
* tree-ssa-loop.c (tree_ssa_loop_unswitch): Use the return value
of tree_ssa_unswitch_loops.
(tree_ssa_loop_ivcanon): Use the return value of
canonicalize_induction_variables.
(tree_ssa_empty_loop): Use the return value of
remove_empty_loops.
(tree_complete_unroll): Use the return value of
tree_unroll_loops_completely.
(tree_ssa_loop_prefetch): Use the return value of
tree_ssa_prefetch_arrays.
* passes.c (execute_todo): Before Cleanup CFG, set
updating_used_alone and after cleanup CFG, call
recalculate_used_alone.
2006-09-05  Andrew Pinski  [EMAIL PROTECTED]

PR tree-opt/28937
* g++.dg/opt/unroll2.C: New test.



Added:
trunk/gcc/testsuite/g++.dg/opt/unroll2.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/passes.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-flow.h
trunk/gcc/tree-ssa-loop-ivcanon.c
trunk/gcc/tree-ssa-loop-prefetch.c
trunk/gcc/tree-ssa-loop-unswitch.c
trunk/gcc/tree-ssa-loop.c


-- 


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



[Bug tree-optimization/28937] [4.2 regression] ICE in add_virtual_operand, at tree-ssa-operands.c:1309

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


--- Comment #11 from pinskia at gcc dot gnu dot org  2006-09-06 06:14 
---
Fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug target/28764] [4.2 Regression] libjava build failure on sh4

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


--- Comment #17 from pinskia at gcc dot gnu dot org  2006-09-06 06:14 
---
Fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug middle-end/28915] [4.2 regression] ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973

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


--- Comment #9 from pinskia at gcc dot gnu dot org  2006-09-06 06:30 ---
And here is a testcase which is reproducible without the vectorizer:
int t[4];

__attribute__((vector_size(16))) int f(void)
{
__attribute__((vector_size(16))) int t1 = {(int)t[0], (int)t[1], (int)t[2],
(int)t[3]};
  return t1;
}

That testcase above shows more problems than I actually want to touch right
now.

Here was my fix for the x86 crash (but it does not fix the powerpc-linux with
-maltivec crash):
Index: tree.c
===
--- tree.c  (revision 116689)
+++ tree.c  (working copy)
@@ -969,9 +969,11 @@ build_vector (tree type, tree vals)
   for (link = vals; link; link = TREE_CHAIN (link))
 {
   tree value = TREE_VALUE (link);
-
-  over1 |= TREE_OVERFLOW (value);
-  over2 |= TREE_CONSTANT_OVERFLOW (value);
+  if (CONSTANT_CLASS_P (value))
+   {
+ over1 |= TREE_OVERFLOW (value);
+ over2 |= TREE_CONSTANT_OVERFLOW (value);
+   }
 }

   TREE_OVERFLOW (v) = over1;
Index: expmed.c
===
--- expmed.c(revision 116689)
+++ expmed.c(working copy)
@@ -4945,6 +4945,9 @@ make_tree (tree type, rtx x)

   switch (GET_CODE (x))
 {
+case CONST:
+   return make_tree (type, XEXP (x, 0));
+
 case CONST_INT:
   {
HOST_WIDE_INT hi = 0;
@@ -4979,6 +4982,7 @@ make_tree (tree type, rtx x)
int i, units;
rtx elt;
tree t = NULL_TREE;
+   tree type1 = TREE_TYPE (type);

units = CONST_VECTOR_NUNITS (x);

@@ -4986,7 +4990,7 @@ make_tree (tree type, rtx x)
for (i = units - 1; i = 0; --i)
  {
elt = CONST_VECTOR_ELT (x, i);
-   t = tree_cons (NULL_TREE, make_tree (type, elt), t);
+   t = tree_cons (NULL_TREE, make_tree (type1, elt), t);
  }

return build_vector (type, t);
@@ -5044,6 +5048,14 @@ make_tree (tree type, rtx x)
  GET_CODE (x) == ZERO_EXTEND);
   return fold_convert (type, make_tree (t, XEXP (x, 0)));

+case SYMBOL_REF:
+  if (SYMBOL_REF_DECL (x))
+   {
+ tree pointer;
+ t = SYMBOL_REF_DECL (x);
+ pointer = build_pointer_type (TREE_TYPE (t));
+ return fold_convert (type, fold_build1 (ADDR_EXPR, pointer, t));
+   }
 default:
   t = build_decl (VAR_DECL, NULL_TREE, type);


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug middle-end/28915] [4.2 regression] ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973

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


--- Comment #10 from pinskia at gcc dot gnu dot org  2006-09-06 06:33 
---
Note I think the PPC-linux-gnu crash is actually caused by:

2006-06-20  Roger Sayle  [EMAIL PROTECTED]

* expr.c (expand_expr_real_1) VECTOR_CST: For vector constants with
integer modes, attempt to directly construct an integer constant.

But I have not checked but the backtrace is:


(gdb)
#8  0x085cda79 in copy_constant (exp=0xb7d40cd8) at ../../gcc/varasm.c:2742
2742ce-value = copy_constant (value);
(gdb)
#9  0x085ce18b in build_constant_desc (exp=0xb7d40cd8)
at ../../gcc/varasm.c:2815
2815  desc-value = copy_constant (exp);
(gdb)
#10 0x085ce4be in output_constant_def (exp=0xb7d40cd8, defer=1)
at ../../gcc/varasm.c:2885
2885  desc = build_constant_desc (exp);
(gdb)
#11 0x0834d3f4 in expand_expr_constant (exp=0xb7d40cd8, defer=1,
modifier=EXPAND_NORMAL) at ../../gcc/expr.c:6433
6433  mem = output_constant_def (exp, defer);
(gdb) up
#12 0x0835084f in expand_expr_real_1 (exp=0xb7d40cd8, target=0xb7d2b954,
tmode=V4SImode, modifier=EXPAND_NORMAL, alt_rtl=0xbf977bf8)
at ../../gcc/expr.c:7119
7119  rtx constructor = expand_expr_constant (exp, 1, modifier);
(gdb)
#13 0x0834df9d in expand_expr_real (exp=0xb7d40cd8, target=0xb7d2b954,
tmode=V4SImode, modifier=EXPAND_NORMAL, alt_rtl=0xbf977bf8)
at ../../gcc/expr.c:6706
6706  ret = expand_expr_real_1 (exp, target, tmode, modifier, alt_rtl);
(gdb)
#14 0x08340493 in store_expr (exp=0xb7d40cd8, target=0xb7d2b954,
call_param_p=0)
at ../../gcc/expr.c:4370
4370  temp = expand_expr_real (exp, target, GET_MODE (target),
(gdb)
#15 0x0833f7dc in expand_assignment (to=0xb7d37660, from=0xb7d40cd8)
at ../../gcc/expr.c:4249
4249  result = store_expr (from, to_rtx, 0);
(gdb)

And then we go into an infinite loop calling copy_constant on a decl.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||sayle at gcc dot gnu dot org
 GCC target triplet|x86-64-linux|


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



[Bug middle-end/28862] [4.0/4.1/4.2 Regression] attribute ((aligned)) ignored on vector variables

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


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-09-06 06:36 ---
(In reply to comment #2)
This problem is recorded in a different place, we ignore bigger alignment for
stack variables currently.  I don't have the number off hand either but I know
it has been filed.


-- 


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



[Bug middle-end/28862] [4.0/4.1/4.2 Regression] attribute ((aligned)) ignored on vector variables

2006-09-06 Thread thomas at reactsoft dot com


--- Comment #9 from thomas at reactsoft dot com  2006-09-06 06:46 ---
(In reply to comment #8)
 (In reply to comment #2)
 This problem is recorded in a different place, we ignore bigger alignment for
 stack variables currently.  I don't have the number off hand either but I know
 it has been filed.

Thanks. Before I posted the problem I already looked for the bug, this report
came very close (I believed) to what the problem could be. I'll see if I can
find the correct bug report.


-- 


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



[Bug middle-end/16660] attribute((aligned)) doesn't work for variables on the stack for greater than required alignement

2006-09-06 Thread thomas at reactsoft dot com


--- Comment #5 from thomas at reactsoft dot com  2006-09-06 07:14 ---
(In reply to comment #3)
 Actually this is just a missed diagnostic.  The compiler cannot align the 
 stack
 variables where the alignment is greater than stack alignment that the 
 compiler
 can give for the stack.

The least GCC could and should do then is warn about it...

If the code is not very complex, the alignment appears to work, though. But as
soon as the code becomes complex, GCC screwes the alignment and even
accesses variables that don't even exist (I'll go into detail later).

Basically code like this is affected (this is *NOT* a test case, I'm going to
post a test case as soon as I get it to work):

typedef struct _somestruct {
int a;
};

static void checkstruct (volatile struct _somestruct *palignedvar)
{
if ((size_t)palignedvar  0xF)
printf(structure misaligned!\n);
}

void somefunc(int a, int b, int c) {
__attribute__((aligned (16))) volatile struct _somestruct alignedvar;

while (1)
{
/* [other code] */
if (a) {
if (c) {
/* [other code] */
alignedvar.a = c;
checkstruct(alignedvar);
} else {
/* [other code] */
break;
}
} else {
if (b) {
/* [other code] */
alignedvar.a = a;
checkstruct(alignedvar);
} else {
if (c) {
break;
} else {
/* [other code] */
alignedvar.a = a;
checkstruct(alignedvar);
}
}
}
/* [other code] */
}
}

I analyzed the generated assembly code. GCC reserves an area big enough to hold
the structure plus padding, so it can align the structure dynamically at
runtime. It stores a pointer to the reserved area and a pointer to the
structure within the area. As long as the code is simple, GCC uses the pointer
to the structure to access the data. However, if the code is complex enough,
GCC mistakenly uses the pointer to the reserved area - which of course is
sometimes not properly aligned. As a result, also the data of the structure
members are read/write incorrectly.

the stack is organized like this (the order may not match as showed in this
abstracted example):

struct {
void *reserved_area; /* this is the pointer GCC sometimes accidently
grabs */
void *aligned_structure; /* this is the pointer GCC should always grab */

char reserved[sizeof(structure) + sizeof(padding)];
};

I encountered this bug with -O3, I don't know if GCC also generates broken code
without optimizations. I tried to create a simple test case that triggers the
problem, but I failed. I'm going to do that in the next few days.


-- 

thomas at reactsoft dot com changed:

   What|Removed |Added

 CC||thomas at reactsoft dot com


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



[Bug c++/18410] GCC does not warn about hidden methods

2006-09-06 Thread tvainika at gmail dot com


--- Comment #3 from tvainika at gmail dot com  2006-09-06 07:31 ---
This same bug still applies to 
  g++-4.0 (GCC) 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)
and
  g++-4.1 (GCC) 4.1.2 20060814 (prerelease) (Debian 4.1.1-11)


-- 

tvainika at gmail dot com changed:

   What|Removed |Added

 CC||tvainika at gmail dot com


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



[Bug middle-end/28958] Compiling vpnc with GCC 4.1 and anything other than -O0 causes failure to connect

2006-09-06 Thread william dot grant at ubuntu dot com dot au


--- Comment #9 from william dot grant at ubuntu dot com dot au  2006-09-06 
07:43 ---
I've changed both those references, and have attached a new package to the
Ubuntu bug report for the reporter to test. I'll report back with results that
the tester has.


-- 


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



[Bug fortran/28959] New: ICE on derived type with host association

2006-09-06 Thread sfilippone at uniroma2 dot it
THe attached code produces the ICE.
[EMAIL PROTECTED] TEMP]$ gfortran -v 
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/usr/local/gcc42
--enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.2.0 20060905 (experimental)
[EMAIL PROTECTED] TEMP]$ gfortran -c bug-fold.f90 
bug-fold.f90: In function 'inner_sub':
bug-fold.f90:54: internal compiler error: in fold_convert, at fold-const.c:2098
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://gcc.gnu.org/bugs.html for instructions.


-- 
   Summary: ICE on derived type with host association
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sfilippone at uniroma2 dot it
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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



[Bug fortran/28959] ICE on derived type with host association

2006-09-06 Thread sfilippone at uniroma2 dot it


--- Comment #1 from sfilippone at uniroma2 dot it  2006-09-06 09:45 ---
Created an attachment (id=12195)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12195action=view)
TEst case


-- 


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



[Bug fortran/28959] ICE on derived type with host association

2006-09-06 Thread sfilippone at uniroma2 dot it


--- Comment #2 from sfilippone at uniroma2 dot it  2006-09-06 10:00 ---
The patch proposed in http://gcc.gnu.org/ml/fortran/2006-09/msg00020.html seems
to work for me, both in the reduced test case and in my original applicatin
code.


-- 


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



[Bug c++/28960] New: optimized bug with ia32 sse

2006-09-06 Thread zengpan at goldhuman dot com
[EMAIL PROTECTED] tmp]# cat a.cpp
#include xmmintrin.h
#include stdio.h

__m128 mm;

void test ( const __m128 vm, float r )
{
mm = _mm_add_ps( mm, _mm_set_ps( 0.0f, r, r, r) );

float vm0, vm1, vm2;
_mm_store_ss( vm0, vm );
_mm_store_ss( vm1, _mm_shuffle_ps( vm, vm, 1 ) );
_mm_store_ss( vm2, _mm_shuffle_ps( vm, vm, 2 ) );
_mm_store_ss( vm2, _mm_shuffle_ps( vm, vm, 2 ) );
printf(In TEST: %f %f %f\n, vm0, vm1, vm2 );
}

int main()
{
__m128 vm = _mm_set_ps( 4.0f, 3.0f, 2.0f, 1.0f );

float vm0, vm1, vm2;
_mm_store_ss( vm0, vm );
_mm_store_ss( vm1, _mm_shuffle_ps( vm, vm, 1 ) );
_mm_store_ss( vm2, _mm_shuffle_ps( vm, vm, 2 ) );
printf(Before TEST: %f %f %f\n, vm0, vm1, vm2 );

test(vm, 0.5f);

_mm_store_ss( vm0, vm );
_mm_store_ss( vm1, _mm_shuffle_ps( vm, vm, 1 ) );
_mm_store_ss( vm2, _mm_shuffle_ps( vm, vm, 2 ) );
printf(After  TEST: %f %f %f\n, vm0, vm1, vm2 );
return 0;
}
[EMAIL PROTECTED] tmp]# g++ -Wall -O3 -msse a.cpp; ./a.out
Before TEST: 1.00 2.00 3.00
In TEST: nan nan nan
After  TEST: 1.00 2.00 3.00
[EMAIL PROTECTED] tmp]# g++ -Wall -O2 -msse a.cpp; ./a.out
Before TEST: 1.00 2.00 3.00
In TEST: nan nan nan
After  TEST: 1.00 2.00 3.00
[EMAIL PROTECTED] tmp]# g++ -Wall -O1 -msse a.cpp; ./a.out
Before TEST: 1.00 2.00 3.00
In TEST: nan nan nan
After  TEST: 1.00 2.00 3.00
[EMAIL PROTECTED] tmp]# g++ -Wall -O0 -msse a.cpp; ./a.out
Before TEST: 1.00 2.00 3.00
In TEST: 1.00 2.00 3.00
After  TEST: 1.00 2.00 3.00
[EMAIL PROTECTED] tmp]#
[EMAIL PROTECTED] tmp]# uname -a
Linux localhost.localdomain 2.6.17-1.2139_FC5smp #1 SMP Fri Jun 23 13:12:06 EDT
2006 i686 i686 i386 GNU/Linux
[EMAIL PROTECTED] tmp]# gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking
=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,obj-c++,java,
fortran,ada --enable-java-awt=gtk --disable-dssi
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic
--host=i386-redhat-linux
Thread model: posix
gcc version 4.1.1 20060525 (Red Hat 4.1.1-1)
[EMAIL PROTECTED] tmp]#

gcc3 is OK


-- 
   Summary: optimized bug with ia32 sse
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: zengpan at goldhuman dot com


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



[Bug target/28946] [4.0/4.1/4.2 Regression] assembler shifts set the flag ZF, no need to re-test to zero

2006-09-06 Thread uros at kss-loka dot si


--- Comment #9 from uros at kss-loka dot si  2006-09-06 11:33 ---
Patch at http://gcc.gnu.org/ml/gcc-patches/2006-09/msg00162.html implements
missing i386.md RTL patterns. This is i386 target-specific fix for this bug.

The patch was bootstrapped on i686-pc-linux-gnu and x86_64-pc-linux-gnu,
regtested for c,c++ and fortran.


-- 

uros at kss-loka dot si changed:

   What|Removed |Added

URL|http://gcc.gnu.org/ml/gcc-  |http://gcc.gnu.org/ml/gcc-
   |patches/2006-   |patches/2006-
   |09/msg00137.html|09/msg00162.html


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



[Bug libstdc++/28961] New: Macro definitions needed by gcc/gthr.h are missing from libstdc++ build

2006-09-06 Thread sethmoore at gmail dot com
When attempting to build an armeb-linux cross compiler on a RH Enterprise Linux
3.0 system, libstdc++ is not being built in a thread-safe manner.  Here is the
configure command line:

configure --cache-file=./config.cache --host=armeb-linux
--build=i686-pc-linux-gnu --enable-multilib --with-cross-host=i686-pc-linux-gnu
--prefix=snip --with-local-prefix=snip --with-headers=snip
--with-libs=snip --disable-nls --enable-threads=posix --enable-symvers=gnu
--enable-__cxa_atexit --enable-languages=c,c++ --enable-shared
--enable-long-long --with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi
--with-float=soft --with-gcc-version-trigger=snip
--program-transform-name=s,^,armeb-linux-,; 
--srcdir=../../../../gcc-3.4.3/libstdc++-v3 --with-target-subdir=armeb-linux


--enable-threads=posix is passed in, and looking at config.log, I see that it's
appearing to be honored correctly, since glibcxx_thread_h is being set to
gthr-posix.h.  When I go into the build target directory
(prefix/armeb-linux/libstdc++-v3/include/bits), I can see that gthr-default.h
is indeed copied from gthr-posix.h  Thus, it would appeard that gthr-default.h
is correct.  With that said, the real problem appears to be in the use of
gthr.h (which originates from
prefix/armeb-linux/libstdc++-v3/include/armeb-linus/bits/gthr.h, which is
copied from build source/gcc/gthr.h).

In gthr.h, there is a list of conditional includes:
/* Check first for thread specific defines.  */
#if _GLIBCXX__PTHREADS
#include bits/gthr-posix.h
#elif _GLIBCXX__DCE_THREADS
#include bits/gthr-dce.h
#elif _GLIBCXX__SOLARIS_THREADS
#include bits/gthr-solaris.h

/* Include GTHREAD_FILE if one is defined.  */
#elif defined(_GLIBCXX_HAVE_GTHR_DEFAULT)
#if __GXX_WEAK__
#ifndef _GLIBCXX_GTHREAD_USE_WEAK
#define _GLIBCXX_GTHREAD_USE_WEAK 1
#endif
#endif
#include bits/gthr-default.h

/* Fallback to single thread definitions.  */
#else
#include bits/gthr-single.h
#endif

I would expect, on my system, to either have -D_GLIBCXX__PTHREADS or
-D_GLIBCXX_HAVE_GTHR_DEFAULT.  I see neither.  I do see
_GLIBCXX_HAVE_GTHR_DEFAULT defined in c++config.h, though.  Unfortunately,
gthr.h does not include c++config.h, so it does now see that there is a
gthr-default.h header available to include.  The result is that files that
include gthr.h are not guaranteed to pull in the proper thread support
routines.  I first ran into this problem with the file atomicity.cc
(prefix/armeb-linux/libstdc++-v3/src/atomicity.cc).  This file contains a
couple of default atomic oparerations: __exchange_and_add and __atomic_add:

#include bits/atomicity.h
#include bits/concurrence.h

namespace __gnu_internal
{
  __glibcxx_mutex_define_initialized(atomic_mutex);
} // namespace __gnu_internal

namespace __gnu_cxx
{
  _Atomic_word
  __attribute__ ((__unused__))
  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
  {
__glibcxx_mutex_lock(__gnu_internal::atomic_mutex);
_Atomic_word __result;
__result = *__mem;
*__mem += __val;
__glibcxx_mutex_unlock(__gnu_internal::atomic_mutex);
return __result;
  }

  void
  __attribute__ ((__unused__))
  __atomic_add(volatile _Atomic_word* __mem, int __val)
  { __exchange_and_add(__mem, __val); }
} // namespace __gnu_cxx


The exchange and add routine is absurdly simple in that it creates a critical
section around the add to ensure that it's an atomic operation.  In theory, the
include of bits/concurrence.h should pull in the definitions of
__glibcxx_mutex_lock and __glibcxx_mutex_unlock.  This is unforutanately not
the case.  The file
prefix/armeb-linux/libstdc++-v3/include/bits/concurrence.h includes
bits/gthr.h.  But... c++config.h is not included anywhere.  Also, the compile
line for atomicity.cc does not have any of the necessary gthr.h macros defined,
either:

prefix/gcc/xgcc -shared-libgcc -Bprefix/gcc/ -nostdinc++
-Lprefix/armeb-linux/libstdc++-v3/src
-Lprefix/armeb-linux/libstdc++-v3/src/.libs
-Bprefix/armeb-linux/armeb-linux/bin/ -Bprefix/armeb-linux/armeb-linux/lib/
-isystem install dir/armeb-linux/armeb-linux/include -isystem install
dir/armeb-linux/armeb-linux/sys-include
-Iprefix/armeb-linux/libstdc++-v3/include/armeb-linux
-Iprefix/armeb-linux/libstdc++-v3/include -Isource
dir/libstdc++-v3/libsupc++ -O2 -g -O2 -g -O2 -D_GNU_SOURCE
-fno-implicit-templates -Wall -W -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-mcpu=arm9tdmi -c atomicity.cc -o atomicity.o

The result of this is that atomicity.o is built without any thread safety. 
This means that operations such as the reference count inrement and decrement
in std::string are not safe.

Thanks
-Seth Moore


-- 
   Summary: Macro definitions needed by gcc/gthr.h are missing from
libstdc++ build
   Product: gcc
   Version: 3.4.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org

[Bug libstdc++/28961] Macro definitions needed by gcc/gthr.h are missing from libstdc++ build

2006-09-06 Thread sethmoore at gmail dot com


--- Comment #1 from sethmoore at gmail dot com  2006-09-06 12:54 ---
Created an attachment (id=12196)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12196action=view)
Test case that exhibits unsafe exchange_and_add.

Using this test code, we are able to consistently create a heap corruption
problem that results from the string reference count becoming corrupted.


-- 


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



[Bug target/28960] optimized bug with ia32 sse

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|critical|normal
  Component|c++ |target


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



[Bug bootstrap/28326] [4.1 regression] profiledbootstrap will produce an ICE with -mtune=power3 -mcpu=power3 in BOOT_CFLAGS

2006-09-06 Thread markus at unixforces dot net


--- Comment #4 from markus at unixforces dot net  2006-09-06 13:02 ---
any news about this?


-- 


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



[Bug bootstrap/28962] New: [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de
cd /TMP/build-gcc-svn20060906-powerpc64

/TMP/gcc-svn20060906/configure --target=powerpc64-linux
--prefix=/usr/local/DIR/gcc-powerpc64-svn20060906 --enable-languages=c
--with-as=/usr/local/bin/powerpc64-linux-as
--with-ld=/usr/local/bin/powerpc64-linux-ld --disable-shared
--enable-threads=single --disable-multilib

make


results in:

--  snip  --

...
make[2]: Leaving directory `/TMP/build-gcc-svn20060906-powerpc64/gcc'
Checking multilib configuration for libmudflap...
mkdir -p -- powerpc64-linux/libmudflap
Configuring in powerpc64-linux/libmudflap
configure: creating cache ./config.cache
checking build system type... i686-pc-linux-gnu
checking host system type... powerpc64-unknown-linux-gnu
checking target system type... powerpc64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for powerpc64-linux-strip... powerpc64-linux-strip
checking for --enable-version-specific-runtime-libs... no
checking whether to enable maintainer-specific portions of Makefiles... no
checking for powerpc64-linux-gcc...
/TMP/build-gcc-svn20060906-powerpc64/./gcc/x
gcc -B/TMP/build-gcc-svn20060906-powerpc64/./gcc/
-B/usr/local/DIR/gcc-powerpc64
-svn20060906/powerpc64-linux/bin/
-B/usr/local/DIR/gcc-powerpc64-svn20060906/pow
erpc64-linux/lib/ -isystem
/usr/local/DIR/gcc-powerpc64-svn20060906/powerpc64-li
nux/include -isystem
/usr/local/DIR/gcc-powerpc64-svn20060906/powerpc64-linux/sy
s-include
checking for C compiler default output file name... configure: error: C
compiler
 cannot create executables
See `config.log' for more details.
make[1]: *** [configure-target-libmudflap] Error 1
make[1]: Leaving directory `/TMP/build-gcc-svn20060906-powerpc64'
make: *** [all] Error 2

--  snip  --


I can workaround this issue with --disable-libmudflap --disable-libssp.


-- 
   Summary: [4.0/4.1/4.2 regression] building a cross compiler with
--disable-multilib fails
   Product: gcc
   Version: 4.0.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bunk at stusta dot de
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: powerpc64-unknown-linux-gnu (and several others)


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



[Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de


--- Comment #1 from bunk at stusta dot de  2006-09-06 14:13 ---
Created an attachment (id=12197)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12197action=view)
configure log


-- 


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



[Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de


--- Comment #2 from bunk at stusta dot de  2006-09-06 14:13 ---
Created an attachment (id=12198)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12198action=view)
make log


-- 


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



[Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de


--- Comment #3 from bunk at stusta dot de  2006-09-06 14:15 ---
Created an attachment (id=12199)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12199action=view)
powerpc64-linux/libmudflap/config.log


-- 


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



[Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de


--- Comment #4 from bunk at stusta dot de  2006-09-06 14:19 ---
Note:
checking host system type... powerpc64-unknown-linux-gnu is obviously wrong



-- 


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



[Bug target/28960] [4.0/4.1 Regression] optimized bug with ia32 sse

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


--- Comment #1 from rguenth at gcc dot gnu dot org  2006-09-06 14:23 ---
Confirmed.  With -mfpmath=sse I get

Before TEST: 1.00 2.00 3.00
In TEST: nan 2.00 3.00
After  TEST: 1.00 2.00 3.00

with -mfpmath=sse,387

Before TEST: 1.00 2.00 3.00
In TEST: 1.00 2.00 nan
After  TEST: 1.00 2.00 3.00


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
 GCC target triplet||i?86-*-*
   Keywords||wrong-code
  Known to fail||4.0.3 4.1.1 4.1.2
  Known to work||3.4.6 4.2.0
   Last reconfirmed|-00-00 00:00:00 |2006-09-06 14:23:10
   date||
Summary|optimized bug with ia32 sse |[4.0/4.1 Regression]
   ||optimized bug with ia32 sse
   Target Milestone|--- |4.0.4


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



[Bug target/28946] [4.0/4.1/4.2 Regression] assembler shifts set the flag ZF, no need to re-test to zero

2006-09-06 Thread hjl at lucon dot org


--- Comment #10 from hjl at lucon dot org  2006-09-06 14:26 ---
The proposed patch will slow down Core and Core 2 by 70-100% in some testcases
due to partial flag register stall. I have a followup patch to implement
TARGET_PARTIAL_FLAG_REG_STALL.


-- 


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



[Bug objc/28963] New: Compiler crash caused by @class definition for superclass

2006-09-06 Thread richard dot hutchinson at asa dot co dot uk
gcc -v output:
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,f95,java,ada --disable-checking
--with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-java-awt=gtk
--disable-libjava-multilib --with-slibdir=/lib --with-system-zlib
--enable-shared --enable-__cxa_atexit --without-system-libunwind
--host=i586-suse-linux
Thread model: posix
gcc version 4.0.2 20050901 (prerelease) (SUSE Linux)


The following code produces a compiler seg fault:
==
@class aSuperClass;

@interface aClass : aSuperClass
{}

@end

@implementation aClass

@end
===
If the @class line is omitted then the compiler does not crash and an error
message is (correctly) printed about the undefined superclass.
Admittedly the code is wrong, but so is the crash!


-- 
   Summary: Compiler crash caused by @class definition for
superclass
   Product: gcc
   Version: 4.0.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: objc
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: richard dot hutchinson at asa dot co dot uk
 GCC build triplet: i586-suse-linux
  GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux


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



[Bug middle-end/28915] [4.2 regression] ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973

2006-09-06 Thread roger at eyesopen dot com


--- Comment #11 from roger at eyesopen dot com  2006-09-06 15:27 ---
Hmm, yep I guess it was caused my change, most probably this part of it:

* tree.c (build_constructor_single): Mark a CONSTRUCTOR as constant,
if all of its elements/components are constant.
(build_constructor_from_list): Likewise.

It looks like someplace is changing the contents of this CONSTRUCTOR to a
VAR_DECL t.0, but not reseting the TREE_CONSTANT flag.  Hence on PPC we
end up with a bogus constant constructor during RTL expansion!?
Scalar replacement perhaps??

Grr.  I'll investigate.  Sorry for the inconvenience.


-- 


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



[Bug middle-end/28915] [4.2 regression] ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973

2006-09-06 Thread roger at eyesopen dot com


--- Comment #12 from roger at eyesopen dot com  2006-09-06 15:36 ---
Here's the .102t.final_cleanup

;; Function f (f)

f ()
{
  int D.1524;
  int D.1522;
  int D.1520;
  int t.0;

bb 2:
  t.0 = (int) t;
  D.1520 = (int) t[1];
  D.1522 = (int) t[2];
  D.1524 = (int) t[3];
  return {t.0, D.1520, D.1522, D.1524};

}

The CONSTRUCTOR in the return incorrectly has the TREE_CONSTANT flag set.
So the problem is somewhere in tree-ssa.  One workaround/improvement might
be for out-of-ssa to reconstitute the constructor back to a constant.


-- 


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



[Bug middle-end/28964] New: partition_stack_vars uses unstable sort

2006-09-06 Thread amylaar at gcc dot gnu dot org
position_stack_vars sorts stack_vars_sorted in a manner that makes the order
of stack vars with equal size undefined, thus making the compiler output
host dependent.


-- 
   Summary: partition_stack_vars uses unstable sort
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: amylaar at gcc dot gnu dot org


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



[Bug rtl-optimization/28925] problem with zero_extract during gcse

2006-09-06 Thread ebotcazou at gcc dot gnu dot org


--- Comment #2 from ebotcazou at gcc dot gnu dot org  2006-09-06 16:04 
---
Confirmed according to the RTL logs.


-- 

ebotcazou at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ebotcazou at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-09-06 16:04:40
   date||


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



[Bug libgomp/28046] libgomp test pr27337.C fails intermittently

2006-09-06 Thread janis at gcc dot gnu dot org


--- Comment #1 from janis at gcc dot gnu dot org  2006-09-06 16:27 ---
This test still fails intermittently.  Would someone who understands OpenMP
directives please take a close look at the test to see if it's valid?  If not,
this seems like a serious problem.


-- 

janis at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dnovillo at gcc dot gnu dot
   ||org


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



Re: [Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread Andrew Pinski
On Wed, 2006-09-06 at 14:19 +, bunk at stusta dot de wrote:
 
 --- Comment #4 from bunk at stusta dot de  2006-09-06 14:19 ---
 Note:
 checking host system type... powerpc64-unknown-linux-gnu is obviously wrong

No it is not.

-- Pinski



[Bug bootstrap/28962] [4.0/4.1/4.2 regression] building a cross compiler with --disable-multilib fails

2006-09-06 Thread pinskia at physics dot uc dot edu


--- Comment #5 from pinskia at physics dot uc dot edu  2006-09-06 16:28 
---
Subject: Re:  [4.0/4.1/4.2 regression] building a
cross compiler with --disable-multilib fails

On Wed, 2006-09-06 at 14:19 +, bunk at stusta dot de wrote:
 
 --- Comment #4 from bunk at stusta dot de  2006-09-06 14:19 ---
 Note:
 checking host system type... powerpc64-unknown-linux-gnu is obviously wrong

No it is not.

-- Pinski


-- 


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



[Bug bootstrap/28962] building a cross compiler with --disable-multilib fails

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


--- Comment #6 from pinskia at gcc dot gnu dot org  2006-09-06 16:32 ---
/usr/local/DIR/gcc-powerpc64-svn20060906/powerpc64-linux/sys-include -O2 -g -O2
   conftest.c  5
/usr/local/bin/powerpc64-linux-ld: crt1.o: No such file: No such file or
directory
collect2: ld returned 1 exit status


That means you don't have binutils/glibc installed correctly.
And this is not a regression anyways.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to fail|4.0.3 4.1.1 4.2.0   |
  Known to work|3.4.6   |
Summary|[4.0/4.1/4.2 regression]|building a cross compiler
   |building a cross compiler   |with --disable-multilib
   |with --disable-multilib |fails
   |fails   |


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



[Bug c++/28718] Call to -lgcc added prior to user libraries

2006-09-06 Thread bjoern dot m dot haase at web dot de


--- Comment #6 from bjoern dot m dot haase at web dot de  2006-09-06 16:51 
---
To clear up the issues.

1.) libgcc provides a fp emulation based on compiled c functions that is to my
very best knowledge untested for avr and extremely inefficient.
2.) avr-libc provides fp emulation that is hand-tuned assembly and on a less
restrictive license than GPL. IIRC, the person who wrote them is no longer
active in the field.
3.) the functions supplied by avr-libc are as basic as single float add 3,
single float multiply 3, single float convert to integer 2 ...
4.) the hand-tuned assembly routines should really replace the libgcc ones, but
that's not easily feasible. Partly due to licensing issues (modified free bsd
for avr-libc), partly because it is very very difficult for us developers to
get code integrated into mainline gcc.
5.) the externally supplied functions in libm need the hand-tuned assembly
versions in order to operate properly and will failed with the untested libgcc
variants.
5.) There is only one single libc and libm implementation available for avr
that cooperates with gcc: avr-libc.

The suggestion of Joerg Wunsch is, thus, in line with the needs of gcc users
for the avr target.

Bjoern.


-- 


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



[Bug c++/26696] [4.0/4.1/4.2 Regression] ICE with statement forming unused static member function reference

2006-09-06 Thread jason at gcc dot gnu dot org


--- Comment #6 from jason at gcc dot gnu dot org  2006-09-06 17:06 ---
Subject: Bug 26696

Author: jason
Date: Wed Sep  6 17:06:00 2006
New Revision: 116724

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116724
Log:
PR c++/26696
* cvt.c (convert_to_void): Replace a subexpression with no side
effects with void_zero_node.
* tree.c (is_overloaded_fn): Look through COMPONENT_REF.
(get_first_fn): Ditto.
* decl.c (grokdeclarator): No need to look through COMPONENT_REF.

Added:
trunk/gcc/testsuite/g++.dg/warn/noeffect8.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cvt.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/tree.c
trunk/gcc/testsuite/g++.dg/other/component1.C


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #2 from pcarlini at suse dot de  2006-09-06 17:11 ---
I think this difference is ultimately due to the existenxce of a separate *_O0
version of tree_lower_complex, in tree-complex.c. Rth added it (as part of
fixing 20610), I believe the generic version is right (-0), and I'm hoping he
wants to have a look to this issue...


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 CC||rth at gcc dot gnu dot org,
   ||pcarlini at suse dot de


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #3 from pcarlini at suse dot de  2006-09-06 17:11 ---
I think we can confirm it.


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-09-06 17:11:56
   date||


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



[Bug rtl-optimization/28965] New: distribute_notes fails to change REG_DEAD into REG_UNUSED notes for global registers

2006-09-06 Thread amylaar at gcc dot gnu dot org
When placing a REG_DEAD note for a global register, distribute_notes no longer
checks if the register is set in the same insn.


-- 
   Summary: distribute_notes fails to change REG_DEAD into
REG_UNUSED notes for global registers
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: amylaar at gcc dot gnu dot org


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



[Bug rtl-optimization/28965] distribute_notes fails to change REG_DEAD into REG_UNUSED notes for global registers

2006-09-06 Thread amylaar at gcc dot gnu dot org


--- Comment #1 from amylaar at gcc dot gnu dot org  2006-09-06 17:18 ---
Created an attachment (id=12200)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12200action=view)
proposed patch


-- 


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



[Bug bootstrap/28962] building a cross compiler with --disable-multilib fails

2006-09-06 Thread bunk at stusta dot de


--- Comment #7 from bunk at stusta dot de  2006-09-06 17:22 ---
I don't have a glibc for this target.

But this might be where my problems are coming from:

I am able to compile gcc 4.1.1 for at about a dozen targets without having any
libc for these targets present. And the resulting compilers work fine for my
purposes (cross-compiling Linux kernels).

But the configure options I had to figure out for doing this seem to indicate
that this is a working but not documented setup.

It seems sending a bug report for part of this wasn't the right solution.

Is there a good reason why gcc can't officially support being built without a
libc by either figuring out that there's no libc itself or by offering some
kind of --i-do-not-have-a-libc option to configure?


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #4 from pcarlini at suse dot de  2006-09-06 18:43 ---
But this issue should be recategorized, is about lowering and optimization of
complex numbers, maybe Andrew can help about that?


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 CC||pinskia at physics dot uc
   ||dot edu


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



[Bug target/28966] New: -maltivec -m32 causes the stack to be saved and restored even though there is no need for it

2006-09-06 Thread pinskia at gcc dot gnu dot org
Testcase:
int f(void)
{
  return 0;
}
This produces with -maltivec -O2:
f:
stwu 1,-16(1)
li 3,0
addi 1,1,16
blr

With just -O2, we get:
f:
li 3,0
blr


-- 
   Summary: -maltivec -m32 causes the stack to be saved and restored
even though there is no need for it
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
GCC target triplet: powerpc-linux-gnu


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



[Bug c++/27371] [4.1/4.2 Regression] Does not warn about unused function result (__attribute__((warn_unused_result)))

2006-09-06 Thread jason at gcc dot gnu dot org


--- Comment #4 from jason at gcc dot gnu dot org  2006-09-06 18:47 ---
This is also complicated by PR 16269; we don't manage the lifetime of
temporaries, so we don't know whether an initialized temporary is used again.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

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


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-09-06 18:50 ---
There are most likely a couple of different issues here.  A front-end one with
(1.0+0.0i)*(-1) being expanded incorrectly, there is a bug about a case like
that too, see PR 24581.  There might even be a libstdc++ one too all depending
on how the complex class is implemented.  I have not looked into libstdc++ to
check yet.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pluto at agmk dot net


--- Comment #6 from pluto at agmk dot net  2006-09-06 19:18 ---
(In reply to comment #2)
 I think this difference is ultimately due to the existenxce of a separate *_O0
 version of tree_lower_complex, in tree-complex.c. Rth added it (as part of
 fixing 20610), I believe the generic version is right (-0), and I'm hoping
 he wants to have a look to this issue...

mathematically (x+yi)u = xu+yui.
we have x=1, y=0, u=-1, so the result is -1+(0*-1)i.
so, how c++ define the 0*-1 ?


-- 

pluto at agmk dot net changed:

   What|Removed |Added

 CC||pluto at agmk dot net


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #7 from pcarlini at suse dot de  2006-09-06 20:23 ---
Both the front-ends deal with 0 * -1 in the same way, the result is -0 (just
try). Anyway, the issue is crazy, a reduced pure C testcase (in principle
identical to what the complexdouble class does) behaves exactly the other way
'round about -O0 vs -O1:

#include stdio.h

int main()
{
  double __complex__ z;

  __real__ z = 1.0;
  __imag__ z = 0.0;

  z *= -1.0;

  printf(%e\n, __imag__(z));
}

I can't believe that both 0 and -0 are correct...


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

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


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-09-06 20:27 ---
(In reply to comment #7)
 Both the front-ends deal with 0 * -1 in the same way, the result is -0 (just
 try). Anyway, the issue is crazy, a reduced pure C testcase (in principle
 identical to what the complexdouble class does) behaves exactly the other 
 way
 'round about -O0 vs -O1:
This is PR 24581 after all then.


-- 


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



[Bug c++/16269] g++ doesn't reuse stack space

2006-09-06 Thread jason at gcc dot gnu dot org


--- Comment #3 from jason at gcc dot gnu dot org  2006-09-06 20:56 ---
This isn't only a problem in C++.  In this C testcase:

struct A
{
  int i[42];
};

struct A f();

int main()
{
  f();
  f();
  f();
}

we allocate 3 'struct A' temporaries.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #9 from pcarlini at suse dot de  2006-09-06 20:59 ---
(In reply to comment #8)
 This is PR 24581 after all then.

I don't know, I'm afraid there is even more to it :( 


-- 


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



[Bug middle-end/25505] [4.0/4.1/4.2 Regression] gcc uses way too much stack space for this code

2006-09-06 Thread jason at gcc dot gnu dot org


--- Comment #21 from jason at gcc dot gnu dot org  2006-09-06 21:39 ---
I expect that indeed, the test case Kenner mentioned as motivation for the call
to mark_temp_addr_taken doesn't need it any more because of gimplification. 
Any temporary that needs to live longer than a single gimple statement will be
represented in the gimple.  So as he said, we should be able to do away with a
lot of the temporary management code.


-- 


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



[Bug c++/28967] New: ld 4.1.1 runs EXTREMLY slow compared to 4.0

2006-09-06 Thread baisa at brad-aisa dot com
When I build our application on Fedora Core 5 using gcc/ld the main library of
our (quite large) application links in about 10s on an older 1.7GHz Pentium
4/Xeon system. When I build the same app on my new PCs that have gcc 4.1.1 on
them, compiling is much faster, but linking is appallingly slow, about 2:30 for
the same binary. Factoring 3x speed difference in hardware, this is around 18x
slower!!!

I have seen at least one other report of extremely slow linking:
http://www.gatago.com/gnu/g++/help/19351814.html

I looked at the suggestions above: 
1. this is local linking, on the local filesystem
2. I did top and ld is consuming 100% cpu throughout.

This happens on two separate modern PCs that have had Fedora 5 + yum update (to
gcc 4.1.1) done on them.

Any help in trying to diagnose this is welcome. Note that every other operation
I can think of on these PCs is very fast -- it is only this one operation, ld,
that is extremely slow.


-- 
   Summary: ld 4.1.1 runs EXTREMLY slow compared to 4.0
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: baisa at brad-aisa dot com
 GCC build triplet: i386-redhat-linux
  GCC host triplet: i386-redhat-linux
GCC target triplet: i386-redhat-linux


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



[Bug c++/28967] ld 4.1.1 runs EXTREMLY slow compared to 4.0

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-06 22:26 ---
Can you give the output of ld --version on both machines.  GCC does not
really control ld but another project, binutils, does.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug middle-end/28967] ld 4.1.1 runs EXTREMLY slow compared to 4.0

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-06 22:26 ---
Also you should have reported this to Redhat first since it was their versions
of gcc/binutils you are using.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Component|c++ |middle-end


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



[Bug target/28968] New: gcc/config/i386/winnt-stubs.c is not linked in - build fails

2006-09-06 Thread mkoeppe at gmx dot de
When configuring gcc-{4.1.0,4.1.1} as

$ CC=gcc-4.1 ../gcc-4.1.1/configure --target=i586-pc-interix3 \
--enable-languages=c \
--enable-threads=no \
--with-stabs \
--enable-nls \
--disable-shared \
--disable-libssp \
--with-gnu-as \
--with-gnu-ld

the subsequent

$ make

fails with the following linker error:

gcc/config/i386/winnt.c:
symbols i386_pe_type_dllexport_p and i386_pe_type_dllimport_p are undefined!

Modifying winnt.c to
#include winnt-stubs.c
works around the problem.


-- 
   Summary: gcc/config/i386/winnt-stubs.c is not linked in - build
fails
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mkoeppe at gmx dot de
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i586-pc-interix3


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



[Bug target/28968] gcc/config/i386/winnt-stubs.c is not linked in - build fails

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-06 23:08 ---
That is the incorrect fix.
The correct fix is to copy from t-cygming to t-interix:

winnt.o: $(srcdir)/config/i386/winnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
  $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \
  $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/i386/winnt.c

winnt-cxx.o: $(srcdir)/config/i386/winnt-cxx.c $(CONFIG_H) $(SYSTEM_H)
coretypes.h \
  $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \
  $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/i386/winnt-cxx.c


winnt-stubs.o: $(srcdir)/config/i386/winnt-stubs.c $(CONFIG_H) $(SYSTEM_H)
coretypes.h \
  $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \
  $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/i386/winnt-stubs.c


And also copy from mingw32's entry in config.gcc to interix3's entry:
extra_objs=winnt.o winnt-stubs.o
cxx_target_objs=winnt-cxx.o


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords||build


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



[Bug target/28968] gcc/config/i386/winnt-stubs.c is not linked in - build fails

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-09-06 23:08:38
   date||


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



[Bug target/28968] gcc/config/i386/winnt-stubs.c is not linked in - build fails

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-06 23:10 ---
And the other question is how did you get passed PR 15212?


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn||15212


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



[Bug target/28968] gcc/config/i386/winnt-stubs.c is not linked in - build fails

2006-09-06 Thread mkoeppe at gmx dot de


--- Comment #3 from mkoeppe at gmx dot de  2006-09-06 23:29 ---
(In reply to comment #2)
 And the other question is how did you get passed PR 15212?

Don't know if it's really related! I didn't encounter it, but I built a cross
compiler and used only make and not make bootstrap.


-- 


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



[Bug c++/28514] [4.2 Regression] libstdc++ vs. anonymous namespaces

2006-09-06 Thread jason at redhat dot com


--- Comment #10 from jason at redhat dot com  2006-09-07 00:14 ---
Subject: Re:  [4.2 Regression] libstdc++ vs. anonymous namespaces

bkoz at gcc dot gnu dot org wrote:
 This is precisely one reason why anonymous namespaces are useful. It provides 
 a
 very viceral way to sanity check an API. Make sure that the private parts
 really are private, say.

Yes, but there's a difference between private and internal.  This is 
especially problematic for templates; if you give template 
instantiations internal linkage, we can't share them between translation 
units anymore and you get code bloat.  Do you really want a copy of the 
list of primes from the hashtable policy code in each translation unit 
that uses it?

It seems to me that Rope_constants, _Private in tr1/random and the 
hashtable policy stuff were in special namespaces just to avoid name 
lookup pollution.  If you really want them also to be unique to each 
translation unit you could insert an anonymous namespace inside the 
preexisting namespace and not have to mess with name lookup at all.

I thought after my earlier comments you would put Rope_constants back, 
but now that I actually look at what you checked in I see that you just 
added explicit global scope to the uses.  That kind of cluttering up of 
the global namespace seems like a mistake to me; _Tag isn't a very 
unique name.  Changing _Private to an anonymous namespace has the same 
problem, except it's only cluttering up tr1 instead of the global 
namespace.  In both cases inserting an anonymous namespace inside the 
named namespace seems both better and less work.

 Please, let's leave rope out of it.

You reported a problem compiling rope, it's hard to respond without 
talking about rope.

 I think that there are good reasons to use anonymous namespaces in headers,
 even if you disagree with these designs personally.

Please elaborate.  Why do you want _Tag, _Select, X::primes, etc. to be 
unique to each translation unit?

Jason


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #10 from pcarlini at suse dot de  2006-09-07 00:44 ---
I'm re-reading the various floating-point standards and Annexes and I think
this issue may turn out to be a not-a-bug. Whether those standards make sense
it's another matter ;) So, what I'm reading: C99, F.8.2 says that 0 * x and 0.0
are equivalent, i.e., tranforming 0 * x to 0.0 is allowed (insofar x is not a
NaN, -0, or infinite). Therefore, it seems, the optimizers of a C / C++
compiler conforming to IEC 60559 (~ IEC 559) are allowed to do that replacement
at any moment and discard the info about the signedness of x. As submitter
maintains - correctly, in my opinion - when the same compiler implements
complex functions sensitive to the signedness of zero, like in C99, G, for
example, and supposedly compatible with the same IEC 60559, how that signedness
info is kept or moved around should be a serious concern... In general, I'm
under the impression, that signed zero has been invented to cope with specific
discontinuities of specific functions and to improve the consistency of
floating point computations involving infinities (interesting discussion, as
usual, in Goldberg, 2.2.3), not as something which in every case is kept
conceptually distinct from 0 during a computation: as a matter of fact, in such
standards 0 and -0 compare equal...


-- 


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



[Bug c++/28886] [4.1/4.2 regression] Template specialization with array rejected

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #12 from mmitchel at gcc dot gnu dot org  2006-09-07 01:04 
---
Subject: Bug 28886

Author: mmitchel
Date: Thu Sep  7 01:04:07 2006
New Revision: 116736

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116736
Log:
PR c++/28903
* pt.c (tsubst): Use fold_non_dependent_expr to fold array
dimensions.
PR c++/28886
* pt.c (unify): Avoid unnecessary calls to fold_build2 for array
dimensions.

Added:
trunk/gcc/testsuite/g++.dg/ext/vla3.C
trunk/gcc/testsuite/g++.dg/template/array16.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/28903] [4.2 Regression] Rejects VLA in template class's member with using

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #6 from mmitchel at gcc dot gnu dot org  2006-09-07 01:04 
---
Subject: Bug 28903

Author: mmitchel
Date: Thu Sep  7 01:04:07 2006
New Revision: 116736

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116736
Log:
PR c++/28903
* pt.c (tsubst): Use fold_non_dependent_expr to fold array
dimensions.
PR c++/28886
* pt.c (unify): Avoid unnecessary calls to fold_build2 for array
dimensions.

Added:
trunk/gcc/testsuite/g++.dg/ext/vla3.C
trunk/gcc/testsuite/g++.dg/template/array16.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/28903] [4.2 Regression] Rejects VLA in template class's member with using

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #7 from mmitchel at gcc dot gnu dot org  2006-09-07 01:09 
---
Fixed in 4.2.0.


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c++/28886] [4.1/4.2 regression] Template specialization with array rejected

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #13 from mmitchel at gcc dot gnu dot org  2006-09-07 01:10 
---
Fixed in 4.2.0.


-- 


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



[Bug target/26015] [4.1/4.2 Regression] ICE during bootstrap for vax architecture

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #7 from mmitchel at gcc dot gnu dot org  2006-09-07 01:12 
---
VAX is not a primary or secondary platform.


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P5


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



[Bug c++/27371] [4.1/4.2 Regression] Does not warn about unused function result (__attribute__((warn_unused_result)))

2006-09-06 Thread jason at gcc dot gnu dot org


--- Comment #5 from jason at gcc dot gnu dot org  2006-09-07 01:13 ---
Subject: Bug 27371

Author: jason
Date: Thu Sep  7 01:12:00 2006
New Revision: 116737

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116737
Log:
PR c++/27371
* tree-inline.c (copy_result_decl_to_var): New fn.
(declare_return_variable): Use it.  Call declare_inline_vars here.
(expand_call_inline): Not here.
* cp/cvt.c (convert_to_void): Strip useless TARGET_EXPR.
* cp/cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
* cp/tree.c (build_cplus_new): Set it.

Added:
trunk/gcc/testsuite/g++.dg/warn/unused-result1.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/cvt.c
trunk/gcc/cp/tree.c
trunk/gcc/tree-inline.c


-- 


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



[Bug target/26504] [4.1/4.2 Regression] compute_frame_pointer_to_cfa_displacement error for avr target with --with-dwarf2

2006-09-06 Thread mmitchel at gcc dot gnu dot org


--- Comment #13 from mmitchel at gcc dot gnu dot org  2006-09-07 01:13 
---
AVR is not a primary or secondary platform.


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P5


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



[Bug middle-end/27986] [4.0/4.1/4.2 Regression] jump to middle of loop on entry with using old version of an variable

2006-09-06 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


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



[Bug c/28504] [4.0/4.1/4.2 regression] ICE with variable sized array

2006-09-06 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


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



[Bug rtl-optimization/28940] [4.1/4.2 Regression] address selection does not work correctly

2006-09-06 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


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



[Bug target/28946] [4.0/4.1/4.2 Regression] assembler shifts set the flag ZF, no need to re-test to zero

2006-09-06 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread joseph at codesourcery dot com


--- Comment #11 from joseph at codesourcery dot com  2006-09-07 01:23 
---
Subject: Re:  What should be value of complexdouble(1.0,0.0)
 *= -1?

On Thu, 7 Sep 2006, pcarlini at suse dot de wrote:

 I'm re-reading the various floating-point standards and Annexes and I think
 this issue may turn out to be a not-a-bug. Whether those standards make sense
 it's another matter ;) So, what I'm reading: C99, F.8.2 says that 0 * x and 
 0.0
 are equivalent, i.e., tranforming 0 * x to 0.0 is allowed (insofar x is not a
 NaN, -0, or infinite). Therefore, it seems, the optimizers of a C / C++

F.8 is *illustrative* of transformations that are *not* permitted.  It 
doesn't permit anything.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #12 from pcarlini at suse dot de  2006-09-07 01:33 ---
(In reply to comment #11)
 F.8 is *illustrative* of transformations that are *not* permitted.  It 
 doesn't permit anything.

Where do you read that in F.8.2 ?!? I read:

0 * x - 0.0The expressions 0 * x and 0.0 are not equivalent if
x is NaN, infinite, or -0

Where do you read that in all the other cases (e.g., when x is a normal
number) 0 * x and 0.0 are not equivalent?!?


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #13 from pcarlini at suse dot de  2006-09-07 01:51 ---
And, by the way, it's also generally untrue that F8 is only illustrative of not
permitted transformations.  For example, a few lines above:

1 * x and x / 1 - x The expressions 1 * x, x / 1 and x are equivalent
 (on IEC 60559 machines, among others)

Also, there is a general statement about that in F.8/1.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread joseph at codesourcery dot com


--- Comment #14 from joseph at codesourcery dot com  2006-09-07 01:52 
---
Subject: Re:  What should be value of complexdouble(1.0,0.0)
 *= -1?

On Thu, 7 Sep 2006, pcarlini at suse dot de wrote:

  F.8 is *illustrative* of transformations that are *not* permitted.  It 
  doesn't permit anything.
 
 Where do you read that in F.8.2 ?!? I read:
 
 0 * x - 0.0The expressions 0 * x and 0.0 are not equivalent if
 x is NaN, infinite, or -0
 
 Where do you read that in all the other cases (e.g., when x is a normal
 number) 0 * x and 0.0 are not equivalent?!?

Those are *examples* of when they are not equivalent.  It so happens that 
they are not an exhaustive list of examples, since 0 * -finite is -0 as 
well.  As examples, they are informative not normative.  The examples are 
listed in F.8.2 as a warning to implementors of what not to do.  The 
normative requirements in F.3 apply regardless; F.8.2 gives some 
transformations that are not valid because implementing them would cause 
the implementation to fail to implement F.3.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread joseph at codesourcery dot com


--- Comment #15 from joseph at codesourcery dot com  2006-09-07 01:57 
---
Subject: Re:  What should be value of complexdouble(1.0,0.0)
 *= -1?

On Thu, 7 Sep 2006, pcarlini at suse dot de wrote:

 And, by the way, it's also generally untrue that F8 is only illustrative of 
 not
 permitted transformations.  For example, a few lines above:
 
 1 * x and x / 1 - x The expressions 1 * x, x / 1 and x are equivalent
  (on IEC 60559 machines, among others)

Such statements also are informative, not normative.  The normative 
requirements come from F.3 (the operations shall be the IEC 60559 
operations) and IEC 60559.  A transformation is permitted iff it conforms 
to the normative requirements under the as-if rule of 5.1.2.3.  F.8.2 
gives hints, but they are just hints; you can make a transformation iff 
you can show that it does not change the semantics required by 5.1.2.3, 
F.3 and the other normative requirements.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #16 from pcarlini at suse dot de  2006-09-07 02:04 ---
(In reply to comment #15)
 Such statements also are informative, not normative.  The normative 
 requirements come from F.3 (the operations shall be the IEC 60559 
 operations) and IEC 60559.

If you have IEC 60559 at hand, and it explicitely says, as normative, that 0 *
-finite = -0 then, I agree that this is a bug. However, I have yet to
understand why F.8.2, in particular the positive statements, can be considered
only illustrative, when the entire F is normative and there are no indications
of that.


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread bangerth at math dot tamu dot edu


--- Comment #17 from bangerth at math dot tamu dot edu  2006-09-07 02:29 
---
Subject: Re:  What should be value of complexdouble(1.0,0.0)
 *= -1?


 If you have IEC 60559 at hand, and it explicitely says, as normative, that 0 *
 -finite = -0 then, I agree that this is a bug. However, I have yet to
 understand why F.8.2, in particular the positive statements, can be considered
 only illustrative, when the entire F is normative and there are no indications
 of that.

It is true that Appendix F has normative in the section title, but
F.8 starts out with
  This section identifies code transformations that might subvert IEC
  60559-specified behavior, and others that do not.
I read that as this section is illustrative. I pretty much read F.8.2 as
a list of things to watch out for. The right hand side of the table
appears to me to be cases of where for example the transformation on the
left is not valid, but I don't think it is meant as an exhaustive list of
these cases.

W.

-
Wolfgang Bangerthemail:[EMAIL PROTECTED]
 www: http://www.math.tamu.edu/~bangerth/


-- 


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



[Bug c++/28408] What should be value of complexdouble(1.0,0.0) *= -1?

2006-09-06 Thread pcarlini at suse dot de


--- Comment #18 from pcarlini at suse dot de  2006-09-07 02:47 ---
(In reply to comment #17)
 It is true that Appendix F has normative in the section title, but
 F.8 starts out with

... in any case, the IEC 60559 entry in C99status reads Broken ;) ;)


-- 


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



[Bug testsuite/28969] New: FAIL: gcc.dg/nrv3.c scan-tree-dump-times return slot optimization 2

2006-09-06 Thread danglin at gcc dot gnu dot org
Executing on host: /home/dave/gnu/gcc-4.2/objdir/gcc/xgcc
-B/home/dave/gnu/gcc-4
.2/objdir/gcc/ /home/dave/gnu/gcc-4.2/gcc/gcc/testsuite/gcc.dg/nrv3.c   -O
-fdum
p-tree-optimized -fno-show-column -S  -o nrv3.s(timeout = 300)
PASS: gcc.dg/nrv3.c (test for excess errors)
FAIL: gcc.dg/nrv3.c scan-tree-dump-times return slot optimization 2


-- 
   Summary: FAIL: gcc.dg/nrv3.c scan-tree-dump-times return slot
optimization 2
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: hppa*-*-* (32-bit)
  GCC host triplet: hppa*-*-* (32-bit)
GCC target triplet: hppa*-*-* (32-bit)


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



[Bug middle-end/28862] [4.0/4.1/4.2 Regression] attribute ((aligned)) ignored on vector variables

2006-09-06 Thread patchapp at dberlin dot org


--- Comment #10 from patchapp at dberlin dot org  2006-09-07 03:30 ---
Subject: Bug number PR middle-end/28862

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


-- 


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



[Bug rtl-optimization/27883] [4.0/4.1/4.2 regression] in schedule_insns, at sched-rgn.c:3038 on mips

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


--- Comment #15 from pinskia at gcc dot gnu dot org  2006-09-07 04:24 
---
Subject: Bug 27883

Author: pinskia
Date: Thu Sep  7 04:24:24 2006
New Revision: 116739

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116739
Log:
2006-09-06  James E Wilson  [EMAIL PROTECTED]

PR rtl-opt/27883
* flow.c (update_life_info): If UPDATE_LIFE_LOCAL and PROP_DEATH_NOTES
then call count_or_remove_death_notes.

2006-09-06  Andrew Pinski  [EMAIL PROTECTED]

PR rtl-opt/27883
* g++.dg/opt/copysign-1.C: New test.


Added:
trunk/gcc/testsuite/g++.dg/opt/copysign-1.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/flow.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug rtl-optimization/27883] [4.0/4.1 regression] in schedule_insns, at sched-rgn.c:3038 on mips

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


--- Comment #16 from pinskia at gcc dot gnu dot org  2006-09-07 04:24 
---
Fixed at least on the mainline now.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to fail|4.0.0 4.1.0 4.2.0   |4.0.0 4.1.0
  Known to work|3.4.0   |3.4.0 4.2.0
Summary|[4.0/4.1/4.2 regression] in |[4.0/4.1 regression] in
   |schedule_insns, at sched-   |schedule_insns, at sched-
   |rgn.c:3038 on mips  |rgn.c:3038 on mips


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



[Bug middle-end/28970] New: Wrong code for simple loop test case

2006-09-06 Thread bergner at vnet dot ibm dot com
We generate bad code for the following test case using the latest 4.1 compiler.
 It compiles and runs fine using 4.2.  It also compiles and runs fine with my
3.3.3 system compiler.  I've tested this on both x86_64 and ppc64 systems, and
the test case fails for both when compiled as a 32-bit app and passes when
compiled as a 64-bit app.

#include stdio.h

int tar (int i)
{
  printf(expected = %d, actual = %d\n, 36863, i);
  return -1;
}

void bug(int q, int bcount)
{
  int j = 0;
  int outgo = 0;

  while(j != -1)
{
  outgo++;
  if (outgo  q-1)
outgo = q-1;
  j = tar (outgo*bcount);
}
}

int main(void)
{
  bug(5, 36863);
  return 0;
}

[EMAIL PROTECTED]:~ gcc-4.1.2 -O2 bug01.c
[EMAIL PROTECTED]:~ ./a.out
expected = 36863, actual = 184315


-- 
   Summary: Wrong code for simple loop test case
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bergner at vnet dot ibm dot com
 GCC build triplet: powerpc64-linux
  GCC host triplet: powerpc64-linux
GCC target triplet: powerpc64-linux


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



[Bug middle-end/28970] [4.1 Regression] Wrong code for simple loop test case

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-07 05:01 ---
Confirmed, this is a loop.c bug which is why it is not in 4.2.0 at all.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  GCC build triplet|powerpc64-linux |
   GCC host triplet|powerpc64-linux |
 GCC target triplet|powerpc64-linux |powerpc-linux, i686-linux-
   ||gnu
   Keywords||wrong-code
  Known to fail||4.1.0 4.1.1 4.1.2
  Known to work||4.0.0
   Last reconfirmed|-00-00 00:00:00 |2006-09-07 05:01:38
   date||
Summary|Wrong code for simple loop  |[4.1 Regression] Wrong code
   |test case   |for simple loop test case
   Target Milestone|--- |4.1.2


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



[Bug middle-end/28690] [4.2 Regression] Performace problem with indexed load/stores on powerpc

2006-09-06 Thread bergner at vnet dot ibm dot com


--- Comment #8 from bergner at vnet dot ibm dot com  2006-09-07 05:14 
---
Ok, this also passed regression tests on powerpc64-linux (32-bit and 64-bit
testsuite runs) for c, c++, fortran, objc, obj-c++ and java.

Does the attached patch look reasonable to everyone?


-- 


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



[Bug c/27702] the trampoline code of nested functions depends on executable stacks

2006-09-06 Thread hollis at penguinppc dot org


--- Comment #4 from hollis at penguinppc dot org  2006-09-07 05:22 ---
Andrew, could you elaborate on the FC5 kernel bug and the rules that are
always used?


-- 


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



Federal provincial funds available

2006-09-06 Thread shop123
gcc-bugs@gcc.gnu.org



CSDGIF.GIF
Description: Binary data