[Bug pending/27971] New: eliminate shift in array[(x2)3]

2006-06-09 Thread dean at arctic dot org
array[(x2)3] can be arranged to avoid the right shift.

consider:

% cat shift-and-fold.c
unsigned array[4];

unsigned foo(unsigned long x)
{
  return array[(x2)3ul];
}
% /home/odo/gcc/bin/gcc -g -O3 -Wall   -c -o shift-and-fold.o shift-and-fold.c
% objdump -dr shift-and-fold.o

shift-and-fold.o: file format elf64-x86-64

Disassembly of section .text:

 foo:
   0:   48 c1 ef 02 shr$0x2,%rdi
   4:   83 e7 03and$0x3,%edi
   7:   8b 04 bd 00 00 00 00mov0x0(,%rdi,4),%eax
a: R_X86_64_32S array
   e:   c3  retq

could be:

  and $0xc,%edi
  mov 0(%rdi),%eax

gcc does the right thing when the left shift isn't part of an address...

thanks
-dean

% /home/odo/gcc/bin/gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../gcc/configure --prefix=/home/odo/gcc
--host=x86_64-linux-gnu --disable-multilib --enable-languages=c,c++
--disable-bootstrap
Thread model: posix
gcc version 4.2.0 20060603 (experimental)


-- 
   Summary: eliminate shift in array[(x2)3]
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: pending
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dean at arctic dot org
 GCC build triplet: x86_64-linux-gnu
  GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu


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



[Bug target/27971] eliminate shift in array[(x2)3]

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-09 06:18 ---
This works correctly on powerpc.  The rtl we get on x86_64 is:
(insn 10 7 11 2 (parallel [
(set (reg:DI 61)
(lshiftrt:DI (reg/v:DI 59 [ x ])
(const_int 2 [0x2])))
(clobber (reg:CC 17 flags))
]) 456 {*lshrdi3_1_rex64} (insn_list:REG_DEP_TRUE 6 (nil))
(expr_list:REG_DEAD (reg/v:DI 59 [ x ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil

(insn 11 10 13 2 (parallel [
(set (reg:DI 62)
(and:DI (reg:DI 61)
(const_int 3 [0x3])))
(clobber (reg:CC 17 flags))
]) 297 {*anddi_1_rex64} (insn_list:REG_DEP_TRUE 10 (nil))
(expr_list:REG_DEAD (reg:DI 61)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil

(insn 13 11 17 2 (set (reg:SI 64)
(mem/s:SI (plus:DI (mult:DI (reg:DI 62)
(const_int 4 [0x4]))
(symbol_ref:DI (array) var_decl 0x2af4bbb0 array)) [3
array S4 A32])) 40 {*movsi_1} (insn_list:REG_DEP_TRUE 11 (nil))
(expr_list:REG_DEAD (reg:DI 62)
(nil)))

so I wonder if the something is not being reduced correctly.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Component|pending |target
 Ever Confirmed|0   |1
   GCC host triplet|x86_64-linux-gnu|
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 06:18:37
   date||


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



[Bug target/27971] eliminate shift in array[(x2)3]

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-06-09 06:20 ---
Here is the RTL we get on PPC:
(insn 6 9 7 2 (set (reg/v:SI 120 [ x ])
(reg:SI 3 r3 [ x ])) 327 {*movsi_internal1} (nil)
(expr_list:REG_DEAD (reg:SI 3 r3 [ x ])
(expr_list:REG_EQUIV (mem/c/i:SI (plus:SI (reg/f:SI 67 ap)
(const_int 24 [0x18])) [4 x+0 S4 A32])
(nil
...

(insn 13 12 14 2 (set (reg:SI 124)
(lshiftrt:SI (reg/v:SI 120 [ x ])
(const_int 2 [0x2]))) 195 {lshrsi3_no_power}
(insn_list:REG_DEP_TRUE 6 (nil))
(expr_list:REG_DEAD (reg/v:SI 120 [ x ])
(nil)))

(insn 14 13 15 2 (parallel [
(set (reg:SI 125)
(and:SI (reg:SI 124)
(const_int 3 [0x3])))
(clobber (scratch:CC))
]) 146 {andsi3} (insn_list:REG_DEP_TRUE 13 (nil))
(expr_list:REG_DEAD (reg:SI 124)
(expr_list:REG_UNUSED (scratch:CC)
(nil

(insn 15 14 17 2 (set (reg:SI 126)
(ashift:SI (reg:SI 125)
(const_int 2 [0x2]))) 189 {ashlsi3_no_power}
(insn_list:REG_DEP_TRUE 14 (nil))
(expr_list:REG_DEAD (reg:SI 125)
(nil)))

Which gets reduced to:
(insn 15 14 17 2 (parallel [
(set (reg:SI 126)
(and:SI (reg:SI 3 r3 [ x ])
(const_int 12 [0xc])))
(clobber (scratch:CC))
]) 146 {andsi3} (nil)
(expr_list:REG_UNUSED (scratch:CC)
(expr_list:REG_DEAD (reg:SI 3 r3 [ x ])
(nil


-- 


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



[Bug fortran/27786] [4.1 only] Bad interaction between Cray pointer, assumed-size array and bounds checking

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


--- Comment #5 from fxcoudert at gcc dot gnu dot org  2006-06-09 06:43 
---
I'm reopening the PR because the bug is not fixed yet on the 4.1 branch. The
current policy is to allow a week before comitting your patch to 4.1 (after
bootstrap  regtesting), and then close the bugzilla PR.

(in case you need info on how to use svn to backport a patch, you can read
http://gcc.gnu.org/wiki/SvnMerge)


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
   Keywords||patch
  Known to fail||4.1.2
  Known to work||4.2.0
 Resolution|FIXED   |
Summary|Bad interaction between Cray|[4.1 only] Bad interaction
   |pointer, assumed-size array |between Cray pointer,
   |and bounds checking |assumed-size array and
   ||bounds checking


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



[Bug fortran/27965] gfortran gives Array bound mismatch for valid program

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


--- Comment #2 from fxcoudert at gcc dot gnu dot org  2006-06-09 06:53 
---
My patch at http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00364.html fixes this
problem (I noted it during while designing the patch, but didn't fill a PR
because I knew it would be fixed soon :)

Thanks Tobias for your help testing -fbounds-check, I hope in the next few
weeks we can make it feature-full and bug-free :)


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

OtherBugsDependingO||27766
  nThis||
 AssignedTo|unassigned at gcc dot gnu   |fxcoudert at gcc dot gnu dot
   |dot org |org
URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2006-
   ||06/msg00364.html
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Keywords||patch
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 06:53:17
   date||


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



[Bug ada/27937] [4.2 Regression] Ada bootstrap failure on Solaris 10/x86

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.2.0
Version|unknown |4.2.0


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



[Bug middle-end/27896] inefficient lowering for return

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


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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 07:25:35
   date||


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



[Bug c/27899] Compile warning with --combine and global register variables.

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-09 07:31 ---
--combine is not tested that well.  In fact for this case, the decls should be
combined into one and not warned about but it looks like GCC combines these two
variables.


-- 


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



[Bug fortran/27897] ICE on common block with the same name as the program.

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.1.2


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



[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

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


--- Comment #11 from pinskia at gcc dot gnu dot org  2006-06-09 07:37 
---
(In reply to comment #10)
   implicit COMPLEX (a-z)
Does that actually declare the variables in MAIN or just say after the first
use, they are declared in that function as complex?

(this should be noted as a seperate bug if it really should declared the
variables in the program instead of the function).


-- 


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



[Bug target/27922] final link failed: Nonrepresentable section on output

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug ada/27936] [4.2 Regression] gnatbind fails to link on Tru64 UNIX

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.2.0


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



[Bug ada/27944] [4.2 Regression] s-taprop.adb:66:06: warning: redundant with clause in body

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords||build
Summary|s-taprop.adb:66:06: warning:|[4.2 Regression] s-
   |redundant with clause in|taprop.adb:66:06: warning:
   |body|redundant with clause in
   ||body
   Target Milestone|--- |4.2.0


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



[Bug middle-end/27945] [4.0/4.1/4.2 Regression] Packed struct of variable length has wrong size

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


--- Comment #4 from pinskia at gcc dot gnu dot org  2006-06-09 07:45 ---
Confirmed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Component|c   |middle-end
 Ever Confirmed|0   |1
  Known to fail||3.4.0 4.0.0 4.1.0 4.2.0
  Known to work||3.3.3
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 07:45:54
   date||
Summary|Packed struct of variable   |[4.0/4.1/4.2 Regression]
   |length has wrong size   |Packed struct of variable
   ||length has wrong size
   Target Milestone|--- |4.0.4


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



[Bug bootstrap/27963] [4.2 Regression] libjava fails to build if it isn't built by default

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
   Target Milestone|--- |4.2.0


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



[Bug fortran/27958] [4.1 only] assignments to and from zero-sized string selections not handled

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.1.2


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



[Bug debug/27970] error while compiling ClanLib-0.8

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


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-06-09 07:49 ---
Can you also attach the preprocessed source?


-- 


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



[Bug bootstrap/27963] [4.2 Regression] libjava fails to build if it isn't built by default

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


-- 

ayers at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |ayers at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 07:57:39
   date||


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



[Bug bootstrap/27963] [4.2 Regression] libjava fails to build if it isn't built by default

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


--- Comment #6 from ayers at gcc dot gnu dot org  2006-06-09 08:01 ---
Patch posted at:

http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00410.html

and waiting for approval.


-- 

ayers at gcc dot gnu dot org changed:

   What|Removed |Added

 CC|d dot ayers at inode dot at |
 Status|ASSIGNED|WAITING


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



[Bug target/27212] vec_cmplt followed by a vec_all_ge, gives two vcmpgtuh instructions

2006-06-09 Thread bonzini at gnu dot org


--- Comment #5 from bonzini at gnu dot org  2006-06-09 08:15 ---
I'll give it a shot.  If combine could, well, combine the two instructions, it
would be quite easy to make a patch, and it would remove some most hackish
aspects of the Altivec implemention.


-- 


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



[Bug middle-end/27889] [4.1/4.2 Regression] ICE on complex assignment in nested function

2006-06-09 Thread paul dot richard dot thomas at cea dot fr


--- Comment #12 from paul dot richard dot thomas at cea dot fr  2006-06-09 
08:50 ---
(In reply to comment #11)
 (In reply to comment #10)
implicit COMPLEX (a-z)
 Does that actually declare the variables in MAIN or just say after the first
 use, they are declared in that function as complex?
 (this should be noted as a seperate bug if it really should declared the
 variables in the program instead of the function).

They are declared in MAIN and the type information should be host associated to
the variables in the function.

According to the gfortran parse tree, this is happening correctly:

$ /irun/bin/gfortran  -fdump-parse-tree pr27889.f90

Namespace: A-H: (REAL 4) I-N: (INTEGER 4) O-Z: (REAL 4)
procedure name = MAIN__
symtree: t  Ambig 0
symbol t (COMPLEX 4)(VARIABLE UNKNOWN-INTENT UNKNOWN-ACCESS
UNKNOWN-PROC
)

symtree: foo  Ambig 0
symbol foo (UNKNOWN 0)(PROCEDURE UNKNOWN-INTENT UNKNOWN-ACCESS
INTERNAL-
PROC SUBROUTINE)

symtree: MAIN__  Ambig 0
symbol MAIN__ (UNKNOWN 0)(PROCEDURE UNKNOWN-INTENT PUBLIC UNKNOWN-PROC
S
UBROUTINE)

symtree: s  Ambig 0
symbol s (COMPLEX 4)(VARIABLE UNKNOWN-INTENT UNKNOWN-ACCESS
UNKNOWN-PROC
)


  CALL foo ()

CONTAINS

  Namespace: A-H: (REAL 4) I-N: (INTEGER 4) O-Z: (REAL 4)
  procedure name = foo
  symtree: foo  Ambig 0 from namespace MAIN__

  ASSIGN MAIN__:t (+ MAIN__:s MAIN__:s)


pr27889.f90: In function 'foo':
pr27889.f90:2: error: invalid operand to binary operator
D.907

pr27889.f90:2: internal compiler error: verify_stmts failed
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://gcc.gnu.org/bugs.html for instructions.


This is rather like that parameter bug, isn't it, Andrew? ie. type information
is not getting correctly broadcast to enclosed procedure blocks.

Paul


-- 


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



[Bug target/27959] [4.1 regression] s390x miscompilation due to clobbering literal pool base reg

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


--- Comment #2 from jakub at gcc dot gnu dot org  2006-06-09 08:56 ---
Works just fine in GCC 3.4.x (in that case with -O2 -mtune=z990 which fails
in 4.1.x as well) and works on the trunk too (but it is unclear whether that's
just because reload chooses different registers by accident or if the problem
has been really fixed).


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|s390x miscompilation due to |[4.1 regression] s390x
   |clobbering literal pool base|miscompilation due to
   |reg |clobbering literal pool base
   ||reg


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



[Bug ada/27936] [4.2 Regression] gnatbind fails to link on Tru64 UNIX

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


--- Comment #5 from ebotcazou at gcc dot gnu dot org  2006-06-09 09:06 
---
I ran into it some time ago too.


-- 

ebotcazou at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug ada/27937] [4.2 Regression] Ada bootstrap failure on Solaris 10/x86

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


--- Comment #1 from ebotcazou at gcc dot gnu dot org  2006-06-09 09:08 
---
Confirmed, this happens when the compiler is configured for SJLJ exceptions.


-- 

ebotcazou at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



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

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


--- Comment #13 from rguenth at gcc dot gnu dot org  2006-06-09 09:34 
---
This no longer blocks 27116 because I was able to fix that differently.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

OtherBugsDependingO|27116   |
  nThis||


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



[Bug c++/27129] [4.1/4.2 Regression] ICE in get_expr_operands

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


--- Comment #7 from jakub at gcc dot gnu dot org  2006-06-09 09:42 ---
This has been fixed by the PR20103 changes.

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


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/20103] [4.0/4.1 regression] ICE in create_tmp_var with C99 style struct initializer

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


--- Comment #55 from jakub at gcc dot gnu dot org  2006-06-09 09:42 ---
*** Bug 27129 has been marked as a duplicate of this bug. ***


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu dot org


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



[Bug target/27082] segfault with virtual class and visibility (hidden)

2006-06-09 Thread tbm at cyrius dot com


--- Comment #13 from tbm at cyrius dot com  2006-06-09 09:57 ---
This segfault also shows up when compiling thunderbird-1.5.0.2 with gcc 4.2 on
Alpha.


-- 


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



[Bug testsuite/27707] g++.dg/tree-ssa/ivopts-1.C fails

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


--- Comment #4 from rguenth at gcc dot gnu dot org  2006-06-09 10:24 ---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug tree-optimization/27039] [4.1 Regression] Unable to determine # of iterations for a simple loop

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


-- 

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


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



[Bug middle-end/26630] [4.0 Regression] Incorrect result when subtracting, casting to short and back to int, adding and multiplying

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


-- 

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


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



[Bug c++/27975] New: warning for comparison of different enum types impossible to control/is undocumented

2006-06-09 Thread patrik dot hagglund at bredband dot net
gcc/cp/call.c build_now_op, emits a warning for comparison of different enum
types. It seems to be neither controlled by any warning option nor documented.

I don't want to fix all thoose warnings (a large amount in our code) right now,
and at the same time turn on -Werror and fix other warnings. This is impossible
right now.


-- 
   Summary: warning for comparison of different enum types
impossible to control/is undocumented
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: patrik dot hagglund at bredband dot net


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



[Bug target/27959] [4.1 regression] s390x miscompilation due to clobbering literal pool base reg

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


--- Comment #3 from krebbel at gcc dot gnu dot org  2006-06-09 11:41 ---
On s390 we use a trick to make the literal pool base register
available on demand. It is defined as eliminable register
which can be eliminated to itself with offset 0. When a reload round
finds a r13 (literal pool base) it asks the back end whether it can
be eliminated and the back end says no. So reload throws any pseudos
out of r13 and marks it as bad_spill_regs_global hence it won't be
used as a reload register.

In your example there is no literal pool reference when entering reload.
So the initial elimination step marks r13 as eliminable and therefore free
to be used in reloads and it actually is used in a reload. In the second 
round reload forces a constant into the literal pool what creates a 
literal pool reference. When update_eliminables is called r13 is marked 
as cant_eliminate and the respective bit in bad_spill_regs_global is set. 
So far so good.

Unfortunately reload seems to think that registers which were once good to
be used in reloads will be good for future reloads as well - thats my
impression at least. The bitmap used_spill_regs is not reset between the
reload rounds. used_spill_regs is used in finish_spills to recalculate the
spill_regs array which then contains r13 since it was used as reload reg in the
first round.

The following patch deletes all registers which are recognized by
update_eliminables as eliminable_previous but cant_eliminate now from the
used_spill_regs bitmap and fixes your testcase.

Since reload is always a bit dodgy and tends to be unpredictable I would be
interested in Ulrichs opinion about the patch. He knows much better whats
going on in reload. So Ulrich do think this makes sense?


Index: gcc/reload1.c
===
*** gcc/reload1.c.orig  2006-06-09 13:12:39.0 +0200
--- gcc/reload1.c   2006-06-09 13:14:54.0 +0200
*** reload (rtx first, int global)
*** 987,992 
--- 987,994 
HARD_REG_SET to_spill;
CLEAR_HARD_REG_SET (to_spill);
update_eliminables (to_spill);
+   AND_COMPL_HARD_REG_SET(used_spill_regs, to_spill);
+ 
for (i = 0; i  FIRST_PSEUDO_REGISTER; i++)
  if (TEST_HARD_REG_BIT (to_spill, i))
{


-- 

krebbel at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



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

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


--- Comment #14 from rguenth at gcc dot gnu dot org  2006-06-09 12:39 
---
Subject: Bug 26998

Author: rguenth
Date: Fri Jun  9 12:39:11 2006
New Revision: 114507

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114507
Log:
2006-06-09  Richard Guenther  [EMAIL PROTECTED]

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

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

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr26998.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp29.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vrp.c


-- 


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



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

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


--- Comment #15 from rguenth at gcc dot gnu dot org  2006-06-09 12:39 
---
Fixed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug middle-end/27116] [4.2 Regression] Incorrect integer division (wrong sign).

2006-06-09 Thread patchapp at dberlin dot org


--- Comment #21 from patchapp at dberlin dot org  2006-06-09 12:55 ---
Subject: Bug number PR27116

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


-- 


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



[Bug bootstrap/27963] [4.2 Regression] libjava fails to build if it isn't built by default

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


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-06-09 13:14 ---
WAITING is used to get feed back from the reporter.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |NEW
   Last reconfirmed|2006-06-09 07:57:39 |2006-06-09 13:14:33
   date||


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



[Bug c++/27977] New: ICE when declaring recursive member in std namespace (illegal code)

2006-06-09 Thread rschiele at uni-mannheim dot de
The following code makes the compiler to consume infinite stack memory during
compilation. Obviously the code is invalid.

struct a {
a() {}
a std::b;
};

This problem does occur with any gcc 4.0.2 or later, not with gcc 3.3.5 or
older. I have not checked versions in between.

std can be replaced with any other namespace known to the compiler to reproduce
the problem.


-- 
   Summary: ICE when declaring recursive member in std namespace
(illegal code)
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rschiele at uni-mannheim dot de
 GCC build triplet: *-*-linux
  GCC host triplet: *-*-linux
GCC target triplet: *-*-linux


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



[Bug fortran/16206] rejects valid array initialization expression

2006-06-09 Thread paul dot richard dot thomas at cea dot fr


--- Comment #5 from paul dot richard dot thomas at cea dot fr  2006-06-09 
15:19 ---
Created an attachment (id=11647)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11647action=view)
An experimental fix for the PR

This was to have been the second of the two approaches, described above.  It
works, in that it fixes the bug but its limitations become obvious, very
quickly; try some arithmetic with an arrya_section, for example.

However, all is not lost!  You will note the heavy use of gmp to do the
arithmetic - that was in preparation for a tactical retreat to approach (i).  I
have done all the tests to understand what happens in expr.c and am confident
that I will have a proper fix in about 1 week.

Paul


-- 


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



[Bug ada/27937] [4.2 Regression] Ada bootstrap failure on Solaris 10/x86

2006-06-09 Thread ro at techfak dot uni-bielefeld dot de


--- Comment #2 from ro at techfak dot uni-bielefeld dot de  2006-06-09 
15:36 ---
Subject: Re:  [4.2 Regression] Ada bootstrap failure on Solaris 10/x86

ebotcazou at gcc dot gnu dot org writes:

 Confirmed, this happens when the compiler is configured for SJLJ exceptions.

But this seems not to be the case here:

% grep -i except gcc/auto-host.h 
/* Define 0/1 to force the choice for exception handling model. */
/* #undef CONFIG_SJLJ_EXCEPTIONS */

Rainer


-- 


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



[Bug c/27978] New: static inline functions code not generated if -fPIC is used

2006-06-09 Thread ykar at list dot ru
I'm attaching the code which demonstates the bug.
If to compile the attached code with:
cc -fPIC -S testlib.c

you can see, that symbol foo is referenced, but no code with foo is
generated (even label foo is missing in assembler code)

(Workaround is to compile with -O flag, with -O code for foo is correctly
generated)

# cc -v
Using built-in specs.
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/gcc-4.1.1/work/gcc-4.1.1/configure
--prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.1
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --disable-libunwind-exceptions --disable-multilib
--disable-libmudflap --disable-libssp --disable-libgcj
--enable-languages=c,c++,objc --enable-shared --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.1 (Gentoo 4.1.1)


-- 
   Summary: static inline functions code not generated if -fPIC is
used
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ykar at list dot ru
 GCC build triplet: x86_64-pc-linux-gnu
  GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu


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



[Bug c/27978] static inline functions code not generated if -fPIC is used

2006-06-09 Thread ykar at list dot ru


--- Comment #1 from ykar at list dot ru  2006-06-09 16:08 ---
Created an attachment (id=11648)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11648action=view)
test case to demonstrate the bug


-- 


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



[Bug c++/27979] New: conversion check confused by enum bitfields

2006-06-09 Thread tbm at cyrius dot com
I think the following invalid conversion error, which is believe is wrong. 
When I remove the bitfield, the program compile fine.  In any case, the error
message isn't really optimal. :)


(sid)4502:[EMAIL PROTECTED]: ~/src] cat test.cpp
class Ast
{
enum AstKind { };
const AstKind kind : 8;
void foo(AstKind k) { }
void bar(void) { foo(kind); }
};
[with gcc 4.2 20060508]
(sid)4503:[EMAIL PROTECTED]: ~/src] /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
test.cpp: In member function 'void Ast::bar()':
test.cpp:6: error: invalid conversion from 'unsigned char' to 'Ast::AstKind'
test.cpp:6: error:   initializing argument 1 of 'void Ast::foo(Ast::AstKind)'
zsh: exit 1 /usr/lib/gcc-snapshot/bin/g++ -c test.cpp

[with gcc 4.2 20060530]
(sid)4504:[EMAIL PROTECTED]: ~/src] /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
test.cpp: In member function 'void Ast::bar()':
test.cpp:6: error: invalid conversion from 'Ast::AstKind' to 'Ast::AstKind'
test.cpp:6: error:   initializing argument 1 of 'void Ast::foo(Ast::AstKind)'
zsh: exit 1 /usr/lib/gcc-snapshot/bin/g++ -c test.cpp
(sid)4505:[EMAIL PROTECTED]: ~/src]


-- 
   Summary: conversion check confused by enum bitfields
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com


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



[Bug target/27758] [4.1 regression] -O0 -fpic link failure

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


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-06-09 16:52 ---
*** Bug 27978 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ykar at list dot ru


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



[Bug target/27978] static inline functions code not generated if -fPIC is used

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


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-06-09 16:52 ---
This is already fixed in 4.1.2 and the mainline.

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/27979] 4.2 Regression] conversion check confused by enum bitfields

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-09 16:56 ---
Confirmed, 4.1.0 accepted this code.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||rejects-valid
  Known to fail||4.2.0
  Known to work||4.1.0
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 16:56:28
   date||
Summary|conversion check confused by|4.2 Regression] conversion
   |enum bitfields  |check confused by enum
   ||bitfields
   Target Milestone|--- |4.2.0


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



[Bug libgcj/27730] Thread.getId() needs implemented

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


--- Comment #1 from tromey at gcc dot gnu dot org  2006-06-09 17:09 ---
Teting a patch.


-- 

tromey at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |tromey at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-05-22 20:26:32 |2006-06-09 17:09:06
   date||


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



[Bug bootstrap/20737] Build fails in target-libiberty

2006-06-09 Thread jbwaters at gmail dot com


--- Comment #15 from jbwaters at gmail dot com  2006-06-09 17:29 ---
As an FYI:

I was able to build 4.0.3 just fine.  4.1.0 and 4.1.1 both fail as per this
ticket.  So whatever changed to break building on NetBSD happened between 4.0.3
and 4.1.0.


-- 


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



[Bug fortran/27980] New: Wrong allocation for zero-sized function result

2006-06-09 Thread tkoenig at gcc dot gnu dot org
From a posting to comp.lang.fortran:

program xint_func
  implicit none
  integer, parameter :: n=3,ii(n)=(/2,0,-1/)
  integer:: i
  character(len=80)  :: line
  do i=1,n
 write (line,'(10I5)'), int_func(ii(i))
  end do
contains
  function int_func(n) result(ivec)
integer, intent(in) :: n
integer :: ivec(n)
integer :: i
if (n  0) then
   forall (i=1:n) ivec(i) = i
end if
  end function int_func
end program xint_func
$ gfortran foo.f90
$ ./a.out
Fortran runtime error: Attempt to allocate a negative amount of memory.
$ gfortran -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../../gcc/trunk/configure --prefix=/home/ig25
--enable-languages=c,fortran
Thread model: posix
gcc version 4.2.0 20060525 (experimental)

I'm looking into this.


-- 
   Summary: Wrong allocation for zero-sized function result
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org


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



[Bug c++/27979] 4.2 Regression] conversion check confused by enum bitfields

2006-06-09 Thread tbm at cyrius dot com


--- Comment #2 from tbm at cyrius dot com  2006-06-09 17:47 ---
The following, related example, fails with gcc 4.2 20060508 but works with
20060530.  It would be great if whoever works on this PR could check what
change was responsible to get this working, and if it was just an accidental
change, whether the following test case should be added to the test suite:

enum EBorderStyle {
   BNATIVE, BNONE, BHIDDEN
};

class BorderValue
{
  public:
EBorderStyle style : 8;
};

class bar
{
BorderValue *border;
EBorderStyle foo() { return border ? border-style : BHIDDEN; }
};


-- 


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



[Bug c++/27979] 4.2 Regression] conversion check confused by enum bitfields

2006-06-09 Thread tbm at cyrius dot com


--- Comment #3 from tbm at cyrius dot com  2006-06-09 18:03 ---
It wasn't accidentally fixed.  It was fixed by Mark Mitchell for PR c++/27506,
which contain the same test case as my 2nd example.  In any case, the first
test case wasn't fixed by the fix for PR 27506.


-- 

tbm at cyrius dot com changed:

   What|Removed |Added

 CC||mark at codesourcery dot com


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



[Bug c++/27826] [4.0/4.1 Regression] ICE in copy_to_mode_reg

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


--- Comment #12 from janis at gcc dot gnu dot org  2006-06-09 18:10 ---
The reduced testcase from comment #7 doesn't fail with my i686 cross compilers
on powerpc-linux, so I did a regression hunt using the testcase from comment
#4.  It identified this patch as the fix on mainline:

   http://gcc.gnu.org/viewcvs?view=revrev=113199

   r113199 | mmitchel | 2006-04-23 18:04:33 + (Sun, 23 Apr 2006)

This is indeed Mark's bitfield patch, Andrew guessed correctly.

I've got another regression hunt running to find the break; it's currently
between revisions 83668 and 83876 in late May 2004; there are broken builds in
there so it might take awhile to keep the hunt progressing. 


-- 


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



[Bug fortran/27980] Wrong allocation for zero-sized function result

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


-- 

tkoenig at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |tkoenig at gcc dot gnu dot
   |dot org |org
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-09 18:18:24
   date||


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



[Bug libstdc++/27878] GCC 4.1.1 build fails on mips-sgi-irix6.5 (libstdc++)/GCC 4.1.0 worked.

2006-06-09 Thread martinol at nrlssc dot navy dot mil


--- Comment #10 from martinol at nrlssc dot navy dot mil  2006-06-09 18:30 
---
gcc-4.1-20060331 snapshots compiles successfully.


-- 


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



[Bug c++/27826] [4.0/4.1 Regression] ICE in copy_to_mode_reg

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


--- Comment #13 from janis at gcc dot gnu dot org  2006-06-09 18:44 ---
The test starts failing on mainline with this patch:

http://gcc.gnu.org/viewcvs?view=revrev=83858

r83858 | rth | 2004-06-29 16:25:28 + (Tue, 29 Jun 2004)


-- 


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



[Bug fortran/27981] New: Strange error message for illegal integer constant

2006-06-09 Thread schnetter at aei dot mpg dot de
The programme

program longint
  real x
  if (.true.) x = 12345678901
end program longint

contains an integer constant that does not fit into 32 bits.  The compiler
gives the following error message:

$ ~/gcc/bin/gfortran -Wall -c longint.f90 
 In file longint.f90:3

  if (.true.) x = 12345678901
 1
Error: Unclassifiable statement in IF-clause at (1)

This is with the compiler version

$ ~/gcc/bin/gfortran --version
GNU Fortran 95 (GCC) 4.2.0 20060527 (experimental)

The error message should instead be Illegal integer constant, or integer
constant too large for default integer kind integer*32, or something similar.


-- 
   Summary: Strange error message for illegal integer constant
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: schnetter at aei dot mpg dot de
 GCC build triplet: i386-apple-darwin8.6.1
  GCC host triplet: i386-apple-darwin8.6.1
GCC target triplet: i386-apple-darwin8.6.1


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



[Bug fortran/16206] rejects valid array initialization expression

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


--- Comment #6 from pault at gcc dot gnu dot org  2006-06-09 19:40 ---
I seem to be on the way to fixing this, so I had beter assign it to myself!

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug libstdc++/27878] GCC 4.1.1 build fails on mips-sgi-irix6.5 (libstdc++)/GCC 4.1.0 worked.

2006-06-09 Thread pcarlini at suse dot de


--- Comment #11 from pcarlini at suse dot de  2006-06-09 19:42 ---
For comparison, please provide the config.log of that snapshot. Thanks.


-- 


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



[Bug c++/27748] [4.2 Regression] rejects _Pragma with macros

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


--- Comment #4 from jakub at gcc dot gnu dot org  2006-06-09 21:13 ---
Subject: Bug 27748

Author: jakub
Date: Fri Jun  9 21:13:25 2006
New Revision: 114519

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114519
Log:
PR preprocessor/27746
* directives.c (do_pragma): Handle pragma with valid namespace
and invalid name coming from macro expansion.
* directives.c (destringize_and_run): Initialize next field in
context.

PR c/27747
PR c++/27748
* directives.c (destringize_and_run): Set NO_EXPAND on the
tokens.

* macro.c (_cpp_backup_tokens): Fix comment typo.
testsuite/
PR c/27747
* gcc.dg/cpp/_Pragma6.c: New test.

PR c++/27748
* g++.dg/cpp/_Pragma1.C: New test.

PR preprocessor/27746
* gcc.dg/gomp/macro-3.c: New test.
* gcc.dg/gomp/macro-4.c: New test.
* g++.dg/gomp/macro-3.C: New test.
* g++.dg/gomp/macro-4.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp/_Pragma1.C
trunk/gcc/testsuite/g++.dg/gomp/macro-3.C
trunk/gcc/testsuite/g++.dg/gomp/macro-4.C
trunk/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-4.c
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/directives.c
trunk/libcpp/macro.c


-- 


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



[Bug preprocessor/27746] ICE on openmp code when using _Pragma from macro

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


--- Comment #13 from jakub at gcc dot gnu dot org  2006-06-09 21:13 ---
Subject: Bug 27746

Author: jakub
Date: Fri Jun  9 21:13:25 2006
New Revision: 114519

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114519
Log:
PR preprocessor/27746
* directives.c (do_pragma): Handle pragma with valid namespace
and invalid name coming from macro expansion.
* directives.c (destringize_and_run): Initialize next field in
context.

PR c/27747
PR c++/27748
* directives.c (destringize_and_run): Set NO_EXPAND on the
tokens.

* macro.c (_cpp_backup_tokens): Fix comment typo.
testsuite/
PR c/27747
* gcc.dg/cpp/_Pragma6.c: New test.

PR c++/27748
* g++.dg/cpp/_Pragma1.C: New test.

PR preprocessor/27746
* gcc.dg/gomp/macro-3.c: New test.
* gcc.dg/gomp/macro-4.c: New test.
* g++.dg/gomp/macro-3.C: New test.
* g++.dg/gomp/macro-4.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp/_Pragma1.C
trunk/gcc/testsuite/g++.dg/gomp/macro-3.C
trunk/gcc/testsuite/g++.dg/gomp/macro-4.C
trunk/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-4.c
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/directives.c
trunk/libcpp/macro.c


-- 


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



[Bug c/27747] [4.2 Regression] ice _Pragma and macros

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


--- Comment #4 from jakub at gcc dot gnu dot org  2006-06-09 21:13 ---
Subject: Bug 27747

Author: jakub
Date: Fri Jun  9 21:13:25 2006
New Revision: 114519

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114519
Log:
PR preprocessor/27746
* directives.c (do_pragma): Handle pragma with valid namespace
and invalid name coming from macro expansion.
* directives.c (destringize_and_run): Initialize next field in
context.

PR c/27747
PR c++/27748
* directives.c (destringize_and_run): Set NO_EXPAND on the
tokens.

* macro.c (_cpp_backup_tokens): Fix comment typo.
testsuite/
PR c/27747
* gcc.dg/cpp/_Pragma6.c: New test.

PR c++/27748
* g++.dg/cpp/_Pragma1.C: New test.

PR preprocessor/27746
* gcc.dg/gomp/macro-3.c: New test.
* gcc.dg/gomp/macro-4.c: New test.
* g++.dg/gomp/macro-3.C: New test.
* g++.dg/gomp/macro-4.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp/_Pragma1.C
trunk/gcc/testsuite/g++.dg/gomp/macro-3.C
trunk/gcc/testsuite/g++.dg/gomp/macro-4.C
trunk/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c
trunk/gcc/testsuite/gcc.dg/gomp/macro-4.c
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/libcpp/ChangeLog
trunk/libcpp/directives.c
trunk/libcpp/macro.c


-- 


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



[Bug fortran/27916] Problem with allocatable arrays inside OpenMP do loop

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


--- Comment #2 from jakub at gcc dot gnu dot org  2006-06-09 21:18 ---
Subject: Bug 27916

Author: jakub
Date: Fri Jun  9 21:18:42 2006
New Revision: 114520

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114520
Log:
PR fortran/27916
* trans-openmp.c (gfc_omp_clause_default_ctor): New function.
* trans.h (gfc_omp_clause_default_ctor): New prototype.
* f95-lang.c (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Define.

* testsuite/libgomp.fortran/pr27916-1.f90: New test.
* testsuite/libgomp.fortran/pr27916-2.f90: New test.

Added:
trunk/libgomp/testsuite/libgomp.fortran/pr27916-1.f90
trunk/libgomp/testsuite/libgomp.fortran/pr27916-2.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/f95-lang.c
trunk/gcc/fortran/trans-openmp.c
trunk/gcc/fortran/trans.h
trunk/libgomp/ChangeLog


-- 


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



[Bug fortran/27916] Problem with allocatable arrays inside OpenMP do loop

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


--- Comment #3 from jakub at gcc dot gnu dot org  2006-06-09 21:25 ---
Should be fixed in SVN.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug preprocessor/27746] ICE on openmp code when using _Pragma from macro

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


--- Comment #14 from jakub at gcc dot gnu dot org  2006-06-09 21:26 ---
Should be fixed in SVN.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c/27747] [4.2 Regression] ice _Pragma and macros

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


--- Comment #5 from jakub at gcc dot gnu dot org  2006-06-09 21:26 ---
Should be fixed in SVN.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c++/27748] [4.2 Regression] rejects _Pragma with macros

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


--- Comment #5 from jakub at gcc dot gnu dot org  2006-06-09 21:27 ---
Should be fixed in SVN.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug libgcj/27730] Thread.getId() needs implemented

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


--- Comment #2 from tromey at gcc dot gnu dot org  2006-06-09 21:36 ---
Fixed.


-- 

tromey at gcc dot gnu dot org changed:

   What|Removed |Added

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


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



[Bug libgcj/27730] Thread.getId() needs implemented

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


--- Comment #3 from tromey at gcc dot gnu dot org  2006-06-09 21:37 ---
Subject: Bug 27730

Author: tromey
Date: Fri Jun  9 21:37:32 2006
New Revision: 114524

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114524
Log:
PR libgcj/27730:
* java/lang/Thread.java (threadId): New field.
(nextThreadId): New static field.
(Thread): Initialize new field.
(getId): New method.

Modified:
trunk/libjava/ChangeLog
trunk/libjava/java/lang/Thread.java


-- 


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



[Bug java/27982] New: Make gcj inline methods in java.nio.Buffer

2006-06-09 Thread daney at gcc dot gnu dot org
There are some optimization ideas in this e-mail thread (especially in the
leaves or the thread).

http://gcc.gnu.org/ml/java/2006-06/msg00030.html

Basically, Buffers have no accessable constructors, so the compiler knows that
there can be no user classes derived from Buffer.  Buffers can be treated much
like final classes and all Buffer methods could be inlined.

Many of the get and put methods could be inlined as if they were fancy array
accesses.


-- 
   Summary: Make gcj inline methods in java.nio.Buffer
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P3
 Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: daney at gcc dot gnu dot org
 GCC build triplet: *-*-*
  GCC host triplet: *-*-*
GCC target triplet: *-*-*


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



[Bug target/26347] hidden weak extern functions fail regardless of existence on alpha/linux

2006-06-09 Thread vapier at gentoo dot org


--- Comment #8 from vapier at gentoo dot org  2006-06-09 22:01 ---
unless i did something wrong, it's still broken with gcc-4.1.1 ... except now i
get an ICE:

[EMAIL PROTECTED] 0 ~ $ alpha-unknown-linux-gnu-gcc -c alpha-hidden-weak.c
alpha-hidden-weak.c: In function '_start':
alpha-hidden-weak.c:8: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://gcc.gnu.org/bugs.html for instructions.

[EMAIL PROTECTED] 0 ~ $ alpha-unknown-linux-gnu-gcc --version
alpha-unknown-linux-gnu-gcc (GCC) 4.1.1
Copyright (C) 2006 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.


-- 

vapier at gentoo dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |


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



[Bug fortran/24558] ENTRY doesn't work in module procedures

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


--- Comment #6 from pault at gcc dot gnu dot org  2006-06-09 22:16 ---
Subject: Bug 24558

Author: pault
Date: Fri Jun  9 22:16:08 2006
New Revision: 114526

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114526
Log:
2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
PR fortran/20877
PR fortran/25047
* decl.c (get_proc_name): Add new argument to flag that a
module function entry is being treated. If true, correct
error condition, add symtree to module namespace and add
a module procedure.
(gfc_match_function_decl, gfc_match_entry,
gfc_match_subroutine): Use the new argument in calls to
get_proc_name.
* resolve.c (resolve_entries): ENTRY symbol reference to
to master entry namespace if a module function.
* trans-decl.c (gfc_create_module_variable): Return if
the symbol is an entry.
* trans-exp.c (gfc_conv_variable): Check that parent_decl
is not NULL.

2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
* gfortran.dg/entry_6.f90: New test.

PR fortran/20877
PR fortran/25047
* gfortran.dg/entry_7.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/entry_6.f90
trunk/gcc/testsuite/gfortran.dg/entry_7.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/decl.c
trunk/gcc/fortran/resolve.c
trunk/gcc/fortran/trans-decl.c
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/25047] insert_bbt(): Duplicate key found!

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


--- Comment #3 from pault at gcc dot gnu dot org  2006-06-09 22:16 ---
Subject: Bug 25047

Author: pault
Date: Fri Jun  9 22:16:08 2006
New Revision: 114526

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114526
Log:
2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
PR fortran/20877
PR fortran/25047
* decl.c (get_proc_name): Add new argument to flag that a
module function entry is being treated. If true, correct
error condition, add symtree to module namespace and add
a module procedure.
(gfc_match_function_decl, gfc_match_entry,
gfc_match_subroutine): Use the new argument in calls to
get_proc_name.
* resolve.c (resolve_entries): ENTRY symbol reference to
to master entry namespace if a module function.
* trans-decl.c (gfc_create_module_variable): Return if
the symbol is an entry.
* trans-exp.c (gfc_conv_variable): Check that parent_decl
is not NULL.

2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
* gfortran.dg/entry_6.f90: New test.

PR fortran/20877
PR fortran/25047
* gfortran.dg/entry_7.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/entry_6.f90
trunk/gcc/testsuite/gfortran.dg/entry_7.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/decl.c
trunk/gcc/fortran/resolve.c
trunk/gcc/fortran/trans-decl.c
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/20877] result may not be entry

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


--- Comment #3 from pault at gcc dot gnu dot org  2006-06-09 22:16 ---
Subject: Bug 20877

Author: pault
Date: Fri Jun  9 22:16:08 2006
New Revision: 114526

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114526
Log:
2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
PR fortran/20877
PR fortran/25047
* decl.c (get_proc_name): Add new argument to flag that a
module function entry is being treated. If true, correct
error condition, add symtree to module namespace and add
a module procedure.
(gfc_match_function_decl, gfc_match_entry,
gfc_match_subroutine): Use the new argument in calls to
get_proc_name.
* resolve.c (resolve_entries): ENTRY symbol reference to
to master entry namespace if a module function.
* trans-decl.c (gfc_create_module_variable): Return if
the symbol is an entry.
* trans-exp.c (gfc_conv_variable): Check that parent_decl
is not NULL.

2006-06-10  Paul Thomas  [EMAIL PROTECTED]

PR fortran/24558
* gfortran.dg/entry_6.f90: New test.

PR fortran/20877
PR fortran/25047
* gfortran.dg/entry_7.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/entry_6.f90
trunk/gcc/testsuite/gfortran.dg/entry_7.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/decl.c
trunk/gcc/fortran/resolve.c
trunk/gcc/fortran/trans-decl.c
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug libgcj/27983] New: FAIL: md5test output - gij test

2006-06-09 Thread danglin at gcc dot gnu dot org
byte compile: /mnt/gnu/gcc/objdir/gcc/gcj
-B/mnt/gnu/gcc/objdir/hppa2.0w-hp-hpux
11.11/libjava/ -B/mnt/gnu/gcc/objdir/gcc/ --encoding=UTF-8 -C
-I/mnt/gnu/gcc/obj
dir/hppa2.0w-hp-hpux11.11/libjava/testsuite/../libgcj-4.2.0.jar -g
/mnt/gnu/gcc/
gcc/libjava/testsuite/libjava.lang/md5test.java -d
/mnt/gnu/gcc/objdir/hppa2.0w-
hp-hpux11.11/libjava/testsuite 2@ stdout
PASS: md5test byte compilation
md5test
md5test
set_ld_library_path_env_vars:
ld_library_path=.:/mnt/gnu/gcc/objdir/hppa2.0w-hp-
hpux11.11/./libjava/.libs
Setting LD_LIBRARY_PATH to
.:/mnt/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libjava
/.libs:.:/mnt/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libjava/.libs:.:/mnt/gnu/gc
c/objdir/hppa2.0w-hp-hpux11.11/./libjava/.libs
/usr/lib/dld.sl: Filename passed is Null.
/usr/lib/dld.sl: No such file or directory
0CC175B9C0F1B6A831C399E269772661
0CC175B9C0F1B6A831C399E269772661
900150983CD24FB0D6963F7D28E17F72
900150983CD24FB0D6963F7D28E17F72
F96B697D7CB7938D525A2F31AAF161D0
F96B697D7CB7938D525A2F31AAF161D0
C3FCD3D76192E4007DFB496CCA67E13B
C3FCD3D76192E4007DFB496CCA67E13B
D174AB98D277D9F5A5611C2C9F419D9F
D174AB98D277D9F5A5611C2C9F419D9F
57EDF4A22BE3C955AC49DA2E2107B67A
57EDF4A22BE3C955AC49DA2E2107B67A
PASS: md5test execution - gij test
FAIL: md5test output - gij test


-- 
   Summary: FAIL: md5test output - gij test
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgcj
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: hppa2.0w-hp-hpux11.11
  GCC host triplet: hppa2.0w-hp-hpux11.11
GCC target triplet: hppa2.0w-hp-hpux11.11


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



[Bug debug/27851] Hour-long segfault with -O1 -g on gcc.dg/parm-impl-decl-1.c

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


--- Comment #3 from wilson at gcc dot gnu dot org  2006-06-10 01:19 ---
This is a C front end bug.  The C front end is creating a circular symbol
table, where the function h is defined both in the external scope and inside
itself.  The dwarf2out.c code then goes into an infinite recursion trying to
tree walk the circular symbol table.

The syntax error is not needed to reproduce the problem.  You just need two
functions with implicit function declarations in their parameter list.  For
instance:
foo (int (*p)[sizeof(j())])
{
}
h (int (*p)[sizeof(i())])
{
}
The C front end problem can be reproduced with only one function, but you need
two to trigger the dwarf2out.c failure.

You also don't need a checking enabled build to reproduce this.

The dwarf code works in the presence of a single circular reference in the
symbol table because there is code in gen_subprogram_die that catches the case
where we try to define a function twice.  This doesn't work when we have two
circular references.  Now the function h is defined in 3 places, externally,
inside itself, and inside foo.  The one inside foo is turned into a
declaration, and now the short circuit code in gen_subprogram_die doesn't work,
and we get the infinite recursion.

The problem occurs in get_parm_info and store_parm_decls_newstyle in c-decl.c. 
The first function tears apart the binding scope for parameters.  When it sees
a function, it puts it on the others list.  Then store_parm_decls_newstyle
reinserts it in the proper place in the proper scope with nested=0 regardless
of what the original value of nested was.  This appears to be the bug.

When the function i, for instance, was inserted into binding scopes, it was put
in two of them.  It was put in the external scope with nested=0, and it was put
in the param scope with nested=1.  If this info was preserved by get_parm_info
and store_parm_decls_newstyle, then the bug would not occur.

The circular refernence is created in pop_scope.  When popping the scope for
the function h, i is inserted into the BLOCK_VARS for the function body because
nested is 0.  When popping the external scope, i is inserted into the
BLOCK_VARS for the external scope, because nested is 0.  Now we have the same
decl in two places in the symbol table.  When we handle the function h for the
external scope, it is chained to i, and now since i is also declared inside the
function h, the function h is also declared inside itself.  When we add foo, h
is now also declared inside foo, and foo inside h.

I don't see an easy way to fix this without adding aanother datastructure.  We
could change the others field to be a structure containing a tree and the
nested info, and then store_parm_decls_newstyle can get the nested value
correct when it reinserts the tree into the symbol table.


-- 

wilson at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||wilson at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-10 01:19:03
   date||


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



[Bug c++/27975] warning for comparison of different enum types impossible to control/is undocumented

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-10 02:21 ---
Why is this that bad of a warning, really it could prove useful to make sure
that you don't end up with always true comparisons because enums are not the
same as their under lieing type in C++.


-- 


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



[Bug c++/27977] ICE when declaring recursive member in std namespace (illegal code)

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-10 02:47 ---
Confirmed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  GCC build triplet|*-*-linux   |
   GCC host triplet|*-*-linux   |
 GCC target triplet|*-*-linux   |
   Keywords||error-recovery, ice-on-
   ||invalid-code
  Known to fail||4.0.0 4.2.0 4.1.0
  Known to work||3.4.0
   Last reconfirmed|-00-00 00:00:00 |2006-06-10 02:47:29
   date||
   Target Milestone|--- |4.0.4


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



[Bug rtl-optimization/27761] combine miscompiles

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


--- Comment #5 from wilson at gcc dot gnu dot org  2006-06-10 02:49 ---
If a combination is successful, we will delete i1 and i2, so it doesn't matter
if they changed accidentally.

If a combination fails, then we go through undobuf and revert all changes, so
it doesn't matter if i1 or i2 changed accidentally.  They will be restored to
their original values when we are done.

The only case where it matters is if added_sets_2 or added_sets_1 is true.  In
this case, we will re-add the patterns from i1 and/or i2 after the combination.
 So in this case, we need to make sure we still have the original patterns.  We
already make a copy of the i2 pattern for this purpose.  i2pat is a copy, and
is only used if added_sets_2 is true.  So we just need to do the same for
i1pat.

I agree the comment before the i2pat is a bit confusing.  It looks like the
copy was originally added to fix an obscure problem, but it also happens to fix
this one too.

It looks like there is an unnecessary gen_rtx_SET call, as i2pat will only be
used if added_sets_2 is true.  So the code setting i2pat should be moved inside
the added_sets_2 if statement.  The new i1pat code should work the same way.

The actual modification of the if_then_else rtl happens inside force_to_mode,
as called from simplify_and_const_int.  See the uses of SUBST in the
if_then_else case in force_to_mode.  This problem could be fixed if we
generated new rtl here instead of using SUBST, but I don't think that is
helpful, as there are other places that also call SUBST.  It is safer to make
the i1pat copy.


-- 

wilson at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||wilson at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-10 02:49:49
   date||


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



[Bug fortran/27981] Strange error message for illegal integer constant

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


--- Comment #1 from kargl at gcc dot gnu dot org  2006-06-10 05:03 ---
Erik,

Thanks for the report.  This is yet another example of gfortran's
error handling code getting confused.  If you remove the if (.true.)
then you get the error message you want.  If the if statement, the
error is buffered then gfortran tries a different path to resolve 
the if clause.  gfortran eventually gives up, but the original error
is lost.


-- 

kargl at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu dot org


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