[Bug c++/28945] extracting the function pointer from a bound pointer to member function doesn't work.

2006-09-03 Thread pluto at agmk dot net


--- Comment #6 from pluto at agmk dot net  2006-09-04 06:33 ---
(In reply to comment #5)
> (In reply to comment #4)
> > (In reply to comment #3)
> > > > 
> > > 
> > > this is gnu c++ extension:
> > 
> > Yes but you are using the extension incorrectly anyways as you don't pass 
> > this
> > to the function.  Did you read that page?
> > 
> >  extern A a;
> >  extern int (A::*fp)();
> >  typedef int (*fptr)(A *);
> > 
> >  fptr p = (fptr)(a.*fp);
> > 
> > While you do:
> > pf f1 = (pf)( o->*pmf );
> > f1();
> > 
> > Really it should have been:
> > f1(o);
> 
> compiler reports an error now.
> test.cpp:18: error: too many arguments to function
> 
aaa, sorry. please ignore this.


-- 


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



[Bug c++/28945] extracting the function pointer from a bound pointer to member function doesn't work.

2006-09-03 Thread pluto at agmk dot net


--- Comment #5 from pluto at agmk dot net  2006-09-04 06:33 ---
(In reply to comment #4)
> (In reply to comment #3)
> > > 
> > 
> > this is gnu c++ extension:
> 
> Yes but you are using the extension incorrectly anyways as you don't pass this
> to the function.  Did you read that page?
> 
>  extern A a;
>  extern int (A::*fp)();
>  typedef int (*fptr)(A *);
> 
>  fptr p = (fptr)(a.*fp);
> 
> While you do:
> pf f1 = (pf)( o->*pmf );
> f1();
> 
> Really it should have been:
> f1(o);

compiler reports an error now.
test.cpp:18: error: too many arguments to function


-- 


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



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

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


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-09-04 06:13 ---
Ok, I have a more correct patch.


-- 


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



[Bug c++/28945] extracting the function pointer from a bound pointer to member function doesn't work.

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


--- Comment #4 from pinskia at gcc dot gnu dot org  2006-09-04 06:06 ---
(In reply to comment #3)
> > 
> 
> this is gnu c++ extension:

Yes but you are using the extension incorrectly anyways as you don't pass this
to the function.  Did you read that page?

 extern A a;
 extern int (A::*fp)();
 typedef int (*fptr)(A *);

 fptr p = (fptr)(a.*fp);

While you do:
pf f1 = (pf)( o->*pmf );
f1();

Really it should have been:
f1(o);


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c++/28945] extracting the function pointer from a bound pointer to member function doesn't work.

2006-09-03 Thread pluto at agmk dot net


--- Comment #3 from pluto at agmk dot net  2006-09-04 06:01 ---
(In reply to comment #2)
> t.cc: In function ‘void test(base*, void (base::*)())’:
> t.cc:19: error: converting from ‘void (base::)()’ to ‘void 
> (*)()’
> 
> Why do you think this is valid thing to do?
>
> There is no way to get a normal function pointer from a pointer to member
> function.
> 

this is gnu c++ extension:
http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Bound-member-functions.html#Bound-member-functions


-- 

pluto at agmk dot net changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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



[Bug libgomp/28926] FAIL: libgomp.c/ordered-1.c execution test

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


--- Comment #1 from uros at kss-loka dot si  2006-09-04 05:49 ---
The problem is that RH8.0 defines SYS_gettid and SYS_futex in headers although
futex syscall is not really supported in the kernel. The build process detects
this and issues a warning to configure with --disable-linux-futex, but still
defaults to use futex syscall.

Perhaps futex support detection logic in libgomp/configure.ac (around line 200)
should be reversed, so it would default to "don't use futex by default, but use
them if all tests pass".

Anyway, --disable-linux-futex works for me.


-- 


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



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

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


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-09-04 04:40 ---
Actually complete unrolling is not at fault but cleanup cfg.


-- 


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-03 Thread pinskia at gcc dot gnu dot org


--- Comment #6 from pinskia at gcc dot gnu dot org  2006-09-04 04:12 ---
(In reply to comment #5)
> Subject: Re:  [4.2 regression] ICE in add_virtual_operand, at
> tree-ssa-operands.c:1309
> 
> Why does loop change the SMT usage?

it is complete unrolling, we change the statements from a loop to something
like, where the constants are really folded (I am too lazy to fold it here):

  _buffer[64 - 8] = (unsigned char)lenInBits;
  _buffer[64 - 8+1] = (unsigned char)lenInBits;

> In addition, since there are times loop doesn't do anything, you
> should simply be returning PROP_smt_usage when it does do something,
> and nothing otherwise.

I will see if I can change unroller to return true if we did something.


-- 


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-03 Thread dberlin at dberlin dot org


--- Comment #5 from dberlin at gcc dot gnu dot org  2006-09-04 04:06 ---
Subject: Re:  [4.2 regression] ICE in add_virtual_operand, at
tree-ssa-operands.c:1309

Why does loop change the SMT usage?
In addition, since there are times loop doesn't do anything, you
should simply be returning PROP_smt_usage when it does do something,
and nothing otherwise.

On 4 Sep 2006 03:52:04 -, pinskia at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
>
>
> --- Comment #4 from pinskia at gcc dot gnu dot org  2006-09-04 03:52 
> ---
> Note the patch is:
> Index: tree-ssa-loop.c
> ===
> --- tree-ssa-loop.c (revision 116671)
> +++ tree-ssa-loop.c (working copy)
> @@ -405,9 +405,11 @@ struct tree_opt_pass pass_complete_unrol
>TV_COMPLETE_UNROLL,  /* tv_id */
>PROP_cfg | PROP_ssa, /* properties_required */
>0,   /* properties_provided */
> -  0,   /* properties_destroyed */
> +  PROP_smt_usage,  /* properties_destroyed */
>0,   /* todo_flags_start */
> -  TODO_dump_func | TODO_verify_loops,  /* todo_flags_finish */
> +  TODO_dump_func
> +| TODO_verify_loops
> +| PROP_smt_usage,  /* todo_flags_finish */
>0/* letter */
>  };
>
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28937
>
>


-- 


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



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

2006-09-03 Thread Daniel Berlin

Why does loop change the SMT usage?
In addition, since there are times loop doesn't do anything, you
should simply be returning PROP_smt_usage when it does do something,
and nothing otherwise.

On 4 Sep 2006 03:52:04 -, pinskia at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:



--- Comment #4 from pinskia at gcc dot gnu dot org  2006-09-04 03:52 ---
Note the patch is:
Index: tree-ssa-loop.c
===
--- tree-ssa-loop.c (revision 116671)
+++ tree-ssa-loop.c (working copy)
@@ -405,9 +405,11 @@ struct tree_opt_pass pass_complete_unrol
   TV_COMPLETE_UNROLL,  /* tv_id */
   PROP_cfg | PROP_ssa, /* properties_required */
   0,   /* properties_provided */
-  0,   /* properties_destroyed */
+  PROP_smt_usage,  /* properties_destroyed */
   0,   /* todo_flags_start */
-  TODO_dump_func | TODO_verify_loops,  /* todo_flags_finish */
+  TODO_dump_func
+| TODO_verify_loops
+| PROP_smt_usage,  /* todo_flags_finish */
   0/* letter */
 };


--


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-03 Thread pinskia at gcc dot gnu dot org


--- Comment #4 from pinskia at gcc dot gnu dot org  2006-09-04 03:52 ---
Note the patch is:
Index: tree-ssa-loop.c
===
--- tree-ssa-loop.c (revision 116671)
+++ tree-ssa-loop.c (working copy)
@@ -405,9 +405,11 @@ struct tree_opt_pass pass_complete_unrol
   TV_COMPLETE_UNROLL,  /* tv_id */
   PROP_cfg | PROP_ssa, /* properties_required */
   0,   /* properties_provided */
-  0,   /* properties_destroyed */
+  PROP_smt_usage,  /* properties_destroyed */
   0,   /* todo_flags_start */
-  TODO_dump_func | TODO_verify_loops,  /* todo_flags_finish */
+  TODO_dump_func
+| TODO_verify_loops
+| PROP_smt_usage,  /* todo_flags_finish */
   0/* letter */
 };


-- 


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-03 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-09-04 03:47 ---
I have the simple obvious fix for this bug.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



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

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


--- Comment #11 from pinskia at gcc dot gnu dot org  2006-09-04 03:02 
---
The fold is still needed.


-- 


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



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

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


--- Comment #10 from pinskia at gcc dot gnu dot org  2006-09-04 02:58 
---
What about this (which makes us not call fold unless we really need to):
Index: pt.c
===
--- pt.c(revision 116671)
+++ pt.c(working copy)
@@ -10631,10 +10631,15 @@ unify (tree tparms, tree targs, tree par
 not an integer constant.  */
  if (TREE_CODE (parm_max) == MINUS_EXPR)
{
- arg_max = fold_build2 (PLUS_EXPR,
-integer_type_node,
-arg_max,
-TREE_OPERAND (parm_max, 1));
+ if (TREE_CODE (arg_max) == MINUS_EXPR
+ && simple_cst_equal (TREE_OPERAND (arg_max, 1),
+  TREE_OPERAND (parm_max, 1)))
+   arg_max = TREE_OPERAND (arg_max, 0);
+ else
+   arg_max = fold_build2 (PLUS_EXPR,
+  integer_type_node,
+  arg_max,
+  TREE_OPERAND (parm_max, 1));
  parm_max = TREE_OPERAND (parm_max, 0);
}

Though I wonder if the fold is even needed.  I am testing a couple of testcase
and see if it is.


-- 


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-03 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-09-04 02:32 ---
The problem is here:
/* The array dimension behaves like a non-type template arg,
   in that we want to fold it as much as possible.  */
max = tsubst_template_arg (omax, args, complain, in_decl);
max = fold_decl_constant_value (max);

It actually does not behave like one if we the decl is inside a function so
that you can use VLAs.


-- 


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



[Bug c++/28945] extracting the function pointer from a bound pointer to member function doesn't work.

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-04 00:59 ---
t.cc: In function ‘void test(base*, void (base::*)())’:
t.cc:19: error: converting from ‘void (base::)()’ to ‘void (*)()’

Why do you think this is valid thing to do?

There is no way to get a normal function pointer from a pointer to member
function.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|other   |c++
 Resolution||INVALID


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



[Bug other/28945] extracting the function pointer from a bound pointer to member function doesn't work.

2006-09-03 Thread pluto at agmk dot net


--- Comment #1 from pluto at agmk dot net  2006-09-04 00:00 ---
as far as i can see the `this` pointer wasn't adjusted.


-- 


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



[Bug tree-optimization/28944] tree-dce incorrectly removes an assignment.

2006-09-03 Thread dberlin at dberlin dot org


--- Comment #2 from dberlin at gcc dot gnu dot org  2006-09-03 23:50 ---
Subject: Re:  New: tree-dce incorrectly removes an assignment.

> asm volatile
> (
> "push   %1  \n\t"
> "call   *%0 \n\t"
> "add$4, %%esp   \n\t"
> :
> : "r" ( &test ), "r" ( &x )
> );
asm statements are not allowed to alter control flow


-- 


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



Re: [Bug tree-optimization/28944] New: tree-dce incorrectly removes an assignment.

2006-09-03 Thread Daniel Berlin

asm volatile
(
"push   %1  \n\t"
"call   *%0 \n\t"
"add$4, %%esp   \n\t"
:
: "r" ( &test ), "r" ( &x )
);

asm statements are not allowed to alter control flow


[Bug other/28945] New: extracting the function pointer from a bound pointer to member function doesn't work.

2006-09-03 Thread pluto at agmk dot net
following testcase should work but it fails at least on ia32.

#include 
struct base
{
virtual ~base() { }
virtual void foo() = 0;
int val;
};
struct derived : public base
{
void foo()
{
std::printf( "foo(): this -> %p, val = %d\n",
(void*)this, val );
}
};
typedef void (* pf)();
void test( base* o, void (base::* pmf)() )
{
pf f1 = (pf)( o->*pmf );
f1();
}
int main()
{
derived object;
object.val = 7;
test( &object, &base::foo );
return 0;
};

$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O0 && ./a.out
foo(): this -> 0xf7cd2412, val = -2046820353
$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O1 && ./a.out
foo(): this -> 0xf7fbf6e0, val = -134501465
$ g++ test.cpp -Wall -Wno-pmf-conversions -m32 -O2 && ./a.out
foo(): this -> 0xceec, val = 7

$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O0 && ./a.out
foo(): this -> 0x7f8afe20, val = 7
$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O1 && ./a.out
foo(): this -> 0x7fe3af40, val = 7
$ g++ test.cpp -Wall -Wno-pmf-conversions -m64 -O2 && ./a.out
foo(): this -> 0x7fb443e0, val = 7


-- 
   Summary: extracting the function pointer from a bound pointer to
member function doesn't work.
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
GCC target triplet: ix86-linux


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



[Bug bootstrap/28472] -B$(build_tooldir)/bin/

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 21:05 ---
Hmm:
# Since gcc_tooldir does not exist at build-time, use -B$(build_tooldir)/bin/
build_tooldir = $(exec_prefix)/$(target_noncanonical)

Why do you think this wrong?  -B. is suppied first so this is not a bug, the
order of looking for files is the order at which the -B are supplied.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug middle-end/26942] Code generation bug -freorder-blocks-and-partition

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


--- Comment #4 from pinskia at gcc dot gnu dot org  2006-09-03 20:55 ---
(In reply to comment #3)
> Fixed in 4.1.2.
By:
2006-08-31  Roger Sayle  <[EMAIL PROTECTED]>

PR other/22313
* dwarf2out.c (add_fde_cfi): Use a set_loc if the current label is
NULL, otherwise use an advance_loc4 to adjust relative to the
current label.
(output_cfi) : Update the current label.
(dwarf2out_switch_text_section): Reset the current label to avoid
using advance_loc4 over section boundaries.


-- 


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



[Bug middle-end/26942] Code generation bug -freorder-blocks-and-partition

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


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-09-03 20:54 ---
Fixed in 4.1.2.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.2


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



[Bug middle-end/26196] optimize if(val>max) val=max;

2006-09-03 Thread snakebyte at gmx dot de


--- Comment #6 from snakebyte at gmx dot de  2006-09-03 20:53 ---
marked as wontfix since my benchmark is useless


-- 

snakebyte at gmx dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug target/26149] libgomp.c/ordered-2.c fails on x86-64-linux-gnu with -m32

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 20:50 ---
Still fails as of today:
http://gcc.gnu.org/ml/gcc-testresults/2006-09/msg00141.html


-- 

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-03 20:50:37
   date||


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



[Bug middle-end/26196] optimize if(val>max) val=max;

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


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-09-03 20:45 ---
(In reply to comment #4)
> wow, thats a fast reply. You got a pointer on how to warm the branch 
> prediction
> cache or is this all a no-issue an we can mark this as not a bug?
Yes by doing it in a loop.


-- 


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



[Bug tree-optimization/28944] tree-dce incorrectly removes an assignment.

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 20:39 ---
The inline-asm is incorrect as it does not tell the compiler it is going to use
the value inside the pointers, it should be changed to something like:
asm volatile
(
"push   %2  \n\t"
"call   *%1 \n\t"
"add$4, %%esp   \n\t"
:"+m"(x)"
: "r" ( &test ), "r" ( &x ),)
);


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/24010] [4.0/4.1/4.2 Regression] Duplicate C99 dot initializer warning missing

2006-09-03 Thread segher at kernel dot crashing dot org


--- Comment #3 from segher at kernel dot crashing dot org  2006-09-03 20:39 
---
The overwriting behaviour is required by 6.7.8/18 and 19.
A warning is certainly in order; long ago, GCC used to warn, and
bugs were caught because of that.  Not anymore...

I'll see if I can do a patch.


-- 


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



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread lindevel at gmx dot net


--- Comment #6 from lindevel at gmx dot net  2006-09-03 20:38 ---
Perhaps the message should then be "0 (int) is of incompatible type to
debug(...) (void)" or similar? At least it should be more clear about the fact
that the error is that both sides of the : need to be compatible (and are not).

I though about all kinds of other things, but not of an incompatibility,
because the error message tells me about void and throw expressions and not
about the specs for (?:).

Don't get me wrong, I don't want g++ to output a C++ beginners manual, but at
least it should be clear from an error message where the error is, otherwise
the message is useless.


-- 


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



[Bug tree-optimization/28944] New: tree-dce incorrectly removes an assignment.

2006-09-03 Thread pluto at agmk dot net
#ifdef __i386__
#include 
struct obj
{
void foo()
{
std::printf( "foo(): this -> %p, val = %d\n",
(void*)this, val );
}
int val;
};
void test( obj& o )
{
o.foo();
}
int main()
{
obj x;
x.val = 7;
asm volatile
(
"push   %1  \n\t"
"call   *%0 \n\t"
"add$4, %%esp   \n\t"
:
: "r" ( &test ), "r" ( &x )
);
return 0;
};
#endif

$ g++ test.cpp -m32 -Wall -O1 && ./a.out
foo(): this -> 0xc610, val = -135843852

$ g++ test.cpp -m32 -Wall -O1 -fno-tree-dce && ./a.out
foo(): this -> 0xcfd0, val = 7


-- 
   Summary: tree-dce incorrectly removes an assignment.
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
GCC target triplet: ix86-linux


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



[Bug target/23909] Incorrect code generated for SSE2 based xor routine when compiled with -O2 -fomit-frame-pointer

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


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-09-03 20:30 ---
  __asm__ __volatile__(
   "add %1,   %0\n"
   "movaps   0(%0),   %%xmm0\n"
   "movaps  16(%0),   %%xmm1\n"
   : : "r" (bptr[0]), "r" (offset));

This asm is wrong, it does not tell the compiler that it modifies memory or
even xmmm? registers.

Really you should be using SSE instrincs functions.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug preprocessor/28435] -MMD vs not found system header (included from a system header)

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 20:25 ---
This looks like the same bug as PR 22231.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn||22231


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



[Bug middle-end/21259] ICE on assigning the pointer to a array with __attribute__ aligned

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 20:19 ---
Fixed in 4.0.0, 3.4.x is no longer maitained.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.0.0


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



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

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


--- Comment #5 from pinskia at physics dot uc dot edu  2006-09-03 20:18 
---
Subject: Re:  Unusable error message when using a
conditional-expression with multiple type arguments

On Sun, 2006-09-03 at 20:08 +, lindevel at gmx dot net wrote:
> 
> --- Comment #4 from lindevel at gmx dot net  2006-09-03 20:08 ---
> You proved ##c++ wrong! They bet that I would be ignored. ;)
> 
> The thing is that a void itself is not invalid. Using (expr ? void : void)
> works as you see in my report.
> In ##c++ I was told that ( x ? y : z ) wants both y and z to be of the same
> type. And that is stated in no way by the error message.

void is valid if the both sides of the : are void, otherwise it is
invalid.  And they don't have to be the same type either, they can be
different as long as one is convertible to the other (like float and int
or two classes where one is a base class of the other).


-- Pinski


-- 


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



Re: [Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread Andrew Pinski
On Sun, 2006-09-03 at 20:08 +, lindevel at gmx dot net wrote:
> 
> --- Comment #4 from lindevel at gmx dot net  2006-09-03 20:08 ---
> You proved ##c++ wrong! They bet that I would be ignored. ;)
> 
> The thing is that a void itself is not invalid. Using (expr ? void : void)
> works as you see in my report.
> In ##c++ I was told that ( x ? y : z ) wants both y and z to be of the same
> type. And that is stated in no way by the error message.

void is valid if the both sides of the : are void, otherwise it is
invalid.  And they don't have to be the same type either, they can be
different as long as one is convertible to the other (like float and int
or two classes where one is a base class of the other).


-- Pinski



[Bug c/24010] [4.0/4.1/4.2 Regression] Duplicate C99 dot initializer warning missing

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 20:13 ---
The behavior was changed by:
http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01011.html

This is valid C99 but having a warning is nice.


-- 


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



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread lindevel at gmx dot net


--- Comment #4 from lindevel at gmx dot net  2006-09-03 20:08 ---
You proved ##c++ wrong! They bet that I would be ignored. ;)

The thing is that a void itself is not invalid. Using (expr ? void : void)
works as you see in my report.
In ##c++ I was told that ( x ? y : z ) wants both y and z to be of the same
type. And that is stated in no way by the error message.

And even if void would be invalid, the message doesn't tell me that. It just
tells me "Hey I found a void.", but not that a void is invalid in a (?:).
The connection to (?:) is not made. Instead it tells me something about a
throw-expression. That might be a good message when you want to understand the
internal code g++ uses to validate the expression, but for an end user it is
not good.

Perhaps we first should clear up what exactly the error is with that code. (I
still don't know from the error message and you tell me something different
than what I was told in ##c++. (Who also didn't know what that message could
mean until someone said that the types don't match and g++ might be telling me
how it found out.))


-- 


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



[Bug c/24010] [4.0/4.1/4.2 Regression] Duplicate C99 dot initializer warning missing

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 20:06 ---
Confirmed, a regression from 2.95.3 which gave:
t.c:8: field `a' already initialized


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|enhancement |normal
  Known to fail||3.0.4 4.0.0 4.1.0 4.2.0
  Known to work||2.95.3
Summary|Duplicate C99 dot   |[4.0/4.1/4.2 Regression]
   |initializer warning missing |Duplicate C99 dot
   ||initializer warning missing
   Target Milestone|--- |4.0.4


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



[Bug rtl-optimization/20728] Wrong evaluation order of expressions in combine_reloads() in reload.c

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 20:02 ---
Also do you have a testcase which hits the problem (and if you do, what
target)?


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug rtl-optimization/20728] Wrong evaluation order of expressions in combine_reloads() in reload.c

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 20:01 ---
reg_overlap_mentioned_for_reload_p checks for psedu registers:
  /* If this is a pseudo, it must not have been assigned a hard register.
 Therefore, it must either be in memory or be a constant.  */

  if (regno >= FIRST_PSEUDO_REGISTER)
{
  if (reg_equiv_memory_loc[regno])
return refers_to_mem_for_reload_p (in);
  gcc_assert (reg_equiv_constant[regno]);
  return 0;
}


So is this really an issue?


-- 


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



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

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


--- Comment #3 from pinskia at physics dot uc dot edu  2006-09-03 19:41 
---
Subject: Re:   New: Unusable error message when using a
conditional-expression with multiple type arguments

On Sun, 2006-09-03 at 19:35 +, lindevel at gmx dot net wrote:
> assert_testcase.cpp: In function ‘int main()’:
> assert_testcase.cpp:16: error: ‘debug(((const char*)"Some
> string"))’ has type ‘void’ and is not a
> throw-expression 

That says to me that the expression `debug("Some string")' has a type of
void (and is not a throw expression) which is invalid for ?: if the
other type is not void.  I don't see where the problem is.  A throw
expression is valid (here by the C++ standard) even though it has a
expression type of void.

-- Pinski


-- 


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



Re: [Bug c++/28943] New: Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread Andrew Pinski
On Sun, 2006-09-03 at 19:35 +, lindevel at gmx dot net wrote:
> assert_testcase.cpp: In function ‘int main()’:
> assert_testcase.cpp:16: error: ‘debug(((const char*)"Some
> string"))’ has type ‘void’ and is not a
> throw-expression 

That says to me that the expression `debug("Some string")' has a type of
void (and is not a throw expression) which is invalid for ?: if the
other type is not void.  I don't see where the problem is.  A throw
expression is valid (here by the C++ standard) even though it has a
expression type of void.

-- Pinski



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread lindevel at gmx dot net


--- Comment #2 from lindevel at gmx dot net  2006-09-03 19:36 ---
Created an attachment (id=12182)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12182&action=view)
Preprocessed testcase


-- 


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



[Bug c++/28943] Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread lindevel at gmx dot net


--- Comment #1 from lindevel at gmx dot net  2006-09-03 19:35 ---
Created an attachment (id=12181)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12181&action=view)
Testcase code


-- 


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



[Bug c++/28943] New: Unusable error message when using a conditional-expression with multiple type arguments

2006-09-03 Thread lindevel at gmx dot net
When I use a conditional-expression(?:) with arguments whose type is not
matching, g++ gives an error message not telling me exactly what the problem
is.


Commandline:

g++ assert_testcase.cpp


Output:

assert_testcase.cpp: In function ‘int main()’:
assert_testcase.cpp:16: error: ‘debug(((const char*)"Some
string"))’ has type ‘void’ and is not a throw-expression


For this code (assert_testcase.cpp):

#include 

void debug( const char * string )
{
printf( string );
}

int main()
{
( true == false ? 0 : debug( "Some string" ) );

return 0;
}


Changing ( true == false ? 0 : debug( "Some string" ) ) to ( true == false ?
(void)0 : debug( "Some string" ) ) silences the error message.

And that has been found out after about a week of own research in our project
and then asking in ##c++ on FreeNode, because no one had a clue what it could
mean. (And even ##c++ needed several hours to find that out.)
So I think that error message is unusable because it is not clear about what
exactly the problem is.
Better would be IMHO something like "0 is of different type than debug(...)".


Other info:

i686-pc-linux-gnu-g++ (GCC) 4.1.1 (Gentoo 4.1.1)


Preprocessed file (assert_testcase.ii) will be attached.

I can provide more information if you like.


-- 
   Summary: Unusable error message when using a conditional-
expression with multiple type arguments
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: lindevel at gmx dot net


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



[Bug c++/28942] [4.2 Regression] Dependent deconstrcutors

2006-09-03 Thread nathan at gcc dot gnu dot org


--- Comment #2 from nathan at gcc dot gnu dot org  2006-09-03 18:26 ---
I'll look at this tomorrow.  If I can't figure out a solution I'll revert 23287


-- 

nathan at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |nathan at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-09-03 17:45:33 |2006-09-03 18:26:32
   date||


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



[Bug c++/28942] [4.2 Regression] Dependent deconstrcutors

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 17:45 ---
Note this was from:
http://gcc.gnu.org/ml/gcc/2006-09/msg00048.html


-- 

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-03 17:45:33
   date||
   Target Milestone|--- |4.2.0


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



[Bug c++/28942] New: [4.2 Regression] Dependent deconstrcutors

2006-09-03 Thread pinskia at gcc dot gnu dot org
we just reject now but it is
valid code as far as I can tell:
template< class other>
  struct bin_search_tree_data_ 
{
  typedef typename other::node node;
  typedef node *node_pointer;
  ~bin_search_tree_data_()
  {
m_p_head->~node();
  }
  node_pointer m_p_head;
};
struct blowup
{
  typedef int node;
};
bin_search_tree_data_< blowup >  r;

-- Here is one that ICEs also and closer to
the original code:
template< class other>
  struct bin_search_tree_data_
{
  typedef typename other::node node;
  typedef node *node_pointer;
  ~bin_search_tree_data_()
  {
m_p_head->~node();
  }
  node_pointer m_p_head;
};
struct blowup2{};
struct blowup
{
  typedef blowup2 node;
};
bin_search_tree_data_< blowup >  r;
--
I am creating this after 15 hours of no activity on fixing the problem.


-- 
   Summary: [4.2 Regression] Dependent deconstrcutors
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code, rejects-valid
  Severity: blocker
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
OtherBugsDependingO 23287
 nThis:


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



[Bug c++/23287] [4.0/4.1/4.2 regression] Explicitly invoking destructor of template class in a template and is dependent

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|4.1.2   |4.2.0


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



[Bug tree-optimization/18687] [4.0/4.1/4.2 Regression] ~50% compile time regression

2006-09-03 Thread steven at gcc dot gnu dot org


--- Comment #35 from steven at gcc dot gnu dot org  2006-09-03 17:28 ---
Even if we did not hash SCEV data a lot, it would not buy you >50%.


-- 


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



[Bug tree-optimization/28900] [4.1/4.2 regression] ICE verify_stmts failed (invalid operand to unary operator)

2006-09-03 Thread patchapp at dberlin dot org


--- Comment #9 from patchapp at dberlin dot org  2006-09-03 14:35 ---
Subject: Bug number PR28900

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


-- 


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



[Bug bootstrap/28864] bootstrapping fails when building from non-/bin/sh-compatible shell

2006-09-03 Thread georg dot schwarz at freenet dot de


--- Comment #3 from georg dot schwarz at freenet dot de  2006-09-03 14:25 
---
Unfortunately gcc 4.X.X for MIPS now requires GNU binutils as. However this
triggers gcc bug #16253 on IRIX 5.3, so neither gcc 4.0.3 nor gcc 4.1.1
compiles on IRIX 5.3.


-- 

georg dot schwarz at freenet dot de changed:

   What|Removed |Added

 Status|WAITING |UNCONFIRMED


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



[Bug tree-optimization/28900] [4.1/4.2 regression] ICE verify_stmts failed (invalid operand to unary operator)

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


--- Comment #8 from pinskia at gcc dot gnu dot org  2006-09-03 14:24 ---
(In reply to comment #7)
> I have a patch.  The vectorizer oughts to use more of the infrastructure we
> have.
This has nothing to do with the vectorizer really, yes tree-ifcvt is only
enabled with -ftree-vectorize but it could be made even more generic.


-- 


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



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

2006-09-03 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2006-09-03 13:51 ---
> which ends up being "-1 < 4", so we swap the operands.  For powerpc, we'd
> prefer the base pointer remain the first operand for performance reasons. I'd
> like other people familar with this code to comment on how we can fix this. 
> One could simply bump up the priority of base pointers (ie, "case RTX_OBJ:"),
> but I personally don't know how that would affect other platforms.

Very much.  The canonical form enforced by swap_commutative_operands_p is
relied upon by all the code for simplifications, that expects for example a
(plus (mult A B) C) and not a (plus C (mult A B)).

If one took care to fix all of them, it could work, but it's no easy feat. :-(

I think the best solution (if it works) is to put this transformation in
rs6000's legitimize_address. Given a (plus (mult A B) C), force the mult into a
pseudo (let's call it D) and then return (plus C D) with the operands swapped.


-- 


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



[Bug tree-optimization/18687] [4.0/4.1/4.2 Regression] ~50% compile time regression

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


--- Comment #34 from rguenth at gcc dot gnu dot org  2006-09-03 13:22 
---
FYI, the profile (-O2) looks like

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self  self total
 time   seconds   secondscalls   s/call   s/call  name
  2.04  0.62 0.62  5210670 0.00 0.00  htab_find_slot_with_hash
  2.01  1.23 0.61   135824 0.00 0.00  find_reloads
  1.78  1.77 0.54  1181450 0.00 0.00  constrain_operands
  1.71  2.29 0.52  1667653 0.00 0.00  walk_tree
  1.64  2.79 0.50   113076 0.00 0.00  record_reg_classes
  1.18  3.15 0.36  1374013 0.00 0.00  for_each_rtx_1
  1.15  3.50 0.35  2188275 0.00 0.00  iterative_hash_expr
  1.02  3.81 0.31 13803214 0.00 0.00  bitmap_bit_p
  0.99  4.11 0.30   146294 0.00 0.00 
reload_cse_simplify_operands
  0.92  4.39 0.28  8238693 0.00 0.00  bitmap_set_bit
  0.89  4.66 0.27 13524760 0.00 0.00  is_gimple_min_invariant
  0.85  4.92 0.26  1944894 0.00 0.00  extract_insn
  0.76  5.15 0.23  3242786 0.00 0.00  note_stores
  0.76  5.38 0.23  1848575 0.00 0.00  mark_set_1
  0.76  5.61 0.23  1073359 0.00 0.00  fold_binary
  0.69  5.82 0.21  3530376 0.00 0.00  ix86_decompose_address
  0.66  6.02 0.20  2801807 0.00 0.00  is_gimple_reg
  0.66  6.22 0.20  101 0.00 0.02  reload
  0.62  6.41 0.19  6596295 0.00 0.00  find_reg_note
  0.62  6.60 0.19  3748843 0.00 0.00  ggc_alloc_stat
  0.62  6.79 0.19  1543768 0.00 0.00  force_fit_type
  0.59  6.97 0.18  5160059 0.00 0.00  pool_alloc
  0.59  7.15 0.18   937999 0.00 0.00  make_node_stat
  0.59  7.33 0.18 1915 0.00 0.00  cleanup_cfg
  0.56  7.50 0.17  2132681 0.00 0.00  mark_all_vars_used_1
  0.56  7.67 0.17  1015399 0.00 0.00  get_expr_operands
  0.56  7.84 0.17   263419 0.00 0.00  cse_insn
  0.53  8.00 0.16  2162651 0.00 0.00  cselib_lookup
  0.53  8.16 0.16  1176845 0.00 0.00  mark_used_regs
  0.53  8.32 0.16  101 0.00 0.01  reload_as_needed
  0.49  8.47 0.15  1748131 0.00 0.00  operand_equal_p
  0.49  8.62 0.15  1160005 0.00 0.00  propagate_one_insn
  0.49  8.77 0.15  1086424 0.00 0.00  et_splay
  0.49  8.92 0.15  1030222 0.00 0.00  rtx_cost
  0.49  9.07 0.15   523805 0.00 0.00  count_reg_usage
  0.46  9.21 0.14  3222872 0.00 0.00  memory_operand
  0.46  9.35 0.14  1651283 0.00 0.00  htab_find_with_hash
  0.46  9.49 0.14   693604 0.00 0.00  rewrite_update_stmt
  0.46  9.63 0.14   457856 0.00 0.00  mul_double

we're hashing SCEV data a lot:

0.010.07  285600/2683522 set_instantiated_value [395]
0.010.09  398929/2683522 build_int_cst_wide [214]
0.020.20  864500/2683522 find_var_scev_info [184]
[68] 2.30.060.63 2683522 htab_find_slot [68]
0.340.16 2683522/11019933 htab_find_slot_with_hash
 [53]
0.030.00 1150100/1603800 hash_scev_info [589]


0.060.03  125694/1181450 reload_cse_simplify_operands
[94]
0.090.05  201473/1181450 find_matches [200]
0.320.16  698486/1181450 extract_constrain_insn_cached
[67]
[61] 2.70.540.28 1181450+14400   constrain_operands [61]
0.010.15  806498/873917  strict_memory_address_p [236]
0.050.00  272106/402044  operands_match_p [415]


0.050.04  100911/1588625 create_ssa_var_map [329]
0.070.06  144529/1588625 walk_tree_without_duplicates
[268]
0.140.13  292781/1588625 count_uses_and_derefs [149]
0.210.20  450984/1588625 remove_unused_locals [111]
[44] 3.90.520.68 1667653+3246362 walk_tree  [44]
0.060.18  337362/337362  find_used_portions [189]
0.080.12 1659486/1659486 pointer_set_insert [209]
0.000.06   97327/97327   scan_for_refs [487]
0.050.00 1267779/1267779 count_ptr_derefs [525]


0.010.56  143418/143418  regclass [71]
[80] 1.90.010.56  143418 scan_one_insn [80]
0.500.04  113076/113076  record_reg_classes [85]
0.010.01  100486/1944894 extract_insn [121]


0.000.07  209960/1775362 x86_extended_reg_mentioned_p
[364]
0.020.26  747868/1775362 approx

[Bug tree-optimization/18687] [4.0/4.1/4.2 Regression] ~50% compile time regression

2006-09-03 Thread steven at gcc dot gnu dot org


--- Comment #33 from steven at gcc dot gnu dot org  2006-09-03 11:41 ---
FWIW, the oprofile for both test cases is basically flat, nothing stands out.
We just do _so_ much more work (many more passes without removing anything) and
that hurts apparently (not surprising of course).


-- 


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



[Bug tree-optimization/18687] [4.0/4.1/4.2 Regression] ~50% compile time regression

2006-09-03 Thread steven at gcc dot gnu dot org


--- Comment #32 from steven at gcc dot gnu dot org  2006-09-03 11:37 ---
Just to be sure that between 7/24 and today we didn't speed up significantly:

"real" times for hashes100.c (x86_64-linux, Intel Xeon 3.2 GHz, 1GB RAM):

3.4.6  4.2-svn20060903delta
-O0 0m1.618s   0m1.634s   +1%
-O1 0m2.743s   0m5.175s   +88%
-O2 0m4.686s   0m7.719s   +65%

"real" times for infcodes100.c:
3.44.2-svn20060903delta
-O0 0m3.040s   0m3.526s   +16%
-O1 0m4.989s   0m8.871s   +77%
-O2 0m8.375s   0m13.334s  +59%


Given these numbers, I would stick with gcc3 if I were a kernel developer.


-- 


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



[Bug tree-optimization/28900] [4.1/4.2 regression] ICE verify_stmts failed (invalid operand to unary operator)

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


--- Comment #7 from rguenth at gcc dot gnu dot org  2006-09-03 11:32 ---
I have a patch.  The vectorizer oughts to use more of the infrastructure we
have.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-08-30 15:23:02 |2006-09-03 11:32:35
   date||


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



[Bug tree-optimization/18687] [4.0/4.1/4.2 Regression] ~50% compile time regression

2006-09-03 Thread steven at gcc dot gnu dot org


--- Comment #31 from steven at gcc dot gnu dot org  2006-09-03 11:05 ---
"real" times for hashes100.c (x86_64-linux, Intel Xeon 3.2 GHz, 1GB RAM):

3.4.6  4.0.4  4.1.2  4.2-svn20060724
-O0 0m1.618s   0m1.762s   0m1.661s   0m1.645s
-O1 0m2.743s   0m4.646s   0m4.984s   0m4.936s
-O2 0m4.686s   0m6.814s   0m7.140s   0m7.603s


"real" times for infcodes100.c:

3.4.6  4.0.4  4.1.2  4.2-svn20060724
-O0 0m3.040s   0m3.643s   0m3.555s   0m3.575s
-O1 0m4.989s   0m7.694s   0m8.809s   0m8.943s
-O2 0m8.375s   0m10.622s  0m12.136s  0m13.285s


-- 


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



[Bug tree-optimization/28905] [4.2 regression] ICE in compare_name_with_value, at tree-vrp.c:3557

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


--- Comment #8 from rguenth at gcc dot gnu dot org  2006-09-03 11:04 ---
*** Bug 28941 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=28905



[Bug c++/28941] ice in optimiser

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


--- Comment #2 from rguenth at gcc dot gnu dot org  2006-09-03 11:04 ---


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


-- 

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



[Bug tree-optimization/8361] [4.1/4.2 regression] C++ compile-time performance regression

2006-09-03 Thread steven at gcc dot gnu dot org


--- Comment #70 from steven at gcc dot gnu dot org  2006-09-03 10:39 ---
Based on my numbers of comment #69, I'm declaring this fixed once more.


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug c++/28941] ice in optimiser

2006-09-03 Thread dcb314 at hotmail dot com


--- Comment #1 from dcb314 at hotmail dot com  2006-09-03 10:34 ---
Created an attachment (id=12180)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12180&action=view)
C++ source code


-- 


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



[Bug c++/28941] New: ice in optimiser

2006-09-03 Thread dcb314 at hotmail dot com
I just tried to compile Suse Linux package djvulibre-3.5.17-4
with GNU C++ version 4.2 snapshot 20060902.

The compiler said

GMapAreas.cpp: In member function 'DJVU::GUTF8String DJVU::GMapArea::print()':
GMapAreas.cpp:246: internal compiler error: in compare_name_with_value, at
tree-vrp.c:3557
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

Preprocessed source code attached. Flag -O2 required.


-- 
   Summary: ice in optimiser
   Product: gcc
   Version: 4.2.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: i686-pc-linux-gnu


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



[Bug tree-optimization/26969] [4.1 Regression] ICE with -O1 -funswitch-loops -ftree-vectorize

2006-09-03 Thread victork at il dot ibm dot com


--- Comment #13 from victork at il dot ibm dot com  2006-09-03 07:51 ---
this bug looks very similar to PR28839 which already have a fix in
patch http://gcc.gnu.org/ml/gcc-patches/2006-08/msg01171.html

We need to check if above patch fixes PR26969 as well.


-- 


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



[Bug target/28137] "make check" gets 10 FAIL reports with gcc.dg/c99-typespec-1.c

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


--- Comment #6 from pinskia at gcc dot gnu dot org  2006-09-03 07:30 ---
(In reply to comment #5)
> (In reply to comment #4)
> > FAIL: gcc.dg/visibility-11.c scan-assembler [EMAIL PROTECTED]
> 
> Yes this one is known.
And that was fixed by:
2006-07-24  Uros Bizjak  <[EMAIL PROTECTED]>

* gcc.dg/visibility-11.c: Enlarge test array to 1024 bytes to
avoid memcpy optimization.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.2


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



[Bug c++/28293] ICE on invalid typedef

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 07:27 ---
Confirmed.


-- 

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-03 07:27:46
   date||


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



[Bug middle-end/28205] Request an option to make -finstrument-functions not apply to inlined function calls

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 07:26 ---
Confirmed, it is a little hard as -finstrument-functions now applied before
inlining.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-09-03 07:26:30
   date||


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



[Bug libgcj/28009] libjava cannot be cross-built; X_CFLAGS includes /usr/include

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


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-09-03 07:23 ---
This worked for me with using --with-sysroot=MYSYSROOT with a cross from
i686-pc-linux-gnu to powerpc64-linux-gnu even with all the multilibs for ppc64
:).


-- 


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



[Bug other/28002] decNumber sources need GPL+exception for use in libgcc

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-09-03 07:20 ---
Confirmed, any news on this?


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-09-03 07:20:38
   date||


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



[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-03 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-09-03 07:18 ---
Confirmed, Out of SSA should have created split the variable's range so that
the conflicting parts are not changed inside the loop.
before Out of SSA:
  # s_2 = PHI ;
  # d_1 = PHI ;
:;
  D.1287_8 = MEM[base: d_1];
  s_9 = s_2 + D.1287_8;
  d_10 = d_1 + 4B;
  if (s_9 < g_11) goto ; else goto ;

  # s_7 = PHI ;
:;
  *v_3 = s_7;


We should have changed s_7 into s.1 and added a move inside the loop before s_2
gets clobbered.

I don't know the way of fixing out of SSA though.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|minor   |normal
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  Known to fail||4.0.0 4.1.0 4.2.0
  Known to work||3.4.0
   Last reconfirmed|-00-00 00:00:00 |2006-09-03 07:18:51
   date||
Summary|jump to middle of loop on   |[4.0/4.1/4.2 Regression]
   |entry with using old version|jump to middle of loop on
   |of an variable  |entry with using old version
   ||of an variable
   Target Milestone|--- |4.0.4


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



[Bug c++/28220] Segfault with pch and trying to do IMA with C++

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


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-09-03 07:05 ---
bug.h just needs to contain:
#pragma GCC pch_preprocess
"/src/gcc/local/gcc/objdir/i686-pc-linux-gnu/libstdc++-v3/include/i686-pc-linux-gnu/bits/stdtr1c++.h.gch/O2g.gch

but that means we need to reduce that pch file also, I will try to do it maybe
on Monday.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  GCC build triplet|i686-pc-linux-gnu   |
   GCC host triplet|i686-pc-linux-gnu   |
 GCC target triplet|i686-pc-linux-gnu   |
Summary|Segfault in top-of-tree |Segfault with pch and trying
   |development gcc |to do IMA with C++


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