[Bug c++/41187] g++.dg/debug/dwarf2/namespace-1.C failed on Linux/ia64

2009-08-30 Thread dodji at gcc dot gnu dot org


--- Comment #7 from dodji at gcc dot gnu dot org  2009-08-30 07:26 ---
Subject: Bug 41187

Author: dodji
Date: Sun Aug 30 07:26:29 2009
New Revision: 151223

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151223
Log:
Fix c++/41187

gcc/testsuite/ChangeLog:
PR c++/41187
* g++.dg/debug/dwarf2/namespace-1.C: Use a loosier regexp to
take ia64 assembly comments syntax in account.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C


-- 


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



[Bug c++/41187] g++.dg/debug/dwarf2/namespace-1.C failed on Linux/ia64

2009-08-30 Thread dodji at gcc dot gnu dot org


--- Comment #8 from dodji at gcc dot gnu dot org  2009-08-30 07:44 ---
Fixed in trunk.


-- 

dodji at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/37425] Fortran 2003: GENERIC bindings as operators

2009-08-30 Thread domob at gcc dot gnu dot org


--- Comment #5 from domob at gcc dot gnu dot org  2009-08-30 08:26 ---
Subject: Bug 37425

Author: domob
Date: Sun Aug 30 08:26:38 2009
New Revision: 151224

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151224
Log:
2009-08-30  Daniel Kraft  

PR fortran/37425
* dump-parse-tree.c (show_typebound_proc): Renamed from
`show_typebound'
and accept gfc_typebound_proc and name instead of the symtree, needed
for intrinsic operator output.
(show_typebound_symtree): New method calling `show_typebound_proc'.
(show_f2k_derived): Output type-bound operators also.
(show_symbol): Moved output of `Procedure bindings:' label to
`show_f2k_derived'.
* gfortran.texi (Fortran 2003 status): Mention support of
array-constructors with explicit type specification, type-bound
procedures/operators, type extension, ABSTRACT types and DEFERRED.
Link to Fortran 2003 wiki page.
(Fortran 2008 status): Fix typo.  Link to Fortran 2008 wiki page.
* gfc-internals.texi (Type-bound Procedures): Document the new
members/attributes of gfc_expr.value.compcall used for type-bound
operators.
(Type-bound Operators): New section documenting their internals.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/dump-parse-tree.c
trunk/gcc/fortran/gfc-internals.texi
trunk/gcc/fortran/gfortran.texi


-- 


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



[Bug middle-end/39832] [4.4/4.5 Regression] program built by x86_64-pc-mingw32-g++ run crash, maybe for _Unwind_SjLj_Unregister or __dyn_tls_dtor

2009-08-30 Thread ktietz at gcc dot gnu dot org


--- Comment #8 from ktietz at gcc dot gnu dot org  2009-08-30 08:27 ---
(In reply to comment #7)
> x86_64-pc-mingw32 is not a primary or secondary platform, moving to P4.
> Please restore to P3 if this also appears on i686-mingw32 or another
> primary or secondary platform.
> 

Could you please re-test your failure. It seems to be a duplicate of PR/41184.
It is fix on trunk and on 4.4.x branch.

Cheers,
Kai


-- 

ktietz at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu dot
   ||org


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



[Bug fortran/37425] Fortran 2003: GENERIC bindings as operators

2009-08-30 Thread domob at gcc dot gnu dot org


--- Comment #6 from domob at gcc dot gnu dot org  2009-08-30 08:30 ---
This is fully implemented now (except some side-issues which have their own
PRs, like PR 41177 and PR 41178), closing.


-- 

domob at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug other/38920] dw2 exceptions don't work.

2009-08-30 Thread ktietz at gcc dot gnu dot org


--- Comment #11 from ktietz at gcc dot gnu dot org  2009-08-30 08:33 ---
(In reply to comment #8)
> (In reply to comment #7)
> > AFAICT DW2 unwind has never worked on x86_64-mingw32, which is why Kai made
> > sjlj the default EH model for that target.
> > http://gcc.gnu.org/ml/gcc-patches/2007-12/msg00273.html
> 
> ok, with sjlj and shared libgcc exceptions seem to work across dlls.
> 

This is right, that dw2 exception handling doesn't work for x64. As the x86 is
absolutely incompatible to the x64 exception handling, there is the support of
SEH2 unwind-data to be added. I begun already with support on gas to generate
the pdata/xdata data by pseudo-opcodes. I plan to support this feature for
4.6.x (and maybe a 4.5.x). So for now, just sjlj exception handling is possible
for x64 windows.


-- 


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



[Bug driver/39356] assembler isn't called

2009-08-30 Thread ktietz at gcc dot gnu dot org


--- Comment #17 from ktietz at gcc dot gnu dot org  2009-08-30 08:35 ---
(In reply to comment #16)
> (In reply to comment #15)
> > Is there a chance that we get this fixed soon?
> > 
> > Rainer
> > 
> 
> Well, I would like to fix this. Better now then later. But I couldn't find the
> real reason for this issue. The patch above solved the problem on 4.4.0 branch
> some time ago, but now it seems to be a different issue. But AFAICT is is
> related to chkstk/alloca here.
> 
> Cheers,
> Kai
> 

Could you please test if issue still exist for trunk and current 4.4 branch. It
could be a duplicate of PR/41184.

Cheers,
Kai


-- 


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



[Bug c++/41153] ICE in building Qt4 src/core

2009-08-30 Thread t66667 at gmail dot com


--- Comment #3 from t7 at gmail dot com  2009-08-30 09:43 ---
Only encountered with c++ code.


-- 

t7 at gmail dot com changed:

   What|Removed |Added

  GCC build triplet||i686-linux
   GCC host triplet|x86_64  |x86_64-w64-mingw32


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



[Bug fortran/39626] Fortran 2008: Implement BLOCK construct

2009-08-30 Thread domob at gcc dot gnu dot org


--- Comment #2 from domob at gcc dot gnu dot org  2009-08-30 10:00 ---
I'm not sure it needs really that much changes...  After all, the semantics can
probably be simulated completely via replacing the BLOCK-constructs with
contained procedures that are called where the BLOCK originally was?

That's of course not a nice implementation and I do not think we should
actually do this, but I believe that there needs not be that much change --
I'll work on this and try to find out a good way.


-- 

domob at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |domob at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2009-04-03 16:43:38 |2009-08-30 10:00:24
   date||


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



[Bug regression/41188] New: move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de
This bug was discovered while adapting MSP430 port for GCC 4.x and is
persistent at least in both GCC 4.2.4 and 4.3.4.
This description consists of a problem description, a detailed reason analysis
pointing out exact GCC functions, and a proposed solution.
---
1. Problem
Compiling the following code for MSP430 (16-bit RISC) with maximum optimization
(-O2) causes an "internal error int redirect_branch_edge()" failure:
-
for (volatile long t = 0; t < 1024; t++) ;
-
The problem is related to the "cbranchsi" instruction, that clobbers one of
compared registers. Here is a quote from MD file:
-
(define_insn "*cbranchsi_others"
  [(parallel [(set (pc)
 (if_then_else (match_operator:SI 1 "inequality_operator"
[(match_operand:SI 2 "register_operand" "r")
 (match_operand:SI 3 "general_operand" "rmi")])
  (label_ref (match_operand 0 "" ""))
  (pc)))
  (clobber (match_dup 2))])] ;<== Attention! clobber (match_dup) !!!
-
2. Reason
2.1 The "*cbranchsi_others" INSN clobbers one of its arguments [clobber
(match_dup 2)]. During loop optimization, the source register (operand 2) gets
changed, while the register reference in CLOBBER attribute does not. After such
change, instruction is no longer recognizable according to machine decsription,
and the compilation fails.
2.2 The move_invariant_reg() function in loop-invariant.c performs register
renaming based on "register use lists". When the "cbranchsi_others" instruction
gets scanned for register uses, the CLOBBER use does not get recorded, and
thus, does not get changed later, resulting in an erroneous INSN pattern:
- Before move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI 30)
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))
])
- After move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI31) <= CHANGED 30 to 31
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))  <=== NOT CHANGED 30 TO 31
])
-
Obviously, the modification makes the instruction invalid, as it uses and
clobbers different registers, and thus, no existing INSN pattern matches it.
2.3 The "register use lists" are built using the record_uses() function in
loop-invariant.c based on DF use records. The record_uses() function considers
DF_INSN_USES() and DF_INSN_EQ_USES() lists (only DF_INSN_USES in gcc 4.2.4).
CLOBBERed registers are put into DF_INSN_DEFS() list, that is not considered in
record_uses(). That way, a CLOBBER attribute remains unchanged, when used
registers are renamed.
2.4 The df_defs_record() function in df-scan.c places both SET and CLOBBER
references into DF_INSN_DEFS() list:
  if (code == SET || code == CLOBBER)
{
  //...
  df_def_record_1 (collection_rec, x, bb, insn, clobber_flags);
}
2.5 Summary. Invariant moving optimization in loop-invariant.c disrupts INSN
patterns that USE and CLOBBER the same register, making them invalid.
-
3. Proposed solution.
3.1. For my needs, I have patched loop-invariant.c by adding the following
function to explicitly record all CLOBBER references from INSN that match USE
references:
static void record_clobber_uses_workaround(rtx insn, struct invariant *inv,
struct df_ref *use)
{
rtx pat = PATTERN(insn);
if (GET_CODE(pat) == PARALLEL)
{
int len = XVECLEN(pat, 0);
int idx = 0;

for (idx = 0; idx < len; idx++)
{
rtx subexp = XVECEXP(pat, 0, idx);
if (GET_CODE(subexp) == CLOBBER)
{
if (XEXP (subexp, 0) == *DF_REF_REAL_LOC (use))
record_use (inv->def, &XEXP (subexp,
0), DF_REF_INSN (use));
}   
}
}
}
The record_uses() function got patched accordingly:
 if (inv)
+  {
record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+   record_clobber_uses_workaround(insn, inv, use); 
+  }
3.2. I would recommend re-analyzing the more common case, when a single
instruction uses and defines the same register, and decide, whether loop
optimizations in loop-invariant.c should move such register. The bug does not
seem to affect most architectures, however, specific INSN patterns, as
described above, do trigger it. Maybe, a common function returning the list of
all "match_dup"-ed references for a given INSN and an operand to detect such
cases in a uniform way.


-- 
   Summary: move_inva

[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #1 from shcherbakov at daad-alumni dot de  2009-08-30 10:10 
---
A misprint in the description: 
After move_invariant_reg() the insn_invalid_p(insn) returns 1 meaning that the
INSN is no longer valid.


-- 


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



[Bug regression/41189] New: move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de
This bug was discovered while adapting MSP430 port for GCC 4.x and is
persistent at least in both GCC 4.2.4 and 4.3.4.
This description consists of a problem description, a detailed reason analysis
pointing out exact GCC functions, and a proposed solution.
---
1. Problem
Compiling the following code for MSP430 (16-bit RISC) with maximum optimization
(-O2) causes an "internal error int redirect_branch_edge()" failure:
-
for (volatile long t = 0; t < 1024; t++) ;
-
The problem is related to the "cbranchsi" instruction, that clobbers one of
compared registers. Here is a quote from MD file:
-
(define_insn "*cbranchsi_others"
  [(parallel [(set (pc)
 (if_then_else (match_operator:SI 1 "inequality_operator"
[(match_operand:SI 2 "register_operand" "r")
 (match_operand:SI 3 "general_operand" "rmi")])
  (label_ref (match_operand 0 "" ""))
  (pc)))
  (clobber (match_dup 2))])] ;<== Attention! clobber (match_dup) !!!
-
2. Reason
2.1 The "*cbranchsi_others" INSN clobbers one of its arguments [clobber
(match_dup 2)]. During loop optimization, the source register (operand 2) gets
changed, while the register reference in CLOBBER attribute does not. After such
change, instruction is no longer recognizable according to machine decsription,
and the compilation fails.
2.2 The move_invariant_reg() function in loop-invariant.c performs register
renaming based on "register use lists". When the "cbranchsi_others" instruction
gets scanned for register uses, the CLOBBER use does not get recorded, and
thus, does not get changed later, resulting in an erroneous INSN pattern:
- Before move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI 30)
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))
])
- After move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI31) <= CHANGED 30 to 31
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))  <=== NOT CHANGED 30 TO 31
])
-
Obviously, the modification makes the instruction invalid, as it uses and
clobbers different registers, and thus, no existing INSN pattern matches it.
2.3 The "register use lists" are built using the record_uses() function in
loop-invariant.c based on DF use records. The record_uses() function considers
DF_INSN_USES() and DF_INSN_EQ_USES() lists (only DF_INSN_USES in gcc 4.2.4).
CLOBBERed registers are put into DF_INSN_DEFS() list, that is not considered in
record_uses(). That way, a CLOBBER attribute remains unchanged, when used
registers are renamed.
2.4 The df_defs_record() function in df-scan.c places both SET and CLOBBER
references into DF_INSN_DEFS() list:
  if (code == SET || code == CLOBBER)
{
  //...
  df_def_record_1 (collection_rec, x, bb, insn, clobber_flags);
}
2.5 Summary. Invariant moving optimization in loop-invariant.c disrupts INSN
patterns that USE and CLOBBER the same register, making them invalid.
-
3. Proposed solution.
3.1. For my needs, I have patched loop-invariant.c by adding the following
function to explicitly record all CLOBBER references from INSN that match USE
references:
static void record_clobber_uses_workaround(rtx insn, struct invariant *inv,
struct df_ref *use)
{
rtx pat = PATTERN(insn);
if (GET_CODE(pat) == PARALLEL)
{
int len = XVECLEN(pat, 0);
int idx = 0;

for (idx = 0; idx < len; idx++)
{
rtx subexp = XVECEXP(pat, 0, idx);
if (GET_CODE(subexp) == CLOBBER)
{
if (XEXP (subexp, 0) == *DF_REF_REAL_LOC (use))
record_use (inv->def, &XEXP (subexp,
0), DF_REF_INSN (use));
}   
}
}
}
The record_uses() function got patched accordingly:
 if (inv)
+  {
record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+   record_clobber_uses_workaround(insn, inv, use); 
+  }
3.2. I would recommend re-analyzing the more common case, when a single
instruction uses and defines the same register, and decide, whether loop
optimizations in loop-invariant.c should move such register. The bug does not
seem to affect most architectures, however, specific INSN patterns, as
described above, do trigger it. Maybe, a common function returning the list of
all "match_dup"-ed references for a given INSN and an operand to detect such
cases in a uniform way.


-- 
   Summary: move_inva

[Bug regression/41190] New: move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de
This bug was discovered while adapting MSP430 port for GCC 4.x and is
persistent at least in both GCC 4.2.4 and 4.3.4.
This description consists of a problem description, a detailed reason analysis
pointing out exact GCC functions, and a proposed solution.
---
1. Problem
Compiling the following code for MSP430 (16-bit RISC) with maximum optimization
(-O2) causes an "internal error int redirect_branch_edge()" failure:
-
for (volatile long t = 0; t < 1024; t++) ;
-
The problem is related to the "cbranchsi" instruction, that clobbers one of
compared registers. Here is a quote from MD file:
-
(define_insn "*cbranchsi_others"
  [(parallel [(set (pc)
 (if_then_else (match_operator:SI 1 "inequality_operator"
[(match_operand:SI 2 "register_operand" "r")
 (match_operand:SI 3 "general_operand" "rmi")])
  (label_ref (match_operand 0 "" ""))
  (pc)))
  (clobber (match_dup 2))])] ;<== Attention! clobber (match_dup) !!!
-
2. Reason
2.1 The "*cbranchsi_others" INSN clobbers one of its arguments [clobber
(match_dup 2)]. During loop optimization, the source register (operand 2) gets
changed, while the register reference in CLOBBER attribute does not. After such
change, instruction is no longer recognizable according to machine decsription,
and the compilation fails.
2.2 The move_invariant_reg() function in loop-invariant.c performs register
renaming based on "register use lists". When the "cbranchsi_others" instruction
gets scanned for register uses, the CLOBBER use does not get recorded, and
thus, does not get changed later, resulting in an erroneous INSN pattern:
- Before move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI 30)
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))
])
- After move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI31) <= CHANGED 30 to 31
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))  <=== NOT CHANGED 30 TO 31
])
-
Obviously, the modification makes the instruction invalid, as it uses and
clobbers different registers, and thus, no existing INSN pattern matches it.
2.3 The "register use lists" are built using the record_uses() function in
loop-invariant.c based on DF use records. The record_uses() function considers
DF_INSN_USES() and DF_INSN_EQ_USES() lists (only DF_INSN_USES in gcc 4.2.4).
CLOBBERed registers are put into DF_INSN_DEFS() list, that is not considered in
record_uses(). That way, a CLOBBER attribute remains unchanged, when used
registers are renamed.
2.4 The df_defs_record() function in df-scan.c places both SET and CLOBBER
references into DF_INSN_DEFS() list:
  if (code == SET || code == CLOBBER)
{
  //...
  df_def_record_1 (collection_rec, x, bb, insn, clobber_flags);
}
2.5 Summary. Invariant moving optimization in loop-invariant.c disrupts INSN
patterns that USE and CLOBBER the same register, making them invalid.
-
3. Proposed solution.
3.1. For my needs, I have patched loop-invariant.c by adding the following
function to explicitly record all CLOBBER references from INSN that match USE
references:
static void record_clobber_uses_workaround(rtx insn, struct invariant *inv,
struct df_ref *use)
{
rtx pat = PATTERN(insn);
if (GET_CODE(pat) == PARALLEL)
{
int len = XVECLEN(pat, 0);
int idx = 0;

for (idx = 0; idx < len; idx++)
{
rtx subexp = XVECEXP(pat, 0, idx);
if (GET_CODE(subexp) == CLOBBER)
{
if (XEXP (subexp, 0) == *DF_REF_REAL_LOC (use))
record_use (inv->def, &XEXP (subexp,
0), DF_REF_INSN (use));
}   
}
}
}
The record_uses() function got patched accordingly:
 if (inv)
+  {
record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+   record_clobber_uses_workaround(insn, inv, use); 
+  }
3.2. I would recommend re-analyzing the more common case, when a single
instruction uses and defines the same register, and decide, whether loop
optimizations in loop-invariant.c should move such register. The bug does not
seem to affect most architectures, however, specific INSN patterns, as
described above, do trigger it. Maybe, a common function returning the list of
all "match_dup"-ed references for a given INSN and an operand to detect such
cases in a uniform way.


-- 
   Summary: move_inva

[Bug regression/41191] New: move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de
This bug was discovered while adapting MSP430 port for GCC 4.x and is
persistent at least in both GCC 4.2.4 and 4.3.4.
This description consists of a problem description, a detailed reason analysis
pointing out exact GCC functions, and a proposed solution.
---
1. Problem
Compiling the following code for MSP430 (16-bit RISC) with maximum optimization
(-O2) causes an "internal error int redirect_branch_edge()" failure:
-
for (volatile long t = 0; t < 1024; t++) ;
-
The problem is related to the "cbranchsi" instruction, that clobbers one of
compared registers. Here is a quote from MD file:
-
(define_insn "*cbranchsi_others"
  [(parallel [(set (pc)
 (if_then_else (match_operator:SI 1 "inequality_operator"
[(match_operand:SI 2 "register_operand" "r")
 (match_operand:SI 3 "general_operand" "rmi")])
  (label_ref (match_operand 0 "" ""))
  (pc)))
  (clobber (match_dup 2))])] ;<== Attention! clobber (match_dup) !!!
-
2. Reason
2.1 The "*cbranchsi_others" INSN clobbers one of its arguments [clobber
(match_dup 2)]. During loop optimization, the source register (operand 2) gets
changed, while the register reference in CLOBBER attribute does not. After such
change, instruction is no longer recognizable according to machine decsription,
and the compilation fails.
2.2 The move_invariant_reg() function in loop-invariant.c performs register
renaming based on "register use lists". When the "cbranchsi_others" instruction
gets scanned for register uses, the CLOBBER use does not get recorded, and
thus, does not get changed later, resulting in an erroneous INSN pattern:
- Before move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI 30)
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))
])
- After move_invariant_reg() (insn_invalid_p(insn) = 0)
-
(parallel [
(set (pc)
(if_then_else (ge:SI (reg:SI31) <= CHANGED 30 to 31
(reg:SI 24 [ j.1 ]))
(label_ref:HI 34)
(pc)))
(clobber:SI (reg:SI 30))  <=== NOT CHANGED 30 TO 31
])
-
Obviously, the modification makes the instruction invalid, as it uses and
clobbers different registers, and thus, no existing INSN pattern matches it.
2.3 The "register use lists" are built using the record_uses() function in
loop-invariant.c based on DF use records. The record_uses() function considers
DF_INSN_USES() and DF_INSN_EQ_USES() lists (only DF_INSN_USES in gcc 4.2.4).
CLOBBERed registers are put into DF_INSN_DEFS() list, that is not considered in
record_uses(). That way, a CLOBBER attribute remains unchanged, when used
registers are renamed.
2.4 The df_defs_record() function in df-scan.c places both SET and CLOBBER
references into DF_INSN_DEFS() list:
  if (code == SET || code == CLOBBER)
{
  //...
  df_def_record_1 (collection_rec, x, bb, insn, clobber_flags);
}
2.5 Summary. Invariant moving optimization in loop-invariant.c disrupts INSN
patterns that USE and CLOBBER the same register, making them invalid.
-
3. Proposed solution.
3.1. For my needs, I have patched loop-invariant.c by adding the following
function to explicitly record all CLOBBER references from INSN that match USE
references:
static void record_clobber_uses_workaround(rtx insn, struct invariant *inv,
struct df_ref *use)
{
rtx pat = PATTERN(insn);
if (GET_CODE(pat) == PARALLEL)
{
int len = XVECLEN(pat, 0);
int idx = 0;

for (idx = 0; idx < len; idx++)
{
rtx subexp = XVECEXP(pat, 0, idx);
if (GET_CODE(subexp) == CLOBBER)
{
if (XEXP (subexp, 0) == *DF_REF_REAL_LOC (use))
record_use (inv->def, &XEXP (subexp,
0), DF_REF_INSN (use));
}   
}
}
}
The record_uses() function got patched accordingly:
 if (inv)
+  {
record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+   record_clobber_uses_workaround(insn, inv, use); 
+  }
3.2. I would recommend re-analyzing the more common case, when a single
instruction uses and defines the same register, and decide, whether loop
optimizations in loop-invariant.c should move such register. The bug does not
seem to affect most architectures, however, specific INSN patterns, as
described above, do trigger it. Maybe, a common function returning the list of
all "match_dup"-ed references for a given INSN and an operand to detect such
cases in a uniform way.


-- 
   Summary: move_inva

[Bug rtl-optimization/41191] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #1 from shcherbakov at daad-alumni dot de  2009-08-30 10:13 
---


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


-- 

shcherbakov at daad-alumni dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #2 from shcherbakov at daad-alumni dot de  2009-08-30 10:13 
---
*** Bug 41191 has been marked as a duplicate of this bug. ***


-- 


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



[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #3 from shcherbakov at daad-alumni dot de  2009-08-30 10:14 
---
*** Bug 41190 has been marked as a duplicate of this bug. ***


-- 


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



[Bug rtl-optimization/41190] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #1 from shcherbakov at daad-alumni dot de  2009-08-30 10:14 
---


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


-- 

shcherbakov at daad-alumni dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #4 from shcherbakov at daad-alumni dot de  2009-08-30 10:14 
---
*** Bug 41189 has been marked as a duplicate of this bug. ***


-- 


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



[Bug regression/41189] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread shcherbakov at daad-alumni dot de


--- Comment #1 from shcherbakov at daad-alumni dot de  2009-08-30 10:14 
---


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


-- 

shcherbakov at daad-alumni dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug libstdc++/41058] FAIL: ext/pb_ds/regression/hash_data_map_rand.cc

2009-08-30 Thread rguenther at suse dot de


--- Comment #20 from rguenther at suse dot de  2009-08-30 11:25 ---
Subject: Re:  FAIL:
 ext/pb_ds/regression/hash_data_map_rand.cc

On Sat, 29 Aug 2009, ubizjak at gmail dot com wrote:

> --- Comment #19 from ubizjak at gmail dot com  2009-08-29 19:52 ---
> Sigh, the patch doesn't fix alpha failure :(

It also doensn't fix reliably the failure on i?86.  Is your alpha
failure on lto branch or on trunk?

Richard.


-- 


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



[Bug tree-optimization/41186] VN doesn't look through non-aliasing by offset memcpy

2009-08-30 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-08-30 11:52 ---
Subject: Bug 41186

Author: rguenth
Date: Sun Aug 30 11:52:13 2009
New Revision: 151226

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151226
Log:
2009-08-30  Richard Guenther  

PR tree-optimization/41186
* tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
(ao_ref_init_from_ptr_and_size): New function.
(ref_maybe_used_by_call_p_1): Be more precise tracking
used ranges for builtin functions.
(ref_maybe_used_by_call_p): Adjust.
(call_may_clobber_ref_p_1): Be more precise tracking clobbered
ranges for builtin functions.
* tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.

* g++.dg/torture/pr41186.C: New testcase.
* g++.dg/tree-ssa/pr41186.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/torture/pr41186.C
trunk/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-alias.c
trunk/gcc/tree-ssa-alias.h


-- 


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



[Bug middle-end/39832] [4.4/4.5 Regression] program built by x86_64-pc-mingw32-g++ run crash, maybe for _Unwind_SjLj_Unregister or __dyn_tls_dtor

2009-08-30 Thread drangon dot mail at gmail dot com


--- Comment #9 from drangon dot mail at gmail dot com  2009-08-30 13:53 
---
yes, the issue should be fixed, wxWidgets works fine now.


-- 


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



[Bug ada/41122] libada multilib string parsing error

2009-08-30 Thread bonzini at gcc dot gnu dot org


--- Comment #5 from bonzini at gnu dot org  2009-08-30 14:26 ---
Subject: Bug 41122

Author: bonzini
Date: Sun Aug 30 14:26:37 2009
New Revision: 151227

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151227
Log:
2009-08-30  Paolo Bonzini  

PR ada/41122
* configure.ac: Add AC_PROG_AWK.  Remove useless duplicate
call to AC_PROG_CC.
* configure: Regenerate.
* Makefile.in: Substitute AWK.


Modified:
trunk/libada/ChangeLog
trunk/libada/Makefile.in
trunk/libada/configure
trunk/libada/configure.ac


-- 


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



[Bug ada/41122] libada multilib string parsing error

2009-08-30 Thread bonzini at gnu dot org


--- Comment #6 from bonzini at gnu dot org  2009-08-30 14:35 ---
committed to trunk, 4.4 will follow.


-- 


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



[Bug fortran/41192] New: NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread urbanjost at comcast dot net
If just a comment is in the NAMELIST input the READ fails


VERSION:

gfortran -dumpversion
GNU Fortran (GCC) 4.3.2 20080827 (beta) 2
Copyright (C) 2008 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING

EXECUTION:

./bugA

 ===> FOR: 
&CMD
 I=  1,
 J=  2,
 K=  3,  /


 ===> FOR: I=10 , J=20 K=30 ! change all three values
&CMD
 I= 10,
 J= 20,
 K= 30,  /


 ===> FOR: 
&CMD
 I= 10,
 J= 20,
 K= 30,  /


 ===> FOR: ! change no values
 E-R-R-O-R: PROCESSING COMMAND LINE, IOSTAT=5010
 Cannot match namelist object name change   
&CMD
 I= 10,
 J= 20,
 K= 30,  /


CODE:

cat bugA.f90
program cmdline
! comment by itself causes error in gfortran
   call process(' ')
   call process('I=10 , J=20 K=30 ! change all three values')
   call process(' ')
   call process('! change no values')  ! CAUSES ERROR IN GFORTRAN, NOT G95
end program cmdline
!===
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
!===
subroutine process(string)
implicit none
character(len=*) :: string
character(len=132) :: lines(3)
character(len=255) :: message
INTEGER :: I=1,J=2,K=3
integer ios
NAMELIST /CMD/ I,J,K
save cmd
lines(1)='&cmd'
lines(2)=string
lines(3)='/'

WRITE(*,'(80(''=''))')
write(*,*)'===> FOR: ',string(:len_trim(string))

READ(lines,NML=CMD,IOSTAT=ios,IOMSG=message)
if(ios.ne.0)then
   write(*,*)'E-R-R-O-R: PROCESSING COMMAND LINE, IOSTAT=',IOS
   write(*,*)message
endif
write(*,NML=CMD)

return
end subroutine process
!===
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
!===


-- 
   Summary: NAMELIST input with just a comment ("&NAME ! comment \")
fails
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: urbanjost at comcast dot net


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



[Bug c/40977] Problem with code like this: res = ((uint64_t)resh << 32) | resl;

2009-08-30 Thread ami_stuff at o2 dot pl


--- Comment #2 from ami_stuff at o2 dot pl  2009-08-30 16:57 ---
With -m68060 -O1 -fomit-frame-pointer:

GCC 4.1.2/GCC 4.2.5:

#NO_APP
.text
.even
.globl  _MUL64
_MUL64:
movm.l #0x3e00,-(sp)
move.l 28(sp),a1
move.l 24(sp),a0
#APP
| Inlined umul_ppmm
move.l a0,d0
move.l a1,d1
move.l d0,d2
swapd0
move.l d1,d3
swapd1
move.w d2,d4
mulud3,d4
mulud1,d2
mulud0,d3
mulud0,d1
move.l d4,d0
eor.w  d0,d0
swapd0
add.l  d0,d2
add.l  d3,d2
jcc 1f
add.l  #65536,d1
1:  swapd2
moveq   #0,d0
move.w d2,d0
move.w d4,d2
move.l d2,d6
add.l  d1,d0
move.l d0,d5
#NO_APP
tst.l a0
jbge L2
sub.l a1,d5
L2:
tst.l a1
jbge L4
sub.l a0,d5
L4:
move.l d5,d0
clr.l d1
or.l d6,d1
movm.l (sp)+,#0x7c
rts

GCC 4.3.2:

#NO_APP
.text
.even
.globl  _MUL64
_MUL64:
movem.l #16128,-(sp)
move.l 32(sp),d5
move.l 28(sp),a0
#APP
;# 45 "test5.c" 1
| Inlined umul_ppmm
move.l a0,d0
move.l d5,d1
move.l d0,d2
swapd0
move.l d1,d3
swapd1
move.w d2,d4
mulud3,d4
mulud1,d2
mulud0,d3
mulud0,d1
move.l d4,d0
eor.w  d0,d0
swapd0
add.l  d0,d2
add.l  d3,d2
jcc 1f
add.l  #65536,d1
1:  swapd2
moveq   #0,d0
move.w d2,d0
move.w d4,d2
move.l d2,d7
add.l  d1,d0
move.l d0,a1
#NO_APP
tst.l a0
jge L2
sub.l d5,a1
L2:
tst.l d5
jge L3
sub.l a0,a1
L3:
move.l a1,d1
clr.l d2
or.l d7,d2
move.l d1,d0
move.l d2,d1
movem.l (sp)+,#252
rts

GCC 4.4.2:

#NO_APP
.text
.even
.globl  _MUL64
_MUL64:
movem.l #16128,-(sp)
move.l 32(sp),a0
move.l 28(sp),a1
#APP
;# 45 "test5.c" 1
| Inlined umul_ppmm
move.l a1,d0
move.l a0,d1
move.l d0,d2
swapd0
move.l d1,d3
swapd1
move.w d2,d4
mulud3,d4
mulud1,d2
mulud0,d3
mulud0,d1
move.l d4,d0
eor.w  d0,d0
swapd0
add.l  d0,d2
add.l  d3,d2
jcc 1f
add.l  #65536,d1
1:  swapd2
moveq   #0,d0
move.w d2,d0
move.w d4,d2
move.l d2,d6
add.l  d1,d0
move.l d0,d5
#NO_APP
tst.l a1
jge L2
sub.l a0,d5
L2:
tst.l a0
jge L3
sub.l a1,d5
L3:
move.l d5,d0
clr.l d1
move.l d0,d2
move.l d1,d3
or.l d6,d3
move.l d2,d6
move.l d3,d7
move.l d2,d0
move.l d7,d1
movem.l (sp)+,#252
rts


-- 


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



[Bug target/40722] [4.5 Regression] ia32intrin.h defines of _rotl, _rotr conflict with target stdlib.h decls

2009-08-30 Thread ktietz at gcc dot gnu dot org


--- Comment #3 from ktietz at gcc dot gnu dot org  2009-08-30 17:34 ---
(In reply to comment #2)
> (In reply to comment #1)
> > These were added by HJ.  Either we need to fixinclude stdlib.h or not define
> > these based on a configure test (I guess the former is more robust if
> > ia32intrin.h defines these only if they are not already defined).
> > 
> 
> fixinclude sounds a good idea, but I don't know how to do it. Or
> I can change ia32inintrin.h by not defining them for mingw.
> 

I would vote for guarding the lrotl, lrotr by checks, if they aren't defined
already.

There is an other issue about ia32intrin.h and mingw targets, but I assume,
that it is true for other i386 and x86_64 targets, too. There are the functions
__crc32b, __crc32w, and __crt32d, which are in general just available for a
target that has SSE4.1 enabled (-mcrc). But the inlines aren't guarded and so
the builtins __builtin_ia32_crc32qi (etc) don't have prototypes and so g++ will
throw errors.

The following sample shows the issue pretty well.
t.cc:
#include 
int main()
{
  return 0;
}


-- 

ktietz at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu dot
   ||org


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread kargl at gcc dot gnu dot org


--- Comment #2 from kargl at gcc dot gnu dot org  2009-08-30 17:48 ---
(In reply to comment #1)
> Thanks for report , I will fix this.
> 

It's not broken.

-- 
steve


-- 

kargl at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||sgk at troutmask dot apl dot
   ||washington dot edu


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread sgk at troutmask dot apl dot washington dot edu


--- Comment #3 from sgk at troutmask dot apl dot washington dot edu  
2009-08-30 17:58 ---
Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails

On Sun, Aug 30, 2009 at 05:48:15PM -, kargl at gcc dot gnu dot org wrote:
> 
> 
> --- Comment #2 from kargl at gcc dot gnu dot org  2009-08-30 17:48 ---
> (In reply to comment #1)
> > Thanks for report , I will fix this.
> > 
> 
> It's not broken.
> 

Here's my analysis, which could be wrong.

>From the Fortran 2003 standard;

  10.10.1  Namelist input

  Input for a namelist input statement consists of
(1)  Optional blanks and namelist comments,
(2)  The character & followed immediately by the namelist-group-name
 as specified in the NAMELIST statement,
(3)  One or more blanks,
(4)  A sequence of zero or more name-value subsequences separated
 by value separators, and
(5)  A slash to terminate the namelist input.

  10.10.1.6Namelist Comments

  Except within a character literal constant, a "!" character after a
  value separator or in the first nonblank position of a namelist input
  record initiates a comment.

In Section 10.9, one finds

  A value separator is
(1) A comma optionally preceded by one or more contiguous blanks
and optionally followed by one or more contiguous blanks, unless
the decimal edit mode is COMMA, in which case a semicolon is
used in place of the comma,
(2) A slash optionally preceded by one or more contiguous blanks
and optionally followed by one or more contiguous blanks, or
(3) One or more contiguous blanks between two nonblank values or
following the last nonblank value, where a nonblank value is
a constant, an r *c form, or an r * form.

The namelist that appears to be causing an error in gfortran is

&cmd
! change no values
/

The comment does not follow a value separator, so it comes down to
"or in the first nonblank position of a namelist input record initiates
a comment".  Now, going back to 10.10.1, the first nonblank position
in a namelist input record would need to come before the &.  That is, 
the namelist should be

! change no values
&cmd
/

This modification to the program suggests that my reading of the
Standard may be correct (although I have been known to get it wrong).

program cmdline

   call process(' ', .false.)
   call process('I=10 , J=20 K=30 ! change all three values', .false.)
   call process(' ', .false.)
   call process('! change no values', .true.)  ! CAUSES ERROR IN GFORTRAN, NOT
G95

   contains

   subroutine process(string, invert)
  implicit none
  logical :: invert
  character(len=*) :: string
  character(len=132), save :: lines(3)
  character(len=255) :: message
  INTEGER :: I=1,J=2,K=3
  integer ios
  NAMELIST /CMD/ I,J,K
  save cmd

  if (invert .eqv. .true.) then
lines(2)='&cmd'
lines(1)=string
lines(3)='/'
  else
lines(1)='&cmd'
lines(2)=string
lines(3)='/'
  end if

  READ(lines,NML=CMD,IOSTAT=ios,IOMSG=message)
  if(ios.ne.0)then
 write(*,*)'E-R-R-O-R: PROCESSING COMMAND LINE, IOSTAT=',IOS
 write(*,*)message
  endif
  write(*,NML=CMD)

   end subroutine process

end program cmdline


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread jvdelisle at gcc dot gnu dot org


--- Comment #4 from jvdelisle at gcc dot gnu dot org  2009-08-30 18:15 
---
Strictly speaking, Steve, I think you are correct.

I have not finished my review of the standard.  This is the first time I have
seen namelist used like this for command line input. I suspect because it
allows one to try many variations easily it will be a useful quick test tool. 
The embedded comment seems natural and in our code base we have a comment
asking, should we allow '!' as a separator as an extension.  We have thought
about this issue before.

I am going to give it some thinking time before doing anything here.


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread jvdelisle at gcc dot gnu dot org


--- Comment #1 from jvdelisle at gcc dot gnu dot org  2009-08-30 17:32 
---
Thanks for report , I will fix this.


-- 

jvdelisle at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jvdelisle at gcc dot gnu dot
   |dot org |org
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-08-30 17:32:10
   date||
Summary|NAMELIST input with just a  |NAMELIST input with just a
   |comment ("&NAME ! comment   |comment ("&NAME ! comment
   |\") fails   |\") fails


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



[Bug middle-end/41193] New: slow compilation with graphite

2009-08-30 Thread jv244 at cam dot ac dot uk
after the fix for PR40965, I retested trunk on CP2K. There is one particularly
slow compile, for the attached testcase, which goes 

w/o -fgraphite :   8s
w   -fgraphite : 371s

-ftime-report points at:

Graphite loop transforms: 364.61 (98%) usr   0.96 (91%) sys 365.55 (98%) wall

full compile line

gfortran -fgraphite -c -O2 -ffast-math -funroll-loops -ftree-vectorize
-march=native -ftime-report tmp.f90

with gfortran -v 

Target: x86_64-unknown-linux-gnu
Configured with: /data03/vondele/gcc_trunk/gcc/configure --disable-bootstrap
--prefix=/data03/vondele/gcc_trunk/build --enable-languages=c,c++,fortran
--disable-multilib --with-ppl=/data03/vondele/gcc_trunk/build/
--with-cloog=/data03/vondele/gcc_trunk/build/
Thread model: posix
gcc version 4.5.0 20090830 (experimental) [trunk revision 151229] (GCC)
COLLECT_GCC_OPTIONS='-c' '-O2' '-ffast-math' '-funroll-loops'
'-ftree-vectorize'  '-v'

/data03/vondele/gcc_trunk/build/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/f951
tmp.f90 -march=k8-sse3 -mcx16 -msahf --param l1-cache-size=64 --param
l1-cache-line-size=64 --param l2-cache-size=1024 -mtune=k8 -quiet -dumpbase
tmp.f90 -auxbase tmp -O2 -version -ffast-math -funroll-loops -ftree-vectorize
-fintrinsic-modules-path
/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/finclude
-o /tmp/cch50n1i.s
GNU Fortran (GCC) version 4.5.0 20090830 (experimental) [trunk revision 151229]
(x86_64-unknown-linux-gnu)
compiled by GNU C version 4.3.1 20080507 (prerelease) [gcc-4_3-branch
revision 135036], GMP version 4.2.2, MPFR version 2.3.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU Fortran (GCC) version 4.5.0 20090830 (experimental) [trunk revision 151229]
(x86_64-unknown-linux-gnu)
compiled by GNU C version 4.3.1 20080507 (prerelease) [gcc-4_3-branch
revision 135036], GMP version 4.2.2, MPFR version 2.3.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
COLLECT_GCC_OPTIONS='-c' '-O2' '-ffast-math' '-funroll-loops'
'-ftree-vectorize'  '-v'
 as -V -Qy -o tmp.o /tmp/cch50n1i.s
GNU assembler version 2.18.50 (x86_64-suse-linux) using BFD version (GNU
Binutils; openSUSE 11.0) 2.18.50.20080409-11.1
COMPILER_PATH=/data03/vondele/gcc_trunk/build/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/:/data03/vondele/gcc_trunk/build/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/:/data03/vondele/gcc_trunk/build/libexec/gcc/x86_64-unknown-linux-gnu/:/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/:/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/
LIBRARY_PATH=/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/:/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/data03/vondele/gcc_trunk/build/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-c' '-O2' '-ffast-math' '-funroll-loops'
'-ftree-vectorize'  '-v'


-- 
   Summary: slow compilation with graphite
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Keywords: compile-time-hog
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jv244 at cam dot ac dot uk


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



[Bug middle-end/41193] slow compilation with graphite

2009-08-30 Thread jv244 at cam dot ac dot uk


--- Comment #1 from jv244 at cam dot ac dot uk  2009-08-30 18:38 ---
Created an attachment (id=18451)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18451&action=view)
testcase


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread sgk at troutmask dot apl dot washington dot edu


--- Comment #5 from sgk at troutmask dot apl dot washington dot edu  
2009-08-30 18:54 ---
Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails

On Sun, Aug 30, 2009 at 06:15:07PM -, jvdelisle at gcc dot gnu dot org
wrote:
> 
> Strictly speaking, Steve, I think you are correct.
> 
> I have not finished my review of the standard.  This is the first time I have
> seen namelist used like this for command line input. I suspect because it
> allows one to try many variations easily it will be a useful quick test tool. 
> The embedded comment seems natural and in our code base we have a comment
> asking, should we allow '!' as a separator as an extension.  We have thought
> about this issue before.
> 
> I am going to give it some thinking time before doing anything here.
> 

Allowing a comment within a namelist to be the only entity on
a line seems to be a logical extension to add.  But, to claim
that gfortran has an error seems to be erroneous.  This extension
should probably issue a warning with -std=f95 or f2003.


-- 


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



[Bug c++/41194] New: __attribute__ ((__gnu_inline__)) yields x86_64-unknown-linux-gnu when compiled with -O0, but not with -O1

2009-08-30 Thread hdasch at gmail dot com
Error messages:

/tmp/ccgtrVyI.o: In function `Color':
/home/chromium/chromium/src/third_party/WebKit/WebCore/platform/ColorData.gperf:254:
undefined reference to `findColor(char const*, unsigned int)'
/home/chromium/chromium/src/third_party/WebKit/WebCore/platform/ColorData.gperf:254:
undefined reference to `findColor(char const*, unsigned int)'
collect2: ld returned 1 exit status


Command line:

g++  -O0 -g  Color-stripped.ii

Compiler build configuration:
  ../configure --prefix=/usr --enable-shared \
  --enable-languages=c,c++,fortran,objc,obj-c++ \
  --enable-threads=posix --mandir=/usr/share/man \
  --infodir=/usr/share/info \
  --enable-__cxa_atexit  --disable-multilib --libdir=/usr/lib \
  --libexecdir=/usr/lib --enable-clocale=gnu \
  --disable-libstdcxx-pch \
  --with-tune=generic

The symbols resolve correctly if compiled with "-O1" or if "__attribute__
((__gnu_inline__))" is removed from function definition.


-- 
   Summary: __attribute__ ((__gnu_inline__)) yields x86_64-unknown-
linux-gnu when compiled with -O0, but not with -O1
   Product: gcc
   Version: 4.4.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hdasch at gmail dot com
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug c++/41194] __attribute__ ((__gnu_inline__)) yields x86_64-unknown-linux-gnu when compiled with -O0, but not with -O1

2009-08-30 Thread hdasch at gmail dot com


--- Comment #1 from hdasch at gmail dot com  2009-08-30 20:25 ---
Created an attachment (id=18452)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18452&action=view)
Preprocessed test case.


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread urbanjost at comcast dot net


--- Comment #6 from urbanjost at comcast dot net  2009-08-31 00:07 ---
Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails

Because of 10.11.3.3-4 I believe (1) of 10.10.1 is intended to mean 
"throughout" and not "preceding"; and that
10.10.1 (2) through (5) should then be read as serially defining a NAMELIST 
group object. I believe that lines
before &NAME do not have to conform to NAMELIST format at all; and that 
anything after the / is ignored, so
it could LOOK like a comment but does not have to. Because of 10.11.3.3 I 
think this should be legal:

Anything I like, whatsoever
! something that LOOKS like a comment but is not
&CMD! a comment
! another comment
! and another
/ !whatever, which happens to look like a comment

That is, nothing counts until the line with "^[  *]&NAME" or after "/" 
(using regexp syntax) and that anything
beginning with an exclamation not in a string literal is ignored up to and 
except for the EOL. So the above
would be completely equivalent to
&CMD

/
I think 10.10.1 item (1) is misleading because the rest of the list defines 
a NAMELIST group's allowable content
in order; but that the extraneous blanks are intended to be ignored 
throughout except in string constants. I also think
strings MUST be quoted on input; and the gfortran behavior for
C=NAME
when C refers to a character variable is acting suspicously.

PS: Combining NAMELIST with GET_COMMAND_ARGUMENTS makes for a REALLY 
flexible command line
  parser 
(http://home.comcast.net/~urbanjost/CLONE/KRACKEN/namelist/index.html). The 
page is a work in
  progress; I was trying to show how a single program could use NAMELIST 
to have a consistent syntax for
  command line arguments, a configuration file, interactive parameter 
input, and file-based input; it is very promising
  because of it's simplicity and consistency, but I've hit quirks 
between compilers that has made me suddenly far more
  careful in my reading of the f2003 standard's sections on NAMELIST; 
and I'm convinced this not a request for an
  extension -- but I've been wrong before too.

!!10.11.3.3Namelist group object list items
!!
!! 1 The name-value subsequences are evaluated serially, in left-to-right 
order. A namelist group object designator
!!may appear in more than one name-value sequence.
!!
!! 2 When the name in the input record represents an array variable or a 
variable of derived type, the effect is as
!!if the variable represented were expanded into a sequence of scalar 
list items, in the same way that formatted
!!input/output list items are expanded (9.6.3). Each input value 
following the equals shall then be acceptable to
!!format specifications for the type of the list item in the 
corresponding position in the expanded sequence, except
!!as noted in this subclause. The number of values following the equals 
shall not exceed the number of list items
!!in the expanded sequence, but may be less; in the latter case, the 
effect is as if sufficient null values had been
!!appended to match any remaining list items in the expanded sequence.
!!
!! NOTE 10.35
!! For example, if the name in the input record is the name of an 
integer array of size 100, at most 100 values,
!! each of which is either a digit string or a null value, may 
follow the equals; these values would then be
!! assigned to the elements of the array in array element order.
!!
!! 3 A slash encountered as a value separator during the execution of a 
namelist input statement causes termination
!!of execution of that input statement after transference of the 
previous value. If there are additional items in the
!!namelist group object being transferred, the effect is as if null 
values had been supplied for them.
!!
!! 4 A namelist comment may appear after any value separator except a slash. 
A namelist comment is also permitted
!!to start in the first nonblank position of an input record except 
within a character literal constant.
!!
!! 5 Successive namelist records are read by namelist input until a slash is 
encountered; the remainder of the record
!!is ignored and need not follow the rules for namelist input values.

- Original Message - 
From: "sgk at troutmask dot apl dot washington dot edu" 

To: 
Sent: Sunday, August 30, 2009 1:58 PM
Subject: [Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! 
comment \") fails


>
>
> --- Comment #3 from sgk at troutmask dot apl dot washington dot edu 
> 2009-08-30 17:58 ---
> Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") 
> fails
>
> On Sun, Aug 30, 2009 at 05:48:15PM -, kargl at gcc dot gnu dot org 
> wrote:
>>
>>
>> --- Comment #2 from kargl at gcc dot gnu dot org  2009-08-30 
>> 17:48 ---
>> (In reply to comment #1)
>> > Thanks for report , I will fix this.
>> >
>>
>> It's not broken.
>>
>
> Here's my analysis, which coul

[Bug c/41128] ld: cannot find -luser32 problem

2009-08-30 Thread justineuro at yahoo dot com


--- Comment #2 from justineuro at yahoo dot com  2009-08-31 00:09 ---
(In reply to comment #1)
> This is a bug in your installation of GCC and cygwin.
Thanks for the reply.  I have since re-installed and subsequently got an
"undefined reference to _winm...@16' error".  It turns out I had to add the
-shared option, i.e., use the command line "gcc -shared -o file.exe file.c".  I
got this solution from url:
http://forums.sun.com/thread.jspa?threadID=5305805&messageID=10359759.  All is
fine now.  Again thanks!

Justine


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread sgk at troutmask dot apl dot washington dot edu


--- Comment #7 from sgk at troutmask dot apl dot washington dot edu  
2009-08-31 00:30 ---
Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails

On Mon, Aug 31, 2009 at 12:07:34AM -, urbanjost at comcast dot net wrote:
> 
> 
> --- Comment #6 from urbanjost at comcast dot net  2009-08-31 00:07 ---
> Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails
> 
> Because of 10.11.3.3-4

There isn't a Section 10.11.3.3 in the Final Committee Draft
of the Fortran 2003 standard.


-- 


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



[Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! comment \") fails

2009-08-30 Thread urbanjost at comcast dot net


--- Comment #8 from urbanjost at comcast dot net  2009-08-31 01:12 ---
Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") fails

Oops. That was 2008;
ISO/IEC SC22/WG5/N1723  CD 1539-1  08-007r2:2008/03/11; even though the 
statements still appear in it
that you referenced in the 2003 final draft.


- Original Message - 
From: "sgk at troutmask dot apl dot washington dot edu" 

To: 
Sent: Sunday, August 30, 2009 8:30 PM
Subject: [Bug fortran/41192] NAMELIST input with just a comment ("&NAME ! 
comment \") fails


>
>
> --- Comment #7 from sgk at troutmask dot apl dot washington dot edu 
> 2009-08-31 00:30 ---
> Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") 
> fails
>
> On Mon, Aug 31, 2009 at 12:07:34AM -, urbanjost at comcast dot net 
> wrote:
>>
>>
>> --- Comment #6 from urbanjost at comcast dot net  2009-08-31 
>> 00:07 ---
>> Subject: Re:  NAMELIST input with just a comment ("&NAME ! comment \") 
>> fails
>>
>> Because of 10.11.3.3-4
>
> There isn't a Section 10.11.3.3 in the Final Committee Draft
> of the Fortran 2003 standard.
>
>
> -- 
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41192
>
> --- You are receiving this mail because: ---
> You reported the bug, or are watching the reporter. 


-- 


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



[Bug c/41128] ld: cannot find -luser32 problem

2009-08-30 Thread justineuro at yahoo dot com


--- Comment #3 from justineuro at yahoo dot com  2009-08-31 01:16 ---
(In reply to comment #2)
> (In reply to comment #1)
> > This is a bug in your installation of GCC and cygwin.
> Thanks for the reply.  I have since re-installed and subsequently got an
> "undefined reference to _winm...@16' error".  It turns out I had to add the
> -shared option, i.e., use the command line "gcc -shared -o file.exe file.c".  
> I
> got this solution from url:
> http://forums.sun.com/thread.jspa?threadID=5305805&messageID=10359759.  All is
> fine now.  Again thanks!
>
> Justine

Make sure you use the option -shared and ***NOT*** -share.  The -share option
when used in a windows command prompt shell in my machine ERASES the existing
*.exe files of the same name!!! However, it does give a message to the effect
that -share is not a valid option.  ---Justine


-- 


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



[Bug middle-end/30789] complex folding inexact

2009-08-30 Thread ghazi at gcc dot gnu dot org


--- Comment #9 from ghazi at gcc dot gnu dot org  2009-08-31 03:05 ---
Patch for remaining issues posted here:
http://gcc.gnu.org/ml/gcc-patches/2009-08/msg01614.html


-- 


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



[Bug c++/41195] New: floating point optimization

2009-08-30 Thread mehta at roguewave dot com
A simple sequence of floating point calculations gives different results on
optimized builds and unoptimized builds. I have seen some bug reports, but this
one is different as the error is reproduced only when the floating point
calculation in question is called from a library. If i create a simple main
method with the calculation in question, the error is not reproducible. I have
a simple test case, how can i send it?


-- 
   Summary: floating point optimization
   Product: gcc
   Version: 4.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mehta at roguewave dot com
  GCC host triplet: RHAS 5


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



[Bug c++/41195] floating point optimization

2009-08-30 Thread mehta at roguewave dot com


--- Comment #1 from mehta at roguewave dot com  2009-08-31 03:55 ---
Created an attachment (id=18453)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18453&action=view)
test case


-- 


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



[Bug regression/41188] move_invariant_reg() damages CBRANCH instructions with CLOBBER attribute

2009-08-30 Thread steven at gcc dot gnu dot org


--- Comment #5 from steven at gcc dot gnu dot org  2009-08-31 06:20 ---
See http://gcc.gnu.org/ml/gcc-patches/2009-08/msg01291.html


-- 

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 |2009-08-31 06:20:14
   date||


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



[Bug c++/41195] floating point optimization

2009-08-30 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2009-08-31 06:21 ---
I think this is a duplicate of bug 323.  What target are you using?


-- 


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



[Bug libstdc++/41058] FAIL: ext/pb_ds/regression/hash_data_map_rand.cc

2009-08-30 Thread ubizjak at gmail dot com


--- Comment #21 from ubizjak at gmail dot com  2009-08-31 06:52 ---
(In reply to comment #20)

> > Sigh, the patch doesn't fix alpha failure :(
> 
> It also doensn't fix reliably the failure on i?86.  Is your alpha
> failure on lto branch or on trunk?

It is on the trunk. However, I have started debugging this, and the problem is
that the pointer to LSDA structure gets corrupted and test aborts when parsing
LSDA header with parse_lsda_header. The actual abort is triggered in
read_encoded_value_with_base.

Exception data points to
_ZN10__gnu_pbds6detail15gp_ht_map_data_INS_4test10basic_typeES3_NS2_4hashESt8equal_toIS3_EN9__gnu_cxx15throw_allocatorIS3_EELb0ENS2_27direct_mod_range_hashing_t_IS9_EENS2_21quadratic_probe_fn_t_IS3_S9_EENS_27hash_standard_resize_policyINS2_25hash_prime_size_policy_t_ENS2_33hash_load_check_resize_trigger_t_IS9_Lm1ELm8ELm1ELm2ELb1EEELb1EmEEEC2ERKSJ_

aka:

__gnu_pbds::detail::gp_ht_map_data_<__gnu_pbds::test::basic_type,
__gnu_pbds::test::basic_type, __gnu_pbds::test::hash,
std::equal_to<__gnu_pbds::test::basic_type>,
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>, false,
__gnu_pbds::test::direct_mod_range_hashing_t_<__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>
>, __gnu_pbds::test::quadratic_probe_fn_t_<__gnu_pbds::test::basic_type,
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >,
__gnu_pbds::hash_standard_resize_policy<__gnu_pbds::test::hash_prime_size_policy_t_,
__gnu_pbds::test::hash_load_check_resize_trigger_t_<__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>,
1ul, 8ul, 1ul, 2ul, true>, true, unsigned long>
>::gp_ht_map_data_(__gnu_pbds::detail::gp_ht_map_data_<__gnu_pbds::test::basic_type,
__gnu_pbds::test::basic_type, __gnu_pbds::test::hash,
std::equal_to<__gnu_pbds::test::basic_type>,
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>, false,
__gnu_pbds::test::direct_mod_range_hashing_t_<__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>
>, __gnu_pbds::test::quadratic_probe_fn_t_<__gnu_pbds::test::basic_type,
__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type> >,
__gnu_pbds::hash_standard_resize_policy<__gnu_pbds::test::hash_prime_size_policy_t_,
__gnu_pbds::test::hash_load_check_resize_trigger_t_<__gnu_cxx::throw_allocator<__gnu_pbds::test::basic_type>,
1ul, 8ul, 1ul, 2ul, true>, true, unsigned long> > const&)

Defined in:

file
/home/uros/gcc-build/alphaev68-unknown-linux-gnu/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp,
line 144. (2 locations)

Return address points just after the call to:

   12000f9e8:   d3 da 5f d3 bsr ra,120006538
<_ZN9__gnu_cxx16probability_base19throw_conditionallyEv+0x8>
>  12000f9ec:   00 00 fe 2f unop
   12000f9f0:   00 00 fe 2f unop

This is hard to debug, since this is conditional exception, and the condition
that triggers this exception depends on a random value.

I have checked that it is not LSDA data that gets corrupted, but the pointer to
LSDA data:

failed: 0x1201bb405

objdump --section=.gcc_except_table -s hash_data_map_rand.test

 1201bb3f4 ff9b2d01 23a80148 c40400f0 0208b404  ..-.#..H
>1201bb404 01880308 e00301d8 0304c404 009c0414  
 1201bb414 e80400e0 0404 0100   
 1201bb424 ff9b2101 17ac0208 d80401d8 0308fc03  ..!.
 1201bb434 05940404 a80400d0 0438 7f00  .8..
 1201bb444 7f7d  ff9b4901 41d4015c  .}I.A..\

correct: 0x1201bb3f4

 1201bb3e4 0001 08240848 005c0400   .$.H.\..
>1201bb3f4 ff9b2d01 23a80148 c40400f0 0208b404  ..-.#..H
 1201bb404 01880308 e00301d8 0304c404 009c0414  
 1201bb414 e80400e0 0404 0100   
 1201bb424 ff9b2101 17ac0208 d80401d8 0308fc03  ..!.
 1201bb434 05940404 a80400d0 0438 7f00  .8..

So, the pointer to LSDA is off by 0x11.


-- 


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