[Bug rtl-optimization/42592] New: really bad register allocation for x86

2010-01-03 Thread andi-gcc at firstfloor dot org
From http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_icc-11.1/

typedef unsigned int size_t;
typedef __builtin_va_list __gnuc_va_list;
typedef __gnuc_va_list va_list;
typedef size_t STRLEN;
struct sv;
typedef struct sv SV;
typedef int I32;
typedef unsigned int U32;
struct sv
{
  void *sv_any;
  U32 sv_refcnt;
  U32 sv_flags;
};
void Perl_sv_setpvn (SV * sv, char const *ptr, STRLEN len);
void Perl_sv_vcatpvfn (SV * sv, char const *pat, STRLEN patlen,
   va_list * args, SV ** svargs, I32 svmax,
   char *maybe_tainted);
void Perl_sv_vsetpvfn (SV * sv, char const *pat, STRLEN patlen,
   va_list * args, SV ** svargs, I32 svmax,
   char *maybe_tainted);
void Perl_sv_vcatpvfn (SV * sv, char const *pat, STRLEN patlen,
   va_list * args, SV ** svargs, I32 svmax,
   char *maybe_tainted);
void Perl_sv_vcatpvfn (SV * sv, char const *pat, STRLEN patlen,
   va_list * args, SV ** svargs, I32 svmax,
   char *maybe_tainted);
void Perl_sv_setpvn (SV * sv, char const *ptr, STRLEN len);
void
Perl_sv_vsetpvfn (SV * sv, char const *pat, STRLEN patlen, va_list * args,
  SV ** svargs, I32 svmax, char *maybe_tainted)
{

  {
Perl_sv_setpvn (sv, , 0U);
Perl_sv_vcatpvfn (sv, pat, patlen, args, svargs, svmax, maybe_tainted);
return;
  }
}

/* Checksum = 9EEF59B7 */

with icc this gives a neat

   0:   57  push   %edi
   1:   8b 7c 24 08 mov0x8(%esp),%edi
   5:   6a 00   push   $0x0
   7:   68 00 00 00 00  push   $0x0
   c:   57  push   %edi
   d:   e8 fc ff ff ff  call   e Perl_sv_vsetpvfn+0xe
  12:   ff 74 24 2c pushl  0x2c(%esp)
  16:   ff 74 24 2c pushl  0x2c(%esp)
  1a:   ff 74 24 2c pushl  0x2c(%esp)
  1e:   ff 74 24 2c pushl  0x2c(%esp)
  22:   ff 74 24 2c pushl  0x2c(%esp)
  26:   ff 74 24 2c pushl  0x2c(%esp)
  2a:   57  push   %edi
  2b:   e8 fc ff ff ff  call   2c Perl_sv_vsetpvfn+0x2c
  30:   83 c4 28add$0x28,%esp
  33:   5f  pop%edi
  34:   c3  ret

but gcc produces terrible register allocation (-m32 -O2 4.5.0 20091219)
in comparison (like first loading arguments into registers, just to spill
them again on a function call):

pushl   %ebp
movl%esp, %ebp
pushl   %edi
pushl   %esi
pushl   %ebx
subl$32, %esp
movl12(%ebp), %eax
movl8(%ebp), %ebx
movl28(%ebp), %edx
movl32(%ebp), %ecx
movl%eax, -28(%ebp)
movl24(%ebp), %eax
pushl   $0
movl16(%ebp), %esi
pushl   $.LC0
movl20(%ebp), %edi
pushl   %ebx
movl%eax, -32(%ebp)
movl%edx, -36(%ebp)
movl%ecx, -40(%ebp)
callPerl_sv_setpvn
movl-32(%ebp), %eax
addl$16, %esp
movl-40(%ebp), %ecx
movl-36(%ebp), %edx
movl%edi, 20(%ebp)
movl%eax, 24(%ebp)
movl-28(%ebp), %eax
movl%esi, 16(%ebp)
movl%ebx, 8(%ebp)
movl%ecx, 32(%ebp)
movl%edx, 28(%ebp)
movl%eax, 12(%ebp)
leal-12(%ebp), %esp
popl%ebx
popl%esi
popl%edi
popl%ebp
jmp Perl_sv_vcatpvfn


-- 
   Summary: really bad register allocation for x86
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andi-gcc at firstfloor dot org
  GCC host triplet: x86_64-linux
GCC target triplet: x86_64-linux


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



[Bug tree-optimization/42586] New: load-modify-store on x86 should be \ single instruction

2010-01-03 Thread andi-gcc at firstfloor dot org


--- Comment #17 from andi-gcc at firstfloor dot org  2010-01-03 08:12 
---
Nope, the examples all disable frame pointer
(the first version of the tester had this problem, but that was fixed)

It's all not frame pointer set up anyways, but sub $...,%esp ... ; add
$...,%esp
with no use of the stack frame (or often even nothing at all) inbetween


-- 


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



[Bug tree-optimization/42587] bswap not recognized for memory

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 10:58 ---
Confirmed.

The bswap detection does not work on memory at all but only detects it
on registers.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||missed-optimization
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 10:58:04
   date||
Summary|bswap not recognized for|bswap not recognized for
   |union   |memory


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



[Bug tree-optimization/42586] load-modify-store on x86 should be a single instruction

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #18 from rguenth at gcc dot gnu dot org  2010-01-03 11:11 
---
Confirmed.  This is indeed showing two cases of SRA behaving oddly.  First
early SRA produces

bb 2:
  _T2 = *sptr_1(D);
  _ans = _T2;
  _ans$curr_12 = _T2.curr;
  D.1965_6 = _ans$curr_12;
  D.1966_7 = D.1965_6 + -1;
  _ans$curr_2 = D.1966_7;
  *sptr_1(D) = _ans;
  sptr_1(D)-curr = _ans$curr_2;

from

bb 2:
  _T2 = *sptr_1(D);
  _ans = _T2;
  D.1965_6 = _ans.curr;
  D.1966_7 = D.1965_6 + -1;
  _ans.curr = D.1966_7;
  *sptr_1(D) = _ans;

then late SRA continues to obfuscate things by producing

bb 2:
  _T2 = *sptr_1(D);
  _T2$curr_14 = sptr_1(D)-curr;
  _ans = _T2;
  _ans.curr = _T2$curr_14;
  _ans$curr_12 = _T2$curr_14;
  D.1966_7 = _ans$curr_12 + -1;
  *sptr_1(D) = _ans;
  sptr_1(D)-curr = D.1966_7;

note how both times it increases the amount of variables and their lifetime
(I think it's bad we run SRA twice anyway).  The first SRA pass should
have produced

  _T2$curr_10 = sptr_1(D)-curr;
  D.1965_6 = _T2$curr_10;
  D.1966_7 = D.1965_6 + -1;
  _T2$curr_11 = D.1966_7;
  sptr_1(D)-curr = _T2$curr_11;

The old ESRA implementation decomposed all structure copies completely
and thus left to produce the above by further scalar optimizations:

bb 2:
  _T2$last_plus_one_2 = sptr_1(D)-last_plus_one;
  _T2$base_3 = sptr_1(D)-base;
  _T2$curr_4 = sptr_1(D)-curr;
  _ans$last_plus_one_5 = _T2$last_plus_one_2;
  _ans$base_8 = _T2$base_3;
  _ans$curr_9 = _T2$curr_4;
  D.1262_6 = _ans$curr_9;
  D.1263_7 = D.1262_6 + -1;
  _ans$curr_10 = D.1263_7;
  sptr_1(D)-last_plus_one ={v} _ans$last_plus_one_5;
  sptr_1(D)-base ={v} _ans$base_8;
  sptr_1(D)-curr ={v} _ans$curr_10;


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|normal  |enhancement
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 11:11:22
   date||
Summary|New: load-modify-store on   |load-modify-store on x86
   |x86 should be \ single  |should be a single
   |instruction |instruction


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



[Bug bootstrap/42584] GCC 4.5 doesn't come close to bootstrapping on MinGW/MSYS

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 11:15 ---


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


-- 

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



[Bug bootstrap/42424] in-tree GMP/MPFR/MPC bootstrap fails

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2010-01-03 11:15 ---
*** Bug 42584 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||lxndrmxwll at gmail dot com


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



[Bug bootstrap/42424] [4.5 Regression] in-tree GMP/MPFR/MPC bootstrap fails

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2010-01-03 11:16 ---
I think we want to make this work for 4.5 again, it works for 4.4 - of course
w/o mpc which causes the problems here.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||bonzini at gnu dot org
   Priority|P3  |P1
Summary|in-tree GMP/MPFR/MPC|[4.5 Regression] in-tree
   |bootstrap fails |GMP/MPFR/MPC bootstrap fails
   Target Milestone|--- |4.5.0


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



[Bug rtl-optimization/42592] really bad register allocation for x86

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 11:27 ---
Confirmed.  Well, GCC produces exactly the same code as ICC when using
-O2 -mno-accumulate-outgoing-args -fno-optimize-sibling-calls
-fomit-frame-pointer

Thus the sibcall comes in the way as obviously does -maccumulate-outgoing-args.
w/o -maccumulate-outgoing-args but the rest of the options we produce

Perl_sv_vsetpvfn:
pushl   %ebx
subl$40, %esp
movl48(%esp), %ebx
movl$0, 8(%esp)
movl$.LC0, 4(%esp)
movl%ebx, (%esp)
callPerl_sv_setpvn
movl72(%esp), %eax
movl%ebx, (%esp)
movl%eax, 24(%esp)
movl68(%esp), %eax
movl%eax, 20(%esp)
movl64(%esp), %eax
movl%eax, 16(%esp)
movl60(%esp), %eax
movl%eax, 12(%esp)
movl56(%esp), %eax
movl%eax, 8(%esp)
movl52(%esp), %eax
movl%eax, 4(%esp)
callPerl_sv_vcatpvfn
addl$40, %esp
popl%ebx
ret

which looks like we cannot do better with that constraint.  The sibcall
variant isn't too bad either.

Of course with sibcalling and -mno-accumulate-outgoing-args we fail to
re-order argument setup for optimal size, even with -fschedule-insns.
So that part of the bug would be valid.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||vmakarov at redhat dot com
   Severity|normal  |enhancement
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||missed-optimization, ra
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 11:27:29
   date||


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 11:34 ---
Because with 32bit we do not have a 64bit bswap instruction and tmp is 64bit.
What would you expect here?


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Keywords||missed-optimization
Summary|bswap optimization does not |bswap optimization does not
   |work for 32bit (but for |work for 32bit (but for
   |64bit)  |64bit) on 64bit registers


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



[Bug middle-end/42582] fortify with optimisation above -O0 cause abort in realpath()

2010-01-03 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2010-01-03 11:38 ---
The testcase is indeed invalid, if the second argument to realpath is not NULL,
it must be a buffer at least PATH_MAX bytes long.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||INVALID


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-03 11:45 ---
With

Index: tree-ssa-math-opts.c
===
--- tree-ssa-math-opts.c(revision 155576)
+++ tree-ssa-math-opts.c(working copy)
@@ -,8 +,9 @@ execute_optimize_bswap (void)
optab_handler (bswap_optab, SImode)-insn_code !=
   CODE_FOR_nothing);
   bswap64_p = (built_in_decls[BUILT_IN_BSWAP64]
-   optab_handler (bswap_optab, DImode)-insn_code !=
-  CODE_FOR_nothing);
+   (optab_handler (bswap_optab, DImode)-insn_code !=
+  CODE_FOR_nothing
+  || bswap32_p));

   if (!bswap32_p  !bswap64_p)
 return 0;

and thus generic expansion for 64bit bswap we produce

-   movl%edx, %edi
-   movl%ecx, %esi
-   andl$-16711936, %edi
-   andl$-16711936, %esi
-   movl%edi, -36(%ebp)
-   movl%esi, -40(%ebp)
-   movl-36(%ebp), %edi
-   movl-40(%ebp), %esi
-   andl$16711935, %ecx
-   shrdl   $8, %edi, %esi
-   movl%ecx, -48(%ebp)
-   movl%esi, -32(%ebp)
-   shrl$8, %edi
-   movl-48(%ebp), %esi
-   movl%edi, -28(%ebp)
-   andl$16711935, %edx
-   movl-28(%ebp), %ecx
-   movl%edx, -44(%ebp)
-   movl-32(%ebp), %edx
-   movl-44(%ebp), %edi
-   shldl   $8, %esi, %edi
-   sall$8, %esi
-   orl %edi, %ecx
-   orl %esi, %edx
-   movzwl  %cx, %esi
-   movzwl  %dx, %edi
-   movl%esi, -52(%ebp)
-   movl%edi, -56(%ebp)
-   xorw%dx, %dx
-   movl-56(%ebp), %esi
-   movl%edx, -64(%ebp)
-   movl-52(%ebp), %edi
-   xorw%cx, %cx
-   shldl   $16, %esi, %edi
-   movl%ecx, -60(%ebp)
-   movl%edi, -28(%ebp)
-   sall$16, %esi
-   movl-60(%ebp), %edi
-   movl%esi, -32(%ebp)
-   movl-28(%ebp), %ecx
-   movl-64(%ebp), %esi
-   movl-32(%ebp), %edx
-   shrdl   $16, %edi, %esi
-   shrl$16, %edi
-   orl %esi, %edx
-   orl %edi, %ecx
-   movl%edx, (%ebx,%eax,8)
-   movl%ecx, 4(%ebx,%eax,8)
-   movl8(%ebp), %edi
-   movl%edx, (%edi,%eax,8)
-   movl%ecx, 4(%edi,%eax,8)
+   bswap   %edx
+   bswap   %ecx
+   movl%edx, 4(%ebx,%eax,8)
+   movl%ecx, (%ebx,%eax,8)
+   movl%ecx, (%esi,%eax,8)
+   movl%edx, 4(%esi,%eax,8)

No idea if it is generally a good idea to do this on all targets though.
At least we'd go through expand_doubleword_bswap which should be pretty
much optimal.


-- 

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|WAITING |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 11:45:57
   date||


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



[Bug tree-optimization/42438] [4.4/4.5 Regression] Fix for PR38819 is too conservative

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2010-01-03 12:06 ---
Subject: Bug 42438

Author: rguenth
Date: Sun Jan  3 12:06:02 2010
New Revision: 155584

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155584
Log:
2010-01-03  Richard Guenther  rguent...@suse.de

PR tree-optimization/42438
* tree-ssa-pre.c (struct bb_bitmap_sets): Add
contains_may_not_return_call flag.
(BB_MAY_NOTRETURN): New.
(valid_in_sets): Trapping nary operations are not valid
in blocks that may not return.
(insert_into_preds_of_block): Remove check for trapping
expressions.
(compute_avail): Compute also BB_MAY_NOTRETURN.

* gcc.dg/tree-ssa/ssa-pre-27.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-27.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-pre.c


-- 


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



[Bug tree-optimization/42438] [4.4 Regression] Fix for PR38819 is too conservative

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2010-01-03 12:10 ---
Fixed for 4.5 as good as we can.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|rguenth at gcc dot gnu dot  |unassigned at gcc dot gnu
   |org |dot org
 Status|ASSIGNED|NEW
  Known to work||4.5.0
Summary|[4.4/4.5 Regression] Fix for|[4.4 Regression] Fix for
   |PR38819 is too conservative |PR38819 is too conservative


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2010-01-03 12:19 ---
Shouldn't that be || (bswap32_p  word_mode == SImode) ? expand_unop
will only call expand_doubleword_bswap in that case...


-- 


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread rguenther at suse dot de


--- Comment #4 from rguenther at suse dot de  2010-01-03 12:28 ---
Subject: Re:  bswap optimization does not work
 for 32bit (but for 64bit) on 64bit registers

On Sun, 3 Jan 2010, jakub at gcc dot gnu dot org wrote:

 --- Comment #3 from jakub at gcc dot gnu dot org  2010-01-03 12:19 ---
 Shouldn't that be || (bswap32_p  word_mode == SImode) ? expand_unop
 will only call expand_doubleword_bswap in that case...

Hm, yeah.  I wonder why it doesn't try

  half_mode = smallest_mode_for_size (GET_MODE_PRECISION (mode) / 2, MODE_INT);
  if (GET_MODE_SIZE (mode) == 2 * GET_MODE_SIZE 
(half_mode)
   optab_handler (unoptab, half_mode)-insn_code != 
CODE_FOR_nothing)
{
  temp = expand_doubleword_bswap (mode, op0, target);
  if (temp)
return temp;
}

or similar.  Though in practice it might not matter...

Richard.


-- 


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



[Bug libstdc++/42593] New: [c++0x] std::bind not assignable to std::function

2010-01-03 Thread d dot frey at gmx dot de
The following code compiles fine with GCC 4.3.3 and 4.4.2, but fails to compile
with 4.5 (snapshot from 2009-12-31):

#include functional
void f( int ) {}
int main() { std::function void( int )  pf = std::bind( f,
std::placeholders::_1 ); }

with the following error:

In file included from t.cc:1:0:
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:
In static member function #130;Äòstatic void
std::_Function_handlervoid(_ArgTypes ...), _Functor::_M_invoke(const
std::_Any_data, _ArgTypes ...) [with _Functor = std::_Bindvoid
(*(std::_Placeholder1))(int), _ArgTypes = {int}]#130;Äô:
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:2127:6:
  instantiated from #130;Äòstd::function_Res(_ArgTypes
...)::function(_Functor, typename __gnu_cxx::__enable_if(!
std::is_integral_Functor::value), std::function_Res(_ArgTypes
...)::_Useless::__type) [with _Functor = std::_Bindvoid
(*(std::_Placeholder1))(int), _Res = void, _ArgTypes = {int}, typename
__gnu_cxx::__enable_if(! std::is_integral_Functor::value),
std::function_Res(_ArgTypes ...)::_Useless::__type =
std::functionvoid(int)::_Useless]#130;Äô
t.cc:3:85:   instantiated from here
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:1748:9:
error: no match for call to #130;Äò(std::_Bindvoid
(*(std::_Placeholder1))(int)) (int)#130;Äô
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:1219:9:
note: candidates are: typename std::result_of_Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type std::_Bind_Functor(_Bound_args
...)::operator()(_Args ...) [with _Args = {int}, _Functor = void (*)(int),
_Bound_args = {std::_Placeholder1}, typename std::result_of_Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type = void]
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:1230:9:
note:typename std::result_ofconst _Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type std::_Bind_Functor(_Bound_args
...)::operator()(_Args ...) const [with _Args = {int}, _Functor = void
(*)(int), _Bound_args = {std::_Placeholder1}, typename std::result_ofconst
_Functor(typename std::result_ofstd::_Mu_Bound_args(_Bound_args,
std::tuple_UElements ...)::type ...)::type = void]
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:1242:9:
note:typename std::result_ofvolatile _Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type std::_Bind_Functor(_Bound_args
...)::operator()(_Args ...) volatile [with _Args = {int}, _Functor = void
(*)(int), _Bound_args = {std::_Placeholder1}, typename
std::result_ofvolatile _Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type = void]
/home/frey/work/install/gcc-4.5-snapshot/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/functional:1255:9:
note:typename std::result_ofconst volatile _Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type std::_Bind_Functor(_Bound_args
...)::operator()(_Args ...) const volatile [with _Args = {int}, _Functor =
void (*)(int), _Bound_args = {std::_Placeholder1}, typename
std::result_ofconst volatile _Functor(typename
std::result_ofstd::_Mu_Bound_args(_Bound_args, std::tuple_UElements
...)::type ...)::type = void]


-- 
   Summary: [c++0x] std::bind not assignable to std::function
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: d dot frey at gmx dot de


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #1 from paolo dot carlini at oracle dot com  2010-01-03 12:47 
---
Thanks Daniel. Jon, can you have a look? I verified that the tr1 code we were
using in 4.4.x and before is fine, thus should be either the std::function
changes vs rvalue references or, less likely I believe, the void special case
changes.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 12:47:29
   date||
Summary|[c++0x] std::bind not   |[c++0x] [4.5 Regression]
   |assignable to std::function |std::bind not assignable to
   ||std::function


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



[Bug rtl-optimization/42594] New: no store merging for structure stores

2010-01-03 Thread andi-gcc at firstfloor dot org
Extracted from
http://embed.cs.utah.edu/embarrassing/dec_09/harvest/gcc-head_llvm-gcc-head/

I've seen this in multiple examples both compared to llvm and icc.
The other compilers merge adjacent stores to structures in memory,
gcc doesn't.

Simple toy example:

struct foo { 
short a;
char c;
char d;
int x;
};

void f(struct foo *f)
{
f-a = 1;
f-c = 0;
f-d = 1;
f-x = 0;
}


generates with -O2 -S -mtune=generic 4.5.0 20091219

 movw$1, (%rdi)
 movb$0, 2(%rdi)
 movb$1, 3(%rdi)
 movl$0, 4(%rdi)

but since everything is aligned it could be just (from icc)

   movl  $16777217, (%rdi) #11.2
   movl  $0, 4(%rdi)   #14.2

(possibly even a single movq, exploiting CPUs with very fast misalignment
support like Nehalem)


-- 
   Summary: no store merging for structure stores
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andi-gcc at firstfloor dot org
  GCC host triplet: x86_64-linux
GCC target triplet: x86_64-linux


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



[Bug java/41745] Segmentation fault when ecj.jar is run as a binary compiled by gcj

2010-01-03 Thread gerald at pfeifer dot com


--- Comment #6 from gerald at pfeifer dot com  2010-01-03 13:10 ---
Would you mind trying again with the latest snapshot/SVN version of GCC
(or the current version of lang/gcc45, if you prefer)?

There have been some improvements recently to libffi which may make a
difference.  (It does look like a threading issue, but who knows...)


Greg, this may be similar/related to what you have been seeing?


-- 

gerald at pfeifer dot com changed:

   What|Removed |Added

  GCC build triplet||glar...@freebsd.org


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread andi-gcc at firstfloor dot org


--- Comment #5 from andi-gcc at firstfloor dot org  2010-01-03 13:11 ---
I would expect two bswaps yes, like llvm generates

I also can't see how this should be a bad idea for any target with a bswap
like operation (unless it's 64bit)


-- 


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



[Bug tree-optimization/42586] load-modify-store on x86 should be a single instruction

2010-01-03 Thread andi-gcc at firstfloor dot org


--- Comment #19 from andi-gcc at firstfloor dot org  2010-01-03 13:18 
---

Here's another example with the bogus stack frame problem with a tail call
(the embarassing website has quite a lot of similar cases, normally
near the tail of the tables with 16 vs 22 bytes e.g. against sun cc
which also does tail optimization):


typedef long __clock_t;

typedef __clock_t clock_t;

struct lprofS_sSTACK_RECORD;

typedef struct lprofS_sSTACK_RECORD lprofS_STACK_RECORD;

struct lprofS_sSTACK_RECORD

{

  clock_t time_marker_function_local_time;

  clock_t time_marker_function_total_time;

  char *file_defined;

  char *function_name;

  char *source_code;

  long line_defined;

  long current_line;

  float local_time;

  float total_time;

  lprofS_STACK_RECORD *next;

};

typedef lprofS_STACK_RECORD *lprofS_STACK;

struct lprofP_sSTATE;

typedef struct lprofP_sSTATE lprofP_STATE;

struct lprofP_sSTATE

{

  int stack_level;

  lprofS_STACK stack_top;

};

extern void lprofC_start_timer (clock_t * time_marker);

void lprofM_resume_local_time (lprofP_STATE * S);

void

lprofM_resume_local_time (lprofP_STATE * S)

{



  {

lprofC_start_timer ((S-stack_top)-time_marker_function_local_time);

return;

  }

}

gives with -m32 -fomit-frame-pointer -O2 and 4.5.0 20091219

 subl$12, %esp
movl16(%esp), %eax
movl4(%eax), %eax
movl%eax, 16(%esp)
addl$12, %esp
jmp lprofC_start_timer

The subl/addl are completely unnecessary


-- 


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



[Bug rtl-optimization/42594] no store merging for structure stores

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 13:20 ---
Old problem - there's a duplicate report even somewhere with a patch from
Jakub.


-- 


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



[Bug rtl-optimization/42594] no store merging for structure stores

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #2 from steven at gcc dot gnu dot org  2010-01-03 13:22 ---
Not sure, but looks like a dup of bug 22141.


-- 


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



[Bug rtl-optimization/42594] no store merging for structure stores

2010-01-03 Thread steven at gcc dot gnu dot org


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2010-01-03 13:22:11
   date||


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



[Bug rtl-optimization/42594] no store merging for structure stores

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2010-01-03 13:30 ---
It is.

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


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE


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



[Bug middle-end/22141] [4.3/4.4/4.5 Regression] Missing optimization when storing structures

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #20 from rguenth at gcc dot gnu dot org  2010-01-03 13:30 
---
*** Bug 42594 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||andi-gcc at firstfloor dot
   ||org


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



[Bug target/41311] [4.5 regression] m68k - FFmpeg crashes when converting mpg to avi

2010-01-03 Thread nospamname at web dot de


--- Comment #13 from nospamname at web dot de  2010-01-03 13:57 ---
Can this report reopen please and target change to m68k-* ?
Bug happen also in m68k-elf.See here the two fjlt .L319 to diffrent labels.I
remove lots compiler options
to make it more simple.But ffmpeg error is same.

I try also a simple testprog, but this produce diffrent and working Code.maybe
somebody with better optimizer knowledge can modify the testprog to produce
same code and use ftst.s d0

$ make
/bernd/ffmpeg/version.sh /bernd/ffmpeg version.h
m68k-elf-gcc -V4.5.0 -DHAVE_AV_CONFIG_H -I. -I/bernd/ffmpeg -D_ISOC99_SOURCE
-
D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -S -m68020
-m
68881 -I/usr/local/amiga/m68k-amigaos/include -Wundef -O1-MMD -MF
libavc
odec/ratecontrol.d -MT libavcodec/ratecontrol.o  -c -o libavcodec/ratecontrol.o
libavcodec/ratecontrol.c

thats the snippet from the asm file create with -S.

.LVL554:
fmove.s %d4,%fp1
fmul.x %fp1,%fp0
fmove.d %fp0,-(%sp)
move.l %a3,-(%sp)
move.l %a2,-(%sp)
.LCFI139:
jsr get_qscale
.LM656:
fmove.s %fp0,%d0
.LVL555:
.LM657:
lea (20,%sp),%sp
ftst.s %d0
fjlt .L319
.LM658:
fjlt .L310
fslt %d0
.LVL556: 

here is snippet(amistuff upload) of m68k-amigaos with GCC 4.5.0 24. december
2009 and wrong code too

jsr _get_qscale
move.l d1,-(sp)
move.l d0,-(sp)
fmove.d (sp)+,fp0
fmove.s fp0,d0
lea (20,sp),sp
ftst.s d0
fjlt L315
fjlt L306
fslt d0
extb.l d0
neg.l d0
move.l d0,-(sp)

-

here is snippet(ami_stuff upload) with correct Code of m68k-amigaos GCC 4.5.0
24.december 2009

jsr _get_qscale
move.l d1,-(sp)
move.l d0,-(sp)
fmove.d (sp)+,fp0
fmove.s fp0,d0
lea (20,sp),sp
ftst.s d0
fjnlt L342
fmove.s #0xbf80,fp2
jra L307
L342:
ftst.s d0
fjgt L331
fslt d0

I now write a testprogram to reproduce the Bug.But GCC generate diffrent code
that work ok with both compilers

maybe somebody can tell how fake the optimizer to produce same code and do a
ftst.s d0 as in above Situation ?



#define assert(expression)  \
  ((void) ((expression) ? 0 : __assert (expression, __FILE__, __LINE__)))

#define __assert(expression, file, line)  \
  (printf (%s:%u: failed assertion `%s'\n, file, line,expression),   
\
   abort(), 0)

double get_qscale(long *s, long *rce, double rate_factor, int frame_num)
{
return rate_factor*frame_num;
}

double get_diff_limited_q(long *s, long *rce, double q);

float ff_rate_estimate_qscale(double rate_factor, int picture_number)
{
long *s;
long *rce;
float q;
q= get_qscale(s, rce, rate_factor, picture_number);
if (q  0)
return -1;

assert(q0.0);
 q = get_diff_limited_q(s, rce, q);
 assert(q0.0);
}



int main(int argc, char **argv)
{
printf(%ld\n,ff_rate_estimate_qscale((float)argc,argc*4));
}



link.w %fp,#0
move.l 16(%fp),-(%sp)
move.l 12(%fp),-(%sp)
move.l 8(%fp),-(%sp)
clr.l -(%sp)
clr.l -(%sp)
jsr get_qscale
lea (20,%sp),%sp
fsmove.x %fp0,%fp0
fjnlt .L11
fmove.s #0xbf80,%fp0
jra .L2
.L11:
ftst.x %fp0
fjgt .L5 


-- 

nospamname at web dot de changed:

   What|Removed |Added

 CC||nospamname at web dot de


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



[Bug c/42595] New: Integer/Floating point casts between vector types generate

2010-01-03 Thread adam at consulting dot net dot nz



-- 
   Summary: Integer/Floating point casts between vector types
generate
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: adam at consulting dot net dot nz


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


-- 

redi at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |redi at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2010-01-03 12:47:29 |2010-01-03 14:12:57
   date||


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



[Bug c/42596] New: Integer/Floating point vector casts generate XMM register moves from and to the same register

2010-01-03 Thread adam at consulting dot net dot nz
/*
  GCC does not permit a vector of a union type.

  To dynamically store both integer and float data in an XMM register define an
  integer vector and cast to a float vector whenever a floating point operation
  is required upon the data (or use a union to perform the type conversion).

  Instead of treating these casts as a no-op GCC copies the register using a
  floating point XMM move instruction, performs the calculation, then copies
  the register back using an integer XMM move instruction.
*/

typedef double xmm_2f64_t __attribute__((vector_size (16)));
typedef long long xmm_2i64_t __attribute__((vector_size (16)));

register xmm_2f64_t xmm_a __asm__(xmm4);
register xmm_2f64_t xmm_b __asm__(xmm5);

register xmm_2i64_t xmm_c __asm__(xmm6);
register xmm_2i64_t xmm_d __asm__(xmm7);

typedef union {
  xmm_2f64_t xmm_2f64;
  xmm_2i64_t xmm_2i64;
} xmm_u;

//data type of ‘xmm_e’ isn’t suitable for a register
//register xmm_u xmm_e __asm__(xmm8);

typedef union {
  long long i64;
  double f64;
} r64_u;

//Note that the union above is suitable for a 64-bit register
register r64_u r64 __asm__(r15);


void test_fp_vectors_containing_fp_data() {
  xmm_a+=xmm_b;
}

void test_int_vectors_containing_fp_data() {
  xmm_c=(xmm_2i64_t) ((xmm_2f64_t) xmm_c + (xmm_2f64_t) xmm_d);
}

void test_int_vectors_containing_fp_data_using_a_union() {
  xmm_u u_c, u_d;
  u_c.xmm_2i64=xmm_c;
  u_d.xmm_2i64=xmm_d;
  u_c.xmm_2f64+=u_d.xmm_2f64;
  xmm_c=u_c.xmm_2i64;
}

int main() {
}


Relevant code generation:
$ gcc -O3 dynamic_vectors.c  objdump -d -m i386:x86-64:intel a.out |less

004004a0 test_fp_vectors_containing_fp_data:
  4004a0:   66 0f 58 e5 addpd  xmm4,xmm5
  4004a4:   c3  ret
  4004a5:   66 66 2e 0f 1f 84 00nopWORD PTR cs:[rax+rax*1+0x0]
  4004ac:   00 00 00 00 

004004b0 test_int_vectors_containing_fp_data:
  4004b0:   66 0f 28 c6 movapd xmm0,xmm6
  4004b4:   66 0f 58 c7 addpd  xmm0,xmm7
  4004b8:   66 0f 6f f0 movdqa xmm6,xmm0
  4004bc:   c3  ret
  4004bd:   0f 1f 00nopDWORD PTR [rax]

004004c0 test_int_vectors_containing_fp_data_using_a_union:
  4004c0:   66 0f 28 c6 movapd xmm0,xmm6
  4004c4:   66 0f 58 c7 addpd  xmm0,xmm7
  4004c8:   66 0f 6f f0 movdqa xmm6,xmm0
  4004cc:   c3  ret
  4004cd:   0f 1f 00nopDWORD PTR [rax]


The last two functions should generate addpd xmm6,xmm7 instead of first copying
xmm6 to xmm0, performing the calculation, and then copying xmm6 back to xmm0.


-- 
   Summary: Integer/Floating point vector casts generate XMM
register moves from and to the same register
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: adam at consulting dot net dot nz


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #2 from paolo dot carlini at oracle dot com  2010-01-03 14:26 
---
Thanks.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 CC|jwakely dot gcc at gmail dot|
   |com |


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



[Bug lto/42528] ICE with -flto and -fsigned-char

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-03 14:33 ---
This is because va_list_type_node is char * on some targets and so
pointer-to char types get globbed into it.  But va_list_type_node is
re-constructed as char * at IL read time and thus we read back
unsigned char * as signed char *.

Oops.

I guess va_list_type_node better should be _not_ dependent on
-f[un]signed-char.


-- 


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



[Bug c/42595] Integer/Floating point casts between vector types generate

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 14:46 ---


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


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE
Summary|Integer/Floating point casts|Integer/Floating point casts
   |between vector types|between vector types
   |generate|generate


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



[Bug c/42596] Integer/Floating point vector casts generate XMM register moves from and to the same register

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2010-01-03 14:46 ---
*** Bug 42595 has been marked as a duplicate of this bug. ***


-- 


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



[Bug c/42596] Integer/Floating point vector casts generate XMM register moves from and to the same register

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-03 14:50 ---
Likely because you are using hardregs.  Re-do the testcase with intrinsics
please.


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


--- Comment #3 from redi at gcc dot gnu dot org  2010-01-03 15:07 ---
From a quick look, I think the problem is that std::function now uses perfect
forwarding, but std::bind doesn't yet.
So invoking the function passes an rvalue to _Bind::operator() which fails to
bind to _Args
Previously, std::function took its arguments by value, and
_Bind::operator()(_Args...) bound an lvalue reference to that by-value
parameter:
  return _M_invoker(_M_functor, __args...);

Now it does this:

  return _M_invoker(_M_functor, std::forward_ArgTypes(__args)...);

and so the rvalue cannot bind to _Args

This will be fixed when std::bind supports rvalue references. I was going to
finish those changes after updating future, but I have been delayed by some
unexpected events and am away from my home PC which contains my work in
progress.


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #4 from paolo dot carlini at oracle dot com  2010-01-03 15:10 
---
Ok, Jon, thanks. At some point, however, *soon* I'm afraid given the gcc4.5
schedule, we'll have to make a tough choice: if updating only std::function
leads to bad regressions in common usages of std::bind, and the latter isn't
ready in time for gcc4.5 for whatever reason, we can't ship something half
halfway through, I think...


-- 


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2010-01-03 15:23 ---
Subject: Bug 42589

Author: rguenth
Date: Sun Jan  3 15:23:29 2010
New Revision: 155588

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155588
Log:
2010-01-03  Richard Guenther  rguent...@suse.de

PR tree-optimization/42589
* tree-ssa-math-opts.c (execute_optimize_bswap): Allow
double-word expansion of bswap32.

* gcc.target/i386/pr42589.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr42589.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-math-opts.c


-- 


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



[Bug rtl-optimization/42589] bswap optimization does not work for 32bit (but for 64bit) on 64bit registers

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2010-01-03 15:24 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug bootstrap/42424] [4.5 Regression] in-tree GMP/MPFR/MPC bootstrap fails

2010-01-03 Thread ghazi at gcc dot gnu dot org


--- Comment #6 from ghazi at gcc dot gnu dot org  2010-01-03 15:31 ---
(In reply to comment #3)
 OK, I can reproduce the issue.
 The problem is that mpc isn't told where to find the gmp and mpfr libraries. 
 [...]
 Except that on some targets, .libs is actually called _libs. I don't know
 how to deal with that.

Ah, I think you're on the right track.  I can't yet figure out why it won't
reproduce for me.  There must be some libgmp in my lib path but I can't find it
ATM.

Anyway, I have an idea for _libs and will try to fix it.


-- 

ghazi at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |ghazi at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2010-01-02 19:53:42 |2010-01-03 15:31:13
   date||


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



[Bug rtl-optimization/42592] really bad register allocation for x86

2010-01-03 Thread andi-gcc at firstfloor dot org


--- Comment #2 from andi-gcc at firstfloor dot org  2010-01-03 15:40 ---
An obvious improvement would be to use the non callee clobbered registers
as temporal storage, instead of putting into registers that just get spilled
again. I think one of the other compilers in the comparison
did that but I can't find the example right now.


-- 


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



[Bug tree-optimization/42587] bswap not recognized for memory

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-03 16:01 ---
SRA here again does somthing stupid:

from

bb 2:
  acpi_ut_track_stack_ptr ();
  in.value = value_1(D);
  D.1966_2 = in.bytes[3];
  out.bytes[0] = D.1966_2;
  D.1967_3 = in.bytes[2];
  out.bytes[1] = D.1967_3;
  D.1968_4 = in.bytes[1];
  out.bytes[2] = D.1968_4;
  D.1969_5 = in.bytes[0];
  out.bytes[3] = D.1969_5;
  D.1970_6 = out.value;
  return D.1970_6;

it generates

bb 2:
  acpi_ut_track_stack_ptr ();
  in.value = value_1(D);
  in$bytes$0_14 = in.bytes[0];
  in$bytes$1_15 = in.bytes[1];
  in$bytes$2_16 = in.bytes[2];
  in$bytes$3_17 = in.bytes[3];
  D.1966_2 = in$bytes$3_17;
  out.bytes[0] = D.1966_2;
  D.1967_3 = in$bytes$2_16;
  out.bytes[1] = D.1967_3;
  D.1968_4 = in$bytes$1_15;
  out.bytes[2] = D.1968_4;
  D.1969_5 = in$bytes$0_14;
  out.bytes[3] = D.1969_5;
  D.1970_6 = out.value;
  return D.1970_6;

which isn't an improvement and just creates extra temporary registers.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||jamborm at gcc dot gnu dot
   ||org


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #5 from paolo dot carlini at oracle dot com  2010-01-03 16:03 
---
Jon, I'm raising Priority and Severity not because the isssue per se is that
deadly serious (after all the whole C++0x is experimental, nothing should be
really critical about it), but because we want to make sure we don't forget
when (soon) we'll branch and will be in Stage 4, close to the release, and
we'll have to make the final decisions about functional.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

   Severity|normal  |blocker
   Priority|P3  |P1


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



[Bug tree-optimization/42587] bswap not recognized for memory

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2010-01-03 16:26 ---
Similar example not handled by bswap recognition:

typedef unsigned char u8;
typedef unsigned int u32;
union __anonunion
{
  u32 value;
  u8 bytes[4];
};
u32
acpi_ut_dword_byte_swap (u32 value)
{
  union __anonunion in;
  in.value = value;
  return (in.bytes[0]  8) | in.bytes[1])  8) | in.bytes[2])  8) |
in.bytes[3];
}

here we also hit the recursion depth of the bswap recognition.  Not so with

typedef unsigned char u8;
typedef unsigned int u32;
union __anonunion
{
  u32 value;
  u8 bytes[4];
};
u32
acpi_ut_dword_byte_swap (u32 value)
{
  union __anonunion in;
  in.value = value;
  return (((in.bytes[0]  8) | in.bytes[1])  16) | ((in.bytes[2]  8) |
in.bytes[3]);
}

but we do not handle

# VUSE .MEM_18
in$bytes$2_25 = in.bytes[2];

as bases (we probably could and it woudldn't be too hard - harder for
the case with pointer arithmetic though).  We end up trying with
in$bytes$2_25 as base.  Here:

case BIT_IOR_EXPR:
  source_expr1 = find_bswap_1 (rhs1_stmt, n1, limit - 1);
  if (!source_expr1)
return NULL_TREE;

  source_expr2 = find_bswap_1 (rhs2_stmt, n2, limit - 1);
  if (source_expr1 != source_expr2
  || n1.size != n2.size)
return NULL_TREE;

we'd have to detect the source exprs common memory and adjust the
piecewise symbolic numbers and create a common source expr.  The
idea would be to combine in.bytes[2] and in.bytes[3] to
V_C_E int (in.bytes).  As said it's going to me more complicated
for accesses via pointers, *p, *(p+1), ...

Note that once we extend this for memory we can as well do piecewise
memory copy analysis and do store/load merging on the tree level.


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


--- Comment #6 from redi at gcc dot gnu dot org  2010-01-03 16:28 ---
ok, understood - I'm looking at finishing the bind changes at the moment


-- 

redi at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|blocker |normal
   Priority|P1  |P3


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #7 from paolo dot carlini at oracle dot com  2010-01-03 16:34 
---
Let's keep a P1 for now, we really don't want to forget.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

   Severity|normal  |blocker
   Priority|P3  |P1


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



[Bug c/42199] A problem with -maltivec

2010-01-03 Thread galtgendo at o2 dot pl


--- Comment #2 from galtgendo at o2 dot pl  2010-01-03 16:46 ---
Created an attachment (id=19452)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19452action=view)
preprocessed sources

Finally I've got a response in the Gentoo bug.
Info:
Using built-in specs.
Target: powerpc-unknown-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.4.2/work/gcc-4.4.2/configure
--prefix=/usr --bindir=/usr/powerpc-unknown-linux-gnu/gcc-bin/4.4.2
--includedir=/usr/lib/gcc/powerpc-unknown-linux-gnu/4.4.2/include
--datadir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/4.4.2
--mandir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/4.4.2/man
--infodir=/usr/share/gcc-data/powerpc-unknown-linux-gnu/4.4.2/info
--with-gxx-include-dir=/usr/lib/gcc/powerpc-unknown-linux-gnu/4.4.2/include/g++-v4
--host=powerpc-unknown-linux-gnu --build=powerpc-unknown-linux-gnu
--enable-altivec --disable-fixed-point --with-ppl --with-cloog --enable-nls
--without-included-gettext --with-system-zlib --disable-checking
--disable-werror --enable-secureplt --disable-multilib --enable-libmudflap
--disable-libssp --enable-libgomp --enable-cld
--with-python-dir=/share/gcc-data/powerpc-unknown-linux-gnu/4.4.2/python
--disable-libgcj --enable-languages=c,c++,fortran --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.4.2 p1.0'
Thread model: posix
gcc version 4.4.2 (Gentoo 4.4.2 p1.0)

Command line:
 powerpc-unknown-linux-gnu-gcc \
 -std=gnu99 -E -Os -mcpu=G4 -mtune=G4 -maltivec -mabi=altivec -Wall \
 conftest.c -o conftest.i


-- 


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



[Bug rtl-optimization/42175] Slow compile and much memory use at -O1

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2010-01-03 16:52 ---
Maybe Zdenek has an idea why RTL LIM is so slow.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rakdver at gcc dot gnu dot
   ||org


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



[Bug rtl-optimization/42175] Slow compile and much memory use at -O1

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2010-01-03 17:03 ---
Well, obviously it is because

templatetypename T
gmic gmic::parse(...)
{
...
while (positioncommand_line.size()  !is_quit) {

loop body with 4000 lines of code (well, including lots of lines
with a few thousand chars, control flow, loops and function calls)

}
...
}

and DF never was good scaling to this kind of code.  Maybe not considering
this outermost loop in LIM will fix the slowness...  the limit is currently
1 basic-blocks, maybe a little large when considering non-innermost
loops.


-- 


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



[Bug driver/41564] -fdump-tree-all for lto does not work as expected

2010-01-03 Thread hjl at gcc dot gnu dot org


--- Comment #19 from hjl at gcc dot gnu dot org  2010-01-03 17:03 ---
Subject: Bug 41564

Author: hjl
Date: Sun Jan  3 17:03:38 2010
New Revision: 155591

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155591
Log:
Pass -dumpbase and -dumpdir to gcc for LTO

gcc/

2010-01-03  H.J. Lu  hongjiu...@intel.com

PR lto/41564
* common.opt: Add dumpdir.

* gcc.c (cc1_options): Add -dumpbase %B only if -dumpbase
isn't specified.
(option_map): Add --dumpdir.

* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add dumpdir.

* lto-wrapper.c (run_gcc): Add -dumpbase and -dumpdir for -o.

* opts.c (decode_options): Try dump_dir_name first if
dump_base_name isn't an absolute path.
(common_handle_option): Handle OPT_dumpdir.

* toplev.c (dump_dir_name): New.
(print_switch_values): Also ignore -dumpdir.

* toplev.h (dump_dir_name): New.

gcc/lto/

2010-01-03  H.J. Lu  hongjiu...@intel.com

PR lto/41564
* lto.c (DUMPBASE_SUFFIX): New.
(lto_execute_ltrans): Append a sequence number to -dumpbase
for LTRANS.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/common.opt
trunk/gcc/gcc.c
trunk/gcc/gcc.h
trunk/gcc/lto-wrapper.c
trunk/gcc/lto/ChangeLog
trunk/gcc/lto/lto.c
trunk/gcc/opts.c
trunk/gcc/toplev.c
trunk/gcc/toplev.h


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap comparison failures

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #12 from steven at gcc dot gnu dot org  2010-01-03 17:15 ---
Re. comment #11: If I configure with --without-build-config on
ia64-unknown-linux-gnu, with -fgcse-sm enabled, then the bootstrap completes
successfully (all languages except ada). If I configure without the extra
option, the bootstrap fails. You say that it might be just a compare-debug
failure -- what does that mean and what can/should I do about it?


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap comparison failures

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #13 from steven at gcc dot gnu dot org  2010-01-03 17:22 ---
For traceability: http://gcc.gnu.org/ml/gcc-patches/2009-12/msg01114.html
I somehow forgot to add the PR number to the commit.


-- 


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



[Bug lto/42528] ICE with -flto and -fsigned-char

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2010-01-03 17:31 ---
The same problem exists for builtin functions that return or take arguments
of type char *.  They change signature according to -f[un]signed-char which
causes for example

FAIL: gcc.c-torture/execute/builtins/strcpy-chk.c compilation,  -O2 -flto 
(internal compiler error)

when running with -funsigned-char on x86:

char p[32] = ;
int main ()
{
  if (__builtin___strcpy_chk (p + 1, vwxyz,
  __builtin_object_size (p + 1, 0)) != p + 1)
__builtin_abort ();
  return 0;
} 

$ /obj/trunk-g/gcc/xgcc -B/obj/trunk-g/gcc/ strcpy-chk.3.i -O -flto
-funsigned-char
In file included from :0:0:
strcpy-chk.3.i: In function 'main':
strcpy-chk.3.i:2:5: error: non-trivial conversion at assignment
unnamed-unsigned:8 *
unnamed-signed:8 *
D.2023_3 = D.2027_5;

strcpy-chk.3.i:2:5: internal compiler error: verify_stmts failed
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


-- 


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



[Bug driver/41564] -fdump-tree-all for lto does not work as expected

2010-01-03 Thread hjl dot tools at gmail dot com


--- Comment #20 from hjl dot tools at gmail dot com  2010-01-03 17:37 
---
Fixed.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

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


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



[Bug fortran/42597] New: ICE with procedure pointer initialized to null()

2010-01-03 Thread mrestelli at gmail dot com
The attached code (which seems fine to me) produces an internal
compiler error.

gfortran -c pp.f90 -o pp.o
f951: internal compiler error: in gfc_build_null_descriptor, at
fortran/trans-array.c:372

gfortran --version
GNU Fortran (GCC) 4.5.0 20091229 (experimental)


module mod_a
 implicit none
 public :: p_fun
 private

 abstract interface
  pure function intf(x) result(y)
   real, intent(in) :: x(:,:)
   real :: y(size(x,1),size(x,1),size(x,2))
  end function intf
 end interface

 !procedure(intf), pointer :: p_fun ! this works
 procedure(intf), pointer :: p_fun = null()

end module mod_a


-- 
   Summary: ICE with procedure pointer initialized to null()
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mrestelli at gmail dot com
 GCC build triplet: GNU Fortran (GCC) 4.5.0 20091229 (experimental)
  GCC host triplet: Linux 2.6.27-gentoo-r8 x86_64 AMD Turion(tm) 64 Mobile
Technolog


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


--- Comment #8 from redi at gcc dot gnu dot org  2010-01-03 17:57 ---
Created an attachment (id=19453)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19453action=view)
preliminary patch

I'm testing this, which is not ready for checkin, but updates std::bind to
handle rvalues and fixes this bug.

As well as fixing the affected testcases (done but not included in this patch)
and fixing the formatting, the decaying behaviour from the resolution to LWG
817 needs to be implemented:
http://home.roadrunner.com/~hinnant/issue_review/lwg-active.html#817

I *think* the patch is correct, but testsuite/30_threads/call_once/39909.cc
fails due to a front-end bug:
/home/redi/src/gcc/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/functional:1179:67:
sorry, unimplemented: unable to determine the declared type of expression
'declvalstd::reference_wrapperInc ()()'

A workaround for this is to change call_once to use bindvoid() instead of
bind() i.e.
Index: include/std/mutex
===
--- include/std/mutex   (revision 155587)
+++ include/std/mutex   (working copy)
@@ -722,12 +722,12 @@ namespace std
 call_once(once_flag __once, _Callable __f, _Args... __args)
 {
 #ifdef _GLIBCXX_HAVE_TLS
-  auto __bound_functor = std::bind(__f, __args...);
+  auto __bound_functor = std::bindvoid(__f, __args...),
   __once_callable = __bound_functor;
   __once_call = __once_call_impldecltype(__bound_functor);
 #else
   unique_lockmutex __functor_lock(__get_once_mutex());
-  __once_functor = std::bind(__f, __args...);
+  __once_functor = std::bindvoid(__f, __args...);
   __set_once_functor_lock_ptr(__functor_lock);
 #endif

(the ability to use this workaround was the main reason I fixed std::bindvoid
recently)


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #9 from paolo dot carlini at oracle dot com  2010-01-03 18:05 
---
Great. Let's go ahead this way, then!


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


--- Comment #10 from redi at gcc dot gnu dot org  2010-01-03 18:07 ---
OK

P.S.

(In reply to comment #8)
 
 (the ability to use this workaround was the main reason I fixed 
 std::bindvoid
 recently)

I think I've mentioned to Paolo in private mail that we could use bindR
(specifically, bindvoid) in several places because doing so should reduce
compile time, as it avoids using result_of and decltype to determine the return
type.  I haven't done so yet, because deducing the return type provides better
testcases for std::bind while I'm still working on it. Once the work is
complete, we should consider using bindR in mutex and future 


-- 


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



[Bug libfortran/42420] libgfortran fails to open large files on MINGW32

2010-01-03 Thread jb at gcc dot gnu dot org


--- Comment #8 from jb at gcc dot gnu dot org  2010-01-03 18:09 ---
Subject: Bug 42420

Author: jb
Date: Sun Jan  3 18:09:37 2010
New Revision: 155593

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155593
Log:
PR libfortran/42420 Large file capable stat for MingW

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/unix.c


-- 


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



[Bug lto/42528] ICE with -flto and -fsigned-char

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2010-01-03 18:12 ---
Which seems to be because of CCP which folds

D.2023_3 = __builtin___strcpy_chk (p[1], vwxyz[0], 31);

with unsigned LHS to

D.2023_3 = (unnamed-signed:8 *) __builtin_memcpy (p[1], vwxyz[0], 6);

which requires a temporary and thus exposes the mismatched types to the
verifier (we don't verify function assignments).

Which is also because lto1 doesn't understand -f[un]signed-char and always
has flag_signed_char set to the target default because

1044  /* Share char_type_node with whatever would be the default for the
target.
1045 char_type_node will be used for internal types such as
1046 va_list_type_node but will not be present in the lto stream.  */
1047  char_type_node
1048= DEFAULT_SIGNED_CHAR ? signed_char_type_node :
unsigned_char_type_node;

the comment is true, but still units with different setting of
flag_signed_char will have different va_list_type_node and different
function signatures for builtin string functions.

Now the above together with LTO1 not recognizing -f[un]signed-char
even breaks consistent but non-standard flag_signed_char setting.
Whatever is more important ...


-- 


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



[Bug lto/42580] Missing command line option file causes ICE

2010-01-03 Thread hjl dot tools at gmail dot com


--- Comment #4 from hjl dot tools at gmail dot com  2010-01-03 18:14 ---
Really fixed.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug java/42409] org.eclipse.jdt.internal.compiler.batch.GCCMain not found

2010-01-03 Thread jlpoole at pon dot net


--- Comment #2 from jlpoole at pon dot net  2010-01-03 18:21 ---
Created an attachment (id=19454)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19454action=view)
output under normal circumstances

In this output, the compiler incorrectly looks for the ecj.jar under
/usr/share/java (on my machine, there was no java directory under
/usr/share), when it should have used the path /usr/local/gcj/usr/share/java
where the ecj.jar file and other jar files had been properly placed.


-- 


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



[Bug lto/42528] ICE with -flto and -fsigned-char

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2010-01-03 18:21 ---
Created an attachment (id=19455)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19455action=view)
patch

Patch I am going to test.  Further testing appreciated.


-- 


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



[Bug java/42409] org.eclipse.jdt.internal.compiler.batch.GCCMain not found

2010-01-03 Thread jlpoole at pon dot net


--- Comment #3 from jlpoole at pon dot net  2010-01-03 18:23 ---
Created an attachment (id=19456)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19456action=view)
work-around output

To overcome the misdirected path, I created a java directory under /usr/share
and copied the /usr/local/gcj/usr/share/java files to /usr/share/java.  I then
successfully ran my command and the output is attached hereto.


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap comparison failures

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #14 from rguenth at gcc dot gnu dot org  2010-01-03 18:25 
---
It means that gcse-sm generates different code with -g vs. -g0 which likely
means that it is confused by the extra DEBUG_INSNs that appear with -g or
that its generated code depends on things like insn uids.


-- 


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



[Bug java/42409] org.eclipse.jdt.internal.compiler.batch.GCCMain not found

2010-01-03 Thread jlpoole at pon dot net


--- Comment #4 from jlpoole at pon dot net  2010-01-03 18:30 ---
I think I found the problem: 

the compiler is using an incorrect path, e.g. /usr/share/java, to find the
ecj.jar file and the other jar files,   libgcj-4.5.0.jar 
libgcj-tools-4.5.0.jar, when it should have used
/usr/local/gcj/usr/share/java.
See line 172 in the attachment gcj_fails-looking_for_ecj_in_wrong_path.txt  

Recall, I had installed using the DESTDIR parameter:
  make DESTDIR=/usr/local/gcj install
in order not to trash my Gentoo GCC built for my ARMv5t platform.

My work-around was to copy the three jar files under the
/usr/local/gcj/usr/share/java directory (where make install had placed them) to
/usr/share/java.

My work-around run is attached (gcj_ecj_moved.txt) to this bug.


-- 


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



[Bug java/42409] org.eclipse.jdt.internal.compiler.batch.GCCMain not found

2010-01-03 Thread jlpoole at pon dot net


--- Comment #5 from jlpoole at pon dot net  2010-01-03 18:43 ---
Here's my configuration log:

plug build # pwd
/mnt/seagate2/download/gnu/build
plug build # head config.log
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.64.  Invocation command line was

  $ ../trunk/configure --enable-languages=java

## - ##
## Platform. ##
plug build # 


-- 


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



[Bug java/42409] org.eclipse.jdt.internal.compiler.batch.GCCMain not found

2010-01-03 Thread jakub at gcc dot gnu dot org


--- Comment #6 from jakub at gcc dot gnu dot org  2010-01-03 18:55 ---
That's just a misunderstanding what DESTDIR is.  DESTDIR just says a directory
where the / dir of installed files starts.  It is used when you e.g. want to
install everything into a temporary directory to package it up later (e.g.
using tar, cpio, rpm, ...).  If /usr/local/gcj/usr/* is where you want gcc to
finally reside, you shouldn't use DESTDIR, but instead configure with --prefix
/usr/local/gcj/usr.


-- 


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



[Bug lto/42581] gcc -v doesn't work with lto

2010-01-03 Thread hjl dot tools at gmail dot com


--- Comment #2 from hjl dot tools at gmail dot com  2010-01-03 19:16 ---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2010-01/msg00116.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2010-
   ||01/msg00116.html


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



[Bug rtl-optimization/42175] Slow compile and much memory use at -O1

2010-01-03 Thread rakdver at kam dot mff dot cuni dot cz


--- Comment #8 from rakdver at kam dot mff dot cuni dot cz  2010-01-03 
19:37 ---
Subject: Re:  Slow compile and much memory  use
at -O1

 --- Comment #7 from rguenth at gcc dot gnu dot org  2010-01-03 17:03 
 ---
 Well, obviously it is because
 
 templatetypename T
 gmic gmic::parse(...)
 {
 ...
 while (positioncommand_line.size()  !is_quit) {
 
 loop body with 4000 lines of code (well, including lots of lines
 with a few thousand chars, control flow, loops and function calls)
 
 }
 ...
 }
 
 and DF never was good scaling to this kind of code.  Maybe not considering
 this outermost loop in LIM will fix the slowness...  the limit is currently
 1 basic-blocks, maybe a little large when considering non-innermost
 loops.

1 bbs seems way too large -- even for innermost loops.


-- 


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



[Bug java/41745] Segmentation fault when ecj.jar is run as a binary compiled by gcj

2010-01-03 Thread andreast at gcc dot gnu dot org


--- Comment #7 from andreast at gcc dot gnu dot org  2010-01-03 19:38 
---
[tc:~] andreast% /usr/local/bin/gcj45 -o ecj
--main=org.eclipse.jdt.internal.compiler.batch.Main ecj.jar
[tc:~] andreast% vi HelloWorld.java

public class HelloWorld {
  public static void main(String args[]) {
System.out.println(Hello World!);
  }
}

[tc:~] andreast% setenv LD_LIBRARY_PATH /usr/local/lib/gcc45
[tc:~] andreast% ./ecj HelloWorld.java
[tc:~] andreast% gij45 HelloWorld
Hello World!

[tc:~] andreast% uname -ra
FreeBSD tc.andreas.nets 9.0-CURRENT FreeBSD 9.0-CURRENT #0 r201405M: Sat Jan  2
22:32:53 CET 2010
andre...@tc.andreas.nets:/usr/obj/export/devel/fbsd/head/src/sys/TC  i386

[tc:~] andreast% gcj45 -v
Using built-in specs.
Reading specs from
/usr/local/lib/gcc45/gcc/i386-portbld-freebsd9.0/4.5.0/../../../libgcj.spec
rename spec startfile to startfileorig
rename spec lib to liborig
COLLECT_GCC=gcj45
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc45/gcc/i386-portbld-freebsd9.0/4.5.0/lto-wrapper
Target: i386-portbld-freebsd9.0
Configured with: ./../gcc-4.5-20091231/configure --disable-nls
--libdir=/usr/local/lib/gcc45 --libexecdir=/usr/local/libexec/gcc45
--program-suffix=45 --with-as=/usr/local/bin/as --with-gmp=/usr/local
--with-gxx-include-dir=/usr/local/lib/gcc45/include/c++/
--with-libiconv-prefix=/usr/local --with-system-zlib --disable-rpath
--prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/gcc45
--build=i386-portbld-freebsd9.0
Thread model: posix
gcc version 4.5.0 20091231 (experimental) (GCC) 


-- 


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



[Bug middle-end/42577] [4.4 Regression] array bounds false positive with -O3, goes away with -O2

2010-01-03 Thread matt at use dot net


--- Comment #8 from matt at use dot net  2010-01-03 19:57 ---
can this be backported to 4.4 as well so I can integrate it into our 4.4-based
toolchain?


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap-debug comparison failures

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #15 from steven at gcc dot gnu dot org  2010-01-03 20:02 ---
Created an attachment (id=19457)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19457action=view)
Ignore all DEBUG_INSNs in store-motion.c

With this patch I can complete a bootstrap on ia64-unknown-linux-gnu with
-fgcse-sm. Can't tell whether the patch makes sense, though :-)


-- 


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



[Bug target/36043] gcc reads 8 bytes for a struct of size 6 which leads to sigsegv

2010-01-03 Thread matt at use dot net


--- Comment #14 from matt at use dot net  2010-01-03 20:30 ---
Still happening on 4.5.0 20091228 (and gcc 4.4.1) on Ubuntu 9.10/amd64). I
found that it goes away in 3 separate instances when turning on
-finline-functions. The last 2 instances of memory corruption I am running into
are functions in vtables, which can't be inlined (and therefore work around
this bug) until de-virtualization is eliminated.

This seems like a pretty serious and common problem; is there any chance it
will be fixed in 4.5?


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #11 from paolo dot carlini at oracle dot com  2010-01-03 20:57 
---
By the way, Jon, I don't think we should delay committing this work only
because of DR 817, after all isn't even Ready...


-- 


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread paolo dot carlini at oracle dot com


--- Comment #12 from paolo dot carlini at oracle dot com  2010-01-03 21:02 
---
... if we have something rather satisfactory wrt all the other isses /
testcases we are aware of in this area the sooner we commit the code, the
better: I'm sure that Daniel can help testing it further on his code base:
worst case, if after the branch point things look really bad, we revert the
whole package for the release, luckily we are not talking about tons of code
intertwined with the rest of the library. Only, we have to keep the eyes open
the next few weeks. We can make it ;)


-- 


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



[Bug lto/42598] New: -v/-m* don't work with plugin

2010-01-03 Thread hjl dot tools at gmail dot com
Plugin never passes -v -mtune=xxx to lto-wrapper.


-- 
   Summary: -v/-m* don't work with plugin
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl dot tools at gmail dot com


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



[Bug lto/42598] -v/-m* don't work with plugin

2010-01-03 Thread hjl dot tools at gmail dot com


--- Comment #1 from hjl dot tools at gmail dot com  2010-01-03 21:50 ---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2010-01/msg00119.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2010-
   ||01/msg00119.html


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



[Bug libstdc++/42593] [c++0x] [4.5 Regression] std::bind not assignable to std::function

2010-01-03 Thread redi at gcc dot gnu dot org


--- Comment #13 from redi at gcc dot gnu dot org  2010-01-03 22:10 ---
Created an attachment (id=19458)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19458action=view)
updated patch

this fixes the formatting in the previous patch, includes the call_once
workaround, and updates the testsuite.
This patch disables the volatile-qualified _Bind::operator() overloads with
'#if 0' because I'm not smart enough to figure out how to support that.  If
those overloads are enabled then you get errors when trying to pass
reference_wrapper or _Bind as an argument to _Bind::operator().
IMHO we can live without volatile support for 4.5 because I don't think it's a
widely-used feature.

As well as this bug, it fixes bug 35569 and its dup

I want to do some more tests to be sure this is ready


-- 

redi at gcc dot gnu dot org changed:

   What|Removed |Added

  Attachment #19453|0   |1
is obsolete||


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



[Bug lto/42598] -v/-m* don't work with plugin

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2010-01-03 22:29 ---


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


-- 

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



[Bug driver/42520] lto1 does not see -march and -mtune options with -fuse-linker-plugin

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2010-01-03 22:29 ---
*** Bug 42598 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||hjl dot tools at gmail dot
   ||com


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



[Bug target/36043] gcc reads 8 bytes for a struct of size 6 which leads to sigsegv

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2010-01-03 22:32 
---
The issue is in a very twisted piece of GCC where the chances to break sth are
bigger that to fix sth ;)

And it isn't a regression, so it's not on too many peoples radar (nor does
it seem to happen in practice and thus affect those who may be able to fix it).

But, let's CC some more people ;)


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rth at gcc dot gnu dot org
  Known to fail|4.1.2 4.3.3 4.4.0   |4.1.2 4.3.3 4.4.0 4.5.0


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap-debug comparison failures

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #16 from rguenth at gcc dot gnu dot org  2010-01-03 22:33 
---
If it also passes testing it is ok for trunk (it does make sense to me).


-- 


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



[Bug middle-end/42577] [4.4 Regression] array bounds false positive with -O3, goes away with -O2

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2010-01-03 22:33 ---
The patch should apply more-or-less literally to the 4.4 branch.


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap-debug comparison failures

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #17 from steven at gcc dot gnu dot org  2010-01-03 22:41 ---
Subject: Bug 41862

Author: steven
Date: Sun Jan  3 22:41:22 2010
New Revision: 155596

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155596
Log:
PR rtl-optimization/41862
* store-motion.c (store_killed_in_insn, compute_store_table,
remove_reachable_equiv_notes, replace_store_insn,
build_store_vectors): Ignore all DEBUG_INSNs.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/store-motion.c


-- 


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



[Bug testsuite/42583] [4.5 Regression] FAIL: gfortran.dg/gomp/recursion1.f90: gfortran: libgomp.spec: No such file or directory

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2010-01-03 22:45 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug testsuite/42583] [4.5 Regression] FAIL: gfortran.dg/gomp/recursion1.f90: gfortran: libgomp.spec: No such file or directory

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2010-01-03 22:45 ---
Subject: Bug 42583

Author: rguenth
Date: Sun Jan  3 22:44:56 2010
New Revision: 155597

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155597
Log:
2010-01-03  Richard Guenther  rguent...@suse.de

PR testsuite/42583
* gfortran.dg/gomp/recursion1.f90: Remove.

libgomp/
* testsuite/libgomp.fortran/recursion1.f90: New testcase.

Added:
trunk/libgomp/testsuite/libgomp.fortran/recursion1.f90
  - copied unchanged from r155591,
trunk/gcc/testsuite/gfortran.dg/gomp/recursion1.f90
Removed:
trunk/gcc/testsuite/gfortran.dg/gomp/recursion1.f90
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libgomp/ChangeLog


-- 


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



[Bug target/41605] Static linking of libgcc/libgfortran/libstdc++ can cause inconsistent symbol resolution.

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #13 from rguenth at gcc dot gnu dot org  2010-01-03 22:45 
---
Is this bug now fixed?


-- 


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



[Bug rtl-optimization/41862] [4.5 Regression] -fgcse-sm causes bootstrap-debug comparison failures

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #18 from steven at gcc dot gnu dot org  2010-01-03 22:46 ---
Works for me now.


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug tree-optimization/18219] [4.3/4.4 Regression] bloats code by 31%

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #30 from steven at gcc dot gnu dot org  2010-01-03 22:57 ---
With the following compiler:
$ ./xgcc --version
xgcc (GCC) 4.5.0 20091228 (experimental) [trunk revision 155486]
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


I get the following size with -m32 for the test case of comment #0:
$ ./xgcc -B. -c t.c -m32 -Os -fno-ivopts -o tOsi.o
$ ./xgcc -B. -c t.c -m32 -Os -o tOs.o
$ size tOs*
   textdata bss dec hex filename
 45   0   0  45  2d tOsi.o
 42   0   0  42  2a tOs.o
$ 


And I get the following size with -m64:
$ ./xgcc -B. -c t.c -Os -o tOs.o
$ ./xgcc -B. -c t.c -Os -fno-ivopts -o tOsi.o
$ size tOs*
   textdata bss dec hex filename
 78   0   0  78  4e tOsi.o
 89   0   0  89  59 tOs.o
$ 


This is, therefore, fixed on the trunk for GCC 4.5.


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to work||4.5.0
Summary|[4.3/4.4/4.5 Regression]|[4.3/4.4 Regression] bloats
   |bloats code by 31%  |code by 31%


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



[Bug target/39725] [4.5 Regression][cond-optab] MIPS pessimizations on floating-point

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #1 from steven at gcc dot gnu dot org  2010-01-03 23:06 ---
This bug needs TLC from a MIPS person. At least a confirmation would be nice.


-- 

steven at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug c/39959] [4.5 Regression] IMA is broken

2010-01-03 Thread steven at gcc dot gnu dot org


--- Comment #16 from steven at gcc dot gnu dot org  2010-01-03 23:08 ---
Can we close this bug as WONTFIX, and remove IMA for GCC 4.5?


-- 


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



[Bug tree-optimization/18219] [4.3/4.4 Regression] bloats code by 31%

2010-01-03 Thread rguenth at gcc dot gnu dot org


--- Comment #31 from rguenth at gcc dot gnu dot org  2010-01-03 23:14 
---
Heh.  I wonder how we can reliably add testcases for code size issues ...
can we either dump size estimates or extract object .text section sizes?
Ian may know arm people who I suspect would be interested in contributing
infrastructure for this.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||iant at google dot com


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



[Bug c++/40561] [4.3 Regression] code does not compile -- compiles fine when replacing != with !(==)

2010-01-03 Thread mikpe at it dot uu dot se


--- Comment #10 from mikpe at it dot uu dot se  2010-01-03 23:15 ---
(In reply to comment #9)
 Fascinating indeed.  If someone can bisect where during 4.4 development we
 fixed this again or where during 4.3 development we broke it that would be
 nice.

This test case was fixed for 4.4 by r142961, the fix for PR38564.

This test case fails with a recent 4.3, but r142961 applies cleanly and fixes
the test case. I haven't done any testsuite runs on that combo yet, however.


-- 

mikpe at it dot uu dot se changed:

   What|Removed |Added

 CC||mikpe at it dot uu dot se


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



[Bug c/42596] Integer/Floating point vector casts generate XMM register moves from and to the same register

2010-01-03 Thread adam at consulting dot net dot nz


--- Comment #3 from adam at consulting dot net dot nz  2010-01-03 23:20 
---
This is a demo of poor code generation with XMM global register variables
(hardregs) and the vector extensions. Intrinsics are too low level. The
vector extensions can continue to work on a platform without x86 intrinsics
(just replace register variable definitions with, e.g., __thread variable
definitions on a foreign architecture).

test_fp_vectors_containing_fp_data() indicates that code generation can be
optimal with XMM global register variables+vector extensions. But only if the
register variables are defined as the same type as the calculation. This is not
a reasonable restriction for an XMM global register variable that has to
contain integer and/or floating point data over the lifetime of a program.


-- 


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



[Bug c/42599] New: arm-elf-gcc 4.4.2 internal compiler error in expand_expr_addr_1 at expr.c:6835

2010-01-03 Thread conr2286 at vandals dot uidaho dot edu
Host System:  OS/X 10.6.2

Target System:  arm7tdmi

Compiler Configuration Options:
jconradw:~ conr2286$ arm-elf-gcc --v
Using built-in specs.
Target: arm-elf
Configured with: ../gcc-4.4.2/configure --target=arm-elf
--prefix=/Users/mfischer/Projekte/development/yagarto/install --disable-nls
--disable-shared --disable-threads --with-gcc --with-gnu-ld --with-gnu-as
--with-dwarf2 --enable-languages=c,c++ --enable-interwork --enable-multilib
--with-newlib --with-headers=../newlib-1.18.0/newlib/libc/include
--disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-libgomp
-v
Thread model: single
gcc version 4.4.2 (GCC) 

Failing Command Line:
/users/conr2286/yagarto/yagarto-4.4.2/bin/arm-elf-gcc -c -Wall -Wextra -Wshadow
-Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare
-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-declarations -Wunused -D RUN_MODE=RUN_FROM_ROM -D GCC_ARM7 
-I/Users/conr2286/projects/LPC2148Demo
-I/Users/conr2286/projects/LPC2148Demo/FreeRTOS/include -mcpu=arm7tdmi
-Tlpc2148-rom.ld -g -O3 -fomit-frame-pointer -D CFG_CONSOLE_USB -D CFG_USB -D
CFG_USB_SER -D CFG_I2C -D CFG_SPI -D CFG_RTC -D CFG_IAP -D CFG_WDT -D CFG_FIQ
-D CFG_SWI -D CFG_PWM -D CFG_ABORT -D CFG_RAM_INTS -D CFG_MD -D CFG_MEM -D
CFG_BEEP -D CFG_MISC -D CFG_LED -D CFG_GPS -D CFG_SENSORS -D CFG_LCD -D CFG_KBD
-D CFG_FATFS -D CFG_UIP -D CFG_TELNETD -D CFG_HTTPD -D CFG_SNTP -D CFG_DHCP -D
CFG_AT24C1024 -D CFG_LM75 -D CFG_M25LC512 -D CFG_INTONLY  -save-temps rtcISR.c
-o rtcISR.o

Preprocessed File:  rtcISR.i  (to be attached)


-- 
   Summary: arm-elf-gcc 4.4.2 internal compiler error in
expand_expr_addr_1 at expr.c:6835
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: conr2286 at vandals dot uidaho dot edu


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



[Bug c/42599] arm-elf-gcc 4.4.2 internal compiler error in expand_expr_addr_1 at expr.c:6835

2010-01-03 Thread conr2286 at vandals dot uidaho dot edu


--- Comment #1 from conr2286 at vandals dot uidaho dot edu  2010-01-04 
00:26 ---
Created an attachment (id=19459)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19459action=view)
Preprocessed rtcISR.c


-- 


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



[Bug libstdc++/42600] New: istream.eof() returns wrong value after reading bool

2010-01-03 Thread d dot frey at gmx dot de
The following code prints true with 4.3.3, but false with 4.4.2 and
4.5-20091231. I think printing true is correct or am I missing something?

#include iostream
#include iomanip
#include sstream

int main()
{
  bool result;
  std::istringstream is( true );
  is  std::boolalpha  result;
  std::cout  std::boolalpha  is.eof()  std::endl;
}


-- 
   Summary: istream.eof() returns wrong value after reading bool
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: d dot frey at gmx dot de


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



[Bug driver/42520] lto1 does not see -march and -mtune options with -fuse-linker-plugin

2010-01-03 Thread hjl at gcc dot gnu dot org


--- Comment #7 from hjl at gcc dot gnu dot org  2010-01-04 00:53 ---
Subject: Bug 42520

Author: hjl
Date: Mon Jan  4 00:52:50 2010
New Revision: 155601

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=155601
Log:
Pass -m* and -v to -plugin-opt

gcc/

2010-01-03  H.J. Lu  hongjiu...@intel.com

PR lto/42520
* gcc.c (LINK_COMMAND_SPEC): Pass -m* and -v to -plugin-opt.

lto-plugin/

2010-01-03  H.J. Lu  hongjiu...@intel.com

PR lto/42520
* lto-plugin.c (exec_lto_wrapper): Output lto-wrapper command
if -v is passed.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/gcc.c
trunk/lto-plugin/ChangeLog
trunk/lto-plugin/lto-plugin.c


-- 


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



[Bug middle-end/42577] [4.4 Regression] array bounds false positive with -O3, goes away with -O2

2010-01-03 Thread matt at use dot net


--- Comment #10 from matt at use dot net  2010-01-04 01:04 ---
what I mean to ask is: can this fix be committed to the 4.4 branch? I'd prefer
to minimize the number of local patches we apply to our custom build.

Thanks for the quick fix, by the way! :)


-- 


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



  1   2   >