[Bug target/27006] [4.1/4.2 Regression] Invalid altivec constant loading code

2006-04-14 Thread dje at watson dot ibm dot com


--- Comment #12 from dje at watson dot ibm dot com  2006-04-14 14:32 ---
Subject: Re:  [4.1/4.2 Regression] Invalid altivec constant loading code 

One can produce a few more values fairly easily, but having GCC
know the optimal sequence for all constants could be rather bulky.

http://www.informatik.uni-bremen.de/~hobold/av/AltiVecConstants.asc
http://www.informatik.uni-bremen.de/~hobold/AltiVec.html


-- 


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



[Bug target/27282] [4.2 regression] ICE in final_scan_insn, at final.c:2448 - could not split insn

2006-04-25 Thread dje at watson dot ibm dot com


--- Comment #7 from dje at watson dot ibm dot com  2006-04-25 15:21 ---
Subject: Re:  [4.2 regression] ICE in final_scan_insn, at final.c:2448 - could
not split insn 

The patch may be necessary, but does not fix the testcase.  The testcase
needs the patch that Andrew originally tested:

Index: combine.c
===
--- combine.c   (revision 113239)
+++ combine.c   (working copy)
@@ -8210,7 +8209,8 @@ simplify_and_const_int (rtx x, enum mach
 return tem;

   if (!x)
-x = simplify_gen_binary (AND, GET_MODE (varop), varop, GEN_INT (constop));
+x = simplify_gen_binary (AND, GET_MODE (varop), varop,
+gen_int_mode (constop, mode));
   if (GET_MODE (x) != mode)
 x = gen_lowpart (mode, x);
   return x;


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-07-13 Thread dje at watson dot ibm dot com


--- Comment #10 from dje at watson dot ibm dot com  2006-07-13 16:31 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

>>>>> edmar at freescale dot com writes:

edmar> I tried the patch on comment 7 on gcc main line from yesterday. It did
not work
edmar> for me:

Tried the patch with what specific example?  I have mainline built
with the patch and tested the testcases from both PR 27287 and PR 27875.
Both succeed.

Are you absolutely sure that you applied the patch and rebuilt the
compiler?  Are you absolutely sure that you tested the compiler you just
built and did not accidentally test another installed compiler?


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-07-13 Thread dje at watson dot ibm dot com


--- Comment #12 from dje at watson dot ibm dot com  2006-07-13 19:58 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

>>>>> edmar at freescale dot com writes:

edmar> And to kill the last shread of doubt, here I am using the xgcc present
on the
edmar> very same build directoty:
edmar> /local/gnu_toolchain/build_area/obj_gcc-trunk_e500v2/gcc/xgcc -O2 -c
foo.c

edmar> Did I miss anything ?

Yes, you missed "-B./" or
"-B/local/gnu_toolchain/build_area/obj_gcc-trunk_e500v2/gcc/"

You are using the newly built driver "xgcc", but invoking a
previously installed cc1 compiler.  You are not testing the newly built
compiler containing the patch.


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-07-13 Thread dje at watson dot ibm dot com


--- Comment #14 from dje at watson dot ibm dot com  2006-07-13 20:36 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

What, exactly, is your testcase foo.c?  The example at the top of
PR 28287?

$ cat foo.c
double f (void) { return 0; }
$ ./xgcc -B./ -O2 -S foo.c
$ ./xgcc -B./ -v
Reading specs from ./specs
Target: powerpc-unknown-linux-gnuspe
Configured with: /farm/dje/src/src/configure
--target=powerpc-unknown-linux-gnuspe --enable-e500_double --enable-languages=c
Thread model: posix
gcc version 4.2.0 20060713 (experimental)
$ cat foo.s
.file   "foo.c"
.section".text"
.align 2
.globl f
.type   f, @function
f:
lis 9,[EMAIL PROTECTED]
la 9,[EMAIL PROTECTED](9)
lwz 3,0(9)
lwz 4,4(9)
blr
.size   f, .-f
.section.rodata
.align 3
.set.LANCHOR0,. + 0
.LC0:
.4byte  0
.4byte  0
.ident  "GCC: (GNU) 4.2.0 20060713 (experimental)"
.section.note.GNU-stack,"",@progbits
$ cd ...src...
$ svn diff spe.md
Index: spe.md
===
--- spe.md  (revision 115408)
+++ spe.md  (working copy)
@@ -2211,11 +2211,13 @@
   [(set_attr "length" "8")])

 (define_insn "*frob_di_df_2"
-  [(set (subreg:DF (match_operand:DI 0 "register_operand" "=&r") 0)
-   (match_operand:DF 1 "register_operand" "r"))]
+  [(set (subreg:DF (match_operand:DI 0 "register_operand" "=&r,r") 0)
+   (match_operand:DF 1 "input_operand" "r,m"))]
   "TARGET_E500_DOUBLE"
-  "evmergehi %H0,%1,%1\;evmergelo %L0,%1,%1"
-  [(set_attr "length" "8")])
+  "@
+   evmergehi %H0,%1,%1\;evmergelo %L0,%1,%1
+   evldd%X1 %0,%y1"
+  [(set_attr "length" "8,*")])

 (define_insn "*mov_sidf_e500_subreg0"
   [(set (subreg:SI (match_operand:DF 0 "register_operand" "+r") 0)


-- 


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



[Bug tree-optimization/18048] [4.0/4.1 Regression] mgrid loop performance regression with ivopts (register pressure)

2005-11-13 Thread dje at watson dot ibm dot com


--- Comment #21 from dje at watson dot ibm dot com  2005-11-14 01:58 ---
Subject: Re:  [4.0/4.1 Regression] mgrid loop performance regression with
ivopts (register pressure) 

And mesa has taken a performance dive...


-- 


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



[Bug target/24779] [4.0 Regression] Python miscompilation - TOC reload

2005-11-16 Thread dje at watson dot ibm dot com


--- Comment #5 from dje at watson dot ibm dot com  2005-11-16 17:45 ---
Subject: Re:  Python miscompilation - TOC reload 

Appended is a proposed patch to backport the easy_fp_constant
change to 4.0.  Can you check if this fixes the problem?  This patch may
hurt performance because the float extend functionality is not in 4.0.

PR target/24779
* config/rs6000/rs6000.c (easy_fp_constant): SFmode constant
0.0f is easy.  Return 0 for SFmode and DFmode before reload when
flag_unsafe_math_optimizations not enabled.
* config/rs6000/rs6000.md (movdf splitter): Use
const_double_operand predicate for TARGET_POWERPC64.

Index: rs6000.c
===
*** rs6000.c(revision 106255)
--- rs6000.c(working copy)
*** easy_fp_constant (rtx op, enum machine_m
*** 2277,2283 
long k[2];
REAL_VALUE_TYPE rv;

!   if (TARGET_E500_DOUBLE)
return 0;

REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
--- 2277,2290 
long k[2];
REAL_VALUE_TYPE rv;

!   /* Force constants to memory before reload to utilize
!compress_float_constant.
!Avoid this when flag_unsafe_math_optimizations is enabled
!because RDIV division to reciprocal optimization is not able
!to regenerate the division.  */
!   if (TARGET_E500_DOUBLE
! || (!reload_in_progress && !reload_completed
! && !flag_unsafe_math_optimizations))
return 0;

REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
*** easy_fp_constant (rtx op, enum machine_m
*** 2291,2296 
--- 2298,2316 
  {
long l;
REAL_VALUE_TYPE rv;
+ 
+   /* The constant 0.f is easy.  */
+   if (op == CONST0_RTX (SFmode))
+   return 1;
+ 
+   /* Force constants to memory before reload to utilize
+compress_float_constant.
+Avoid this when flag_unsafe_math_optimizations is enabled
+because RDIV division to reciprocal optimization is not able
+to regenerate the division.  */
+   if (!reload_in_progress && !reload_completed
+ && !flag_unsafe_math_optimizations)
+   return 0;

REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
REAL_VALUE_TO_TARGET_SINGLE (rv, l);
Index: rs6000.md
===
*** rs6000.md   (revision 106255)
--- rs6000.md   (working copy)
***
*** 8043,8049 

  (define_split
[(set (match_operand:DF 0 "gpc_reg_operand" "")
!   (match_operand:DF 1 "easy_fp_constant" ""))]
"TARGET_POWERPC64 && reload_completed
 && ((GET_CODE (operands[0]) == REG && REGNO (operands[0]) <= 31)
 || (GET_CODE (operands[0]) == SUBREG
--- 8043,8049 

  (define_split
[(set (match_operand:DF 0 "gpc_reg_operand" "")
!   (match_operand:DF 1 "const_double_operand" ""))]
"TARGET_POWERPC64 && reload_completed
 && ((GET_CODE (operands[0]) == REG && REGNO (operands[0]) <= 31)
 || (GET_CODE (operands[0]) == SUBREG


-- 


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



[Bug target/24779] [4.0 Regression] Python miscompilation - TOC reload

2005-11-17 Thread dje at watson dot ibm dot com


--- Comment #9 from dje at watson dot ibm dot com  2005-11-17 15:17 ---
Subject: Re:  [4.0 Regression] Python miscompilation - TOC reload 

"Reliably" is the wrong word.  The patch will fix the problem reliably for
the default case; it will not fix it for a particular set of options.

The remaining problem is seeing constants through TOC.


-- 


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



[Bug target/25180] [4.1 Regression] ICE during kernel build.

2005-12-19 Thread dje at watson dot ibm dot com


--- Comment #14 from dje at watson dot ibm dot com  2005-12-19 15:32 ---
Subject: Re:  [4.1 Regression] ICE during kernel build. 

Okay.


-- 


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



[Bug target/27287] [4.1 Regression] returning constant double

2006-08-29 Thread dje at watson dot ibm dot com


--- Comment #22 from dje at watson dot ibm dot com  2006-08-29 19:26 ---
Subject: Re:  [4.1 Regression] returning constant double 

One of the patterns probably needs a r->m case as well, but we
need a testcase to figure out which one.


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-08-30 Thread dje at watson dot ibm dot com


--- Comment #29 from dje at watson dot ibm dot com  2006-08-30 18:08 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

Yes, I was testing out the same change as your second patch.  That
looks reasonable if it works.

By the way, the use of "%H" in the frob patterns is completely
wrong and should be removed. %H does not mean high register.


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-08-30 Thread dje at watson dot ibm dot com


--- Comment #30 from dje at watson dot ibm dot com  2006-08-30 18:42 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

In other words, should the lwz actually be evlwwsplat?


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-08-31 Thread dje at watson dot ibm dot com


--- Comment #34 from dje at watson dot ibm dot com  2006-08-31 13:50 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

>>>>> guenter at roeck-us dot net writes:

guenter> Hmm ... what would be the point ? evlwwsplat copies 32 bit memory
content into
guenter> the upper and lower 32 bits of the target register. The upper part is
not
guenter> needed in the given case, so moving data into it would not provide any
benefit.
guenter> Am I missing something ?

Because the pattern is emitting evmergelo/evmergehi for the r->r
case, which is the equivalent data transfer and duplication, for no
apparent reason.

guenter> Would using evlwwsplat make subsequent optimizations more difficult ?
That
guenter> might be an argument against it. Other than that, I don't really care
which
guenter> opcodes to use, as long as the resulting code works.

The choice of emitting mnemonics is performed as the very last
stage, so the compiler does not have any knowledge of this if the RTL
description does not express this.

David


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-08-31 Thread dje at watson dot ibm dot com


--- Comment #35 from dje at watson dot ibm dot com  2006-08-31 14:23 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

>>>>> guenter at roeck-us dot net writes:

guenter> Hmm ... what would be the point ? evlwwsplat copies 32 bit memory
content into
guenter> the upper and lower 32 bits of the target register. The upper part is
not
guenter> needed in the given case, so moving data into it would not provide any
benefit.
guenter> Am I missing something ?

Because the pattern is emitting evmergelo/evmergehi for the r->r
case, which is the equivalent data transfer and duplication, for no
apparent reason.

guenter> Would using evlwwsplat make subsequent optimizations more difficult ?
That
guenter> might be an argument against it. Other than that, I don't really care
which
guenter> opcodes to use, as long as the resulting code works.

The choice of emitting mnemonics is performed as the very last
stage, so the compiler does not have any knowledge of this if the RTL
description does not express this.

David


-- 


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



[Bug target/27287] [4.1/4.2 Regression] returning constant double

2006-09-01 Thread dje at watson dot ibm dot com


--- Comment #36 from dje at watson dot ibm dot com  2006-09-01 19:56 ---
Subject: Re:  [4.1/4.2 Regression] returning constant double 

What is confusing to me is that the r->r case is using evmergehi
and evmergelo.  This is placing the value in both halves of the SIMD
register.  It seems like this could have been done with two "mr".

It is ambiguous whether the pattern is trying to load the full 64
bit register or not.


-- 


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



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

2006-10-03 Thread dje at watson dot ibm dot com


--- Comment #22 from dje at watson dot ibm dot com  2006-10-03 18:09 ---
Subject: Re:  [4.2 Regression] Performace problem with indexed load/stores on
powerpc 

I am not suggesting that the problem has to be solved in
swap_commutative_operands, etc.  I would think that GCC should be able to
create commutative addresses where they are formed.


-- 


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



[Bug tree-optimization/32865] [4.3 Regression] glibc ICE's gcc-4.3.0 SSA corruption

2007-07-23 Thread dje at watson dot ibm dot com


--- Comment #5 from dje at watson dot ibm dot com  2007-07-23 18:05 ---
Subject: Re:  [4.3 Regression] glibc ICE's gcc-4.3.0 SSA corruption 

>>>>> michelin60 at gmail dot com writes:

michelin60> Doing a search of PR's filed I came up, surprise, with no remotely
equivalent
michelin60> report and I chose people that matched what I reported. As the
author of the
michelin60> report I think that I have the right to choose peple that match as
provided by
michelin60> the MAINTAINER's list

No, you do not.  You submitted the bug.  Let the GCC developers
decide how best to triage and analyse the bug.

David


-- 


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



[Bug regression/32582] Bootstrap with vectorization enabled fails with ICE on PPC

2007-07-28 Thread dje at watson dot ibm dot com


--- Comment #10 from dje at watson dot ibm dot com  2007-07-28 19:40 ---
Subject: Re:  Bootstrap with vectorization enabled fails with ICE on PPC 

Should this test be using -mabi=altivec or is there a general
assumption of -mabi=altivec when using autovec?  That conditionally sets
the call clobbered registers correctly.  I don't think the MD should
change for -maltivec.

David


-- 


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



[Bug regression/32582] Bootstrap with vectorization enabled fails with ICE on PPC

2007-07-28 Thread dje at watson dot ibm dot com


--- Comment #12 from dje at watson dot ibm dot com  2007-07-28 19:48 ---
Subject: Re:  Bootstrap with vectorization enabled fails with ICE on PPC 

And we default to ALTIVEC ABI for powerpc-linux:

  /* Set Altivec ABI as default for powerpc64 linux.  */
  if (TARGET_ELF && TARGET_64BIT)
{
  rs6000_altivec_abi = 1;
  TARGET_ALTIVEC_VRSAVE = 1;
}

So something else is wrong.

David


-- 


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



[Bug regression/32582] Bootstrap with vectorization enabled fails with ICE on PPC

2007-07-28 Thread dje at watson dot ibm dot com


--- Comment #15 from dje at watson dot ibm dot com  2007-07-28 21:48 ---
Subject: Re:  Bootstrap with vectorization enabled fails with ICE on PPC 

>>>>> rakdver at kam dot mff dot cuni dot cz writes:

rakdver> Probably the problem is that -maltivec does not
rakdver> imply -mabi=altivec, or some similar omission.

-maltivec does not imply -mabi=altivec, which is intended.

The Bugzilla PR says the target is powerpc64-linux, which
implicitly should enable -mabi=altivec.  If this is some other target,
then the BOOT_CFLAGS should include -mabi=altivec.  Either something is
wrong with GCC enabling ALTIVEC_ABI or this is cockpit error in the
options used to bootstrap GCC that has been hidden until now.

David


-- 


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



[Bug regression/32582] Bootstrap with vectorization enabled fails with ICE on PPC

2007-07-29 Thread dje at watson dot ibm dot com


--- Comment #18 from dje at watson dot ibm dot com  2007-07-29 11:57 ---
Subject: Re:  Bootstrap with vectorization enabled fails with ICE on PPC 

>>>>> rakdver at kam dot mff dot cuni dot cz writes:

>> it's on ppc-linux.

rakdver> I mean, I did the testing on ppc-linux; it is possible that there is
rakdver> another misscompilation on ppc64-linux, though.

The target in the PR says powerpc64-linux, which is what confused
Andrew and me.

There is a valid mode of Altivec programming using builtins and
asms that does not require the Altivec ABI.  That is what -maltivec
supports.

I suspect that -ftree-vectorize should enable -mabi=altivec by
default on PowerPC.

David


-- 


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



[Bug regression/32582] Bootstrap with vectorization enabled fails with ICE on PPC

2007-08-13 Thread dje at watson dot ibm dot com


--- Comment #28 from dje at watson dot ibm dot com  2007-08-13 15:17 ---
Subject: Re:  Bootstrap with vectorization enabled fails with ICE on PPC 

Most everyone else bootstraps GCC on PPC64 with
--with-cpu=default32.  Are you missing some packages on SUSE?  This really
isn't a GCC bug any more, it is some problem with the way that you are
configuring and building GCC on your system.


-- 


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



[Bug fortran/33271] nint_2.f90 abort compiled with -O0

2007-09-05 Thread dje at watson dot ibm dot com


--- Comment #11 from dje at watson dot ibm dot com  2007-09-05 17:13 ---
Subject: Re:  nint_2.f90 abort compiled with -O0 

>>>>> fxcoudert at gcc dot gnu dot org writes:

FX> look into ${builddir}/${target_triplet}/libgfortran/config.h to
FX> see what value have the HAVE_LROUND{F,,L} and HAVE_LLROUND{F,,L} macros?

/* libm includes llround */
#define HAVE_LLROUND 1

/* libm includes llroundf */
#define HAVE_LLROUNDF 1

/* libm includes llroundl */
#define HAVE_LLROUNDL 1

/* libm includes lround */
#define HAVE_LROUND 1

/* libm includes lroundf */
#define HAVE_LROUNDF 1

/* libm includes lroundl */
#define HAVE_LROUNDL 1


-- 


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



[Bug fortran/33271] nint_2.f90 abort compiled with -O0

2007-09-05 Thread dje at watson dot ibm dot com


--- Comment #12 from dje at watson dot ibm dot com  2007-09-05 17:19 ---
Subject: Re:  nint_2.f90 abort compiled with -O0 

>>>>> fxcoudert at gcc dot gnu dot org writes:

FX> David, could you test my C program in comment #4

$ ./xgcc -B./ -W -Wall -O1 fx.c
fx.c: In function 'main':
fx.c:46: warning: integer constant is too large for 'long' type
fx.c:47: warning: integer constant is too large for 'long' type
fx.c:51: warning: integer constant is too large for 'long' type
fx.c:52: warning: integer constant is too large for 'long' type
$ ./a.out
4 4 8
$ ./xgcc -B./ -W -Wall -O0 fx.c
fx.c: In function 'main':
fx.c:46: warning: integer constant is too large for 'long' type
fx.c:47: warning: integer constant is too large for 'long' type
fx.c:51: warning: integer constant is too large for 'long' type
fx.c:52: warning: integer constant is too large for 'long' type
ld: 0711-317 ERROR: Undefined symbol: .lround
ld: 0711-317 ERROR: Undefined symbol: .lroundf
ld: 0711-317 ERROR: Undefined symbol: .llround
$ ./xgcc -B./ -W -Wall -O0 fx.c -lm
fx.c: In function 'main':
fx.c:46: warning: integer constant is too large for 'long' type
fx.c:47: warning: integer constant is too large for 'long' type
fx.c:51: warning: integer constant is too large for 'long' type
fx.c:52: warning: integer constant is too large for 'long' type
$ ./a.out
4 4 8
Abort 1
$ ./xgcc -B./ -maix64 -W -Wall -O1 fx.c 
$ ./a.out
4 8 8
$ ./xgcc -B./ -maix64 -W -Wall -O0 fx.c -lm
$ ./a.out
4 8 8
Abort 1


-- 


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



[Bug target/20814] ICE in extract_insn for test vmx/varargs-1.c

2005-04-07 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-04-07 
22:09 ---
Subject: Re:  New: ICE in extract_insn for test vmx/varargs-1.c 

Let me know if the appended patch fixes the ICE.  The definition
of the "and" predicates was ignoring CONST_INT that matched predicate
logical_operand.

David

Index: predicates.md
===
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/predicates.md,v
retrieving revision 1.10
diff -c -p -r1.10 predicates.md
*** predicates.md   2 Apr 2005 10:46:03 -   1.10
--- predicates.md   7 Apr 2005 22:07:33 -
***
*** 531,559 
  ;; Return 1 if the operand is either a non-special register or a constant
  ;; that can be used as the operand of a PowerPC64 logical AND insn.
  (define_predicate "and64_operand"
!   (if_then_else (match_code "const_int")
! (match_operand 0 "mask64_operand")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Like and64_operand, but also match constants that can be implemented
  ;; with two rldicl or rldicr insns.
  (define_predicate "and64_2_operand"
!   (if_then_else (match_code "const_int")
! (match_test "mask64_1or2_operand (op, mode, true)")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is either a non-special register or a
  ;; constant that can be used as the operand of a logical AND.
  (define_predicate "and_operand"
!   (if_then_else (match_code "const_int")
! (match_operand 0 "mask_operand")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is a general non-special register or memory 
operand.
  (define_predicate "reg_or_mem_operand"
--- 531,557 
  ;; Return 1 if the operand is either a non-special register or a constant
  ;; that can be used as the operand of a PowerPC64 logical AND insn.
  (define_predicate "and64_operand"
!   (ior (match_operand 0 "mask64_operand")
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Like and64_operand, but also match constants that can be implemented
  ;; with two rldicl or rldicr insns.
  (define_predicate "and64_2_operand"
!   (ior (and (match_code "const_int")
!   (match_test "mask64_1or2_operand (op, mode, true)"))
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is either a non-special register or a
  ;; constant that can be used as the operand of a logical AND.
  (define_predicate "and_operand"
!   (ior (match_operand 0 "mask_operand")
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is a general non-special register or memory 
operand.
  (define_predicate "reg_or_mem_operand"


-- 


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


[Bug target/20814] [4.1 Regression] ICE in extract_insn for test vmx/varargs-1.c

2005-04-08 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-04-08 
18:57 ---
Subject: Re:  New: ICE in extract_insn for test vmx/varargs-1.c 

In addition to the previous change, altivec_register_operand needs
to accept SUBREG.

David


Index: predicates.md
===
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/predicates.md,v
retrieving revision 1.10
diff -c -p -r1.10 predicates.md
*** predicates.md   2 Apr 2005 10:46:03 -   1.10
--- predicates.md   7 Apr 2005 22:07:33 -
***
*** 34,42 

  ;; Return 1 if op is an Altivec register.
  (define_predicate "altivec_register_operand"
!   (and (match_code "reg")
!(match_test "ALTIVEC_REGNO_P (REGNO (op))
!   || REGNO (op) > LAST_VIRTUAL_REGISTER")))
  
  ;; Return 1 if op is XER register.
  (define_predicate "xer_operand"
--- 34,44 

  ;; Return 1 if op is an Altivec register.
  (define_predicate "altivec_register_operand"
!   (and (match_code "reg,subreg")
!(and (match_operand 0 "register_operand")
!   (match_test "GET_CODE (op) != REG
!|| ALTIVEC_REGNO_P (REGNO (op))
!|| REGNO (op) > LAST_VIRTUAL_REGISTER"
  
  ;; Return 1 if op is XER register.
  (define_predicate "xer_operand"
***
*** 531,559 
  ;; Return 1 if the operand is either a non-special register or a constant
  ;; that can be used as the operand of a PowerPC64 logical AND insn.
  (define_predicate "and64_operand"
!   (if_then_else (match_code "const_int")
! (match_operand 0 "mask64_operand")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Like and64_operand, but also match constants that can be implemented
  ;; with two rldicl or rldicr insns.
  (define_predicate "and64_2_operand"
!   (if_then_else (match_code "const_int")
! (match_test "mask64_1or2_operand (op, mode, true)")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is either a non-special register or a
  ;; constant that can be used as the operand of a logical AND.
  (define_predicate "and_operand"
!   (if_then_else (match_code "const_int")
! (match_operand 0 "mask_operand")
! (if_then_else (match_test "fixed_regs[CR0_REGNO]")
!   (match_operand 0 "gpc_reg_operand")
!   (match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is a general non-special register or memory 
operand.
  (define_predicate "reg_or_mem_operand"
--- 533,559 
  ;; Return 1 if the operand is either a non-special register or a constant
  ;; that can be used as the operand of a PowerPC64 logical AND insn.
  (define_predicate "and64_operand"
!   (ior (match_operand 0 "mask64_operand")
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Like and64_operand, but also match constants that can be implemented
  ;; with two rldicl or rldicr insns.
  (define_predicate "and64_2_operand"
!   (ior (and (match_code "const_int")
!   (match_test "mask64_1or2_operand (op, mode, true)"))
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is either a non-special register or a
  ;; constant that can be used as the operand of a logical AND.
  (define_predicate "and_operand"
!   (ior (match_operand 0 "mask_operand")
!(if_then_else (match_test "fixed_regs[CR0_REGNO]")
!(match_operand 0 "gpc_reg_operand")
!(match_operand 0 "logical_operand"
  
  ;; Return 1 if the operand is a general non-special register or memory 
operand.
  (define_predicate "reg_or_mem_operand"


-- 


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


[Bug target/32347] ICE on gcc/testsuite/gcc-dg/vmx/ops.c

2007-06-22 Thread dje at watson dot ibm dot com


--- Comment #16 from dje at watson dot ibm dot com  2007-06-22 16:44 ---
Subject: Re:  ICE on gcc/testsuite/gcc-dg/vmx/ops.c 

There are much more constructive ways in which to interact with
the GCC community, GCC developers, and port maintainers than you have
chosen to pursue.

I am sorry that we are not addressing your particular bug as
quickly as you would like.  Insisting on action after one week and making
personal attacks are not appropriate.

David


-- 


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



[Bug libstdc++/22554] [4.1 Regression] pb_assoc header build and install overflows exec

2005-09-15 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-09-15 
18:38 ---
Subject: Re:  [4.1 Regression] pb_assoc header build and install overflows exec 

>>>>> bkoz at gcc dot gnu dot org writes:

Ben> This looks fixed now. Can I close this?

Yes, the latest version appears to be working well.

Thanks, David


-- 


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


[Bug target/24119] gcc-4.x fails to build on AIX 5.2.0.0-ML04

2005-10-04 Thread dje at watson dot ibm dot com


--- Comment #7 from dje at watson dot ibm dot com  2005-10-04 15:00 ---
Subject: Re:  gcc-4.x fails to build on AIX 5.2.0.0-ML04 

>>>>> h dot m dot brand at xs4all dot nl writes:

h> Next step is to upgrade vac-6.0.0.11 to vac-7.0.0.3

You said that you are bootstrapping with GCC-4.0 snapshot.


-- 


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



[Bug target/24119] gcc-4.x fails to build on AIX 5.2.0.0-ML04

2005-10-04 Thread dje at watson dot ibm dot com


--- Comment #9 from dje at watson dot ibm dot com  2005-10-04 19:24 ---
Subject: Re:  gcc-4.x fails to build on AIX 5.2.0.0-ML04 

I bootstrap GCC every day without seeing this problem.


-- 


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



[Bug target/24119] gcc-4.x fails to build on AIX 5.2.0.0-ML04

2005-10-06 Thread dje at watson dot ibm dot com


--- Comment #13 from dje at watson dot ibm dot com  2005-10-06 13:30 ---
Subject: Re:  gcc-4.x fails to build on AIX 5.2.0.0-ML04 

> That worked. But I still saw the -B added to all the lines, but now that
> that folder is not there, all goes smooth

> As you can see: *I* did not put any -B options in there, so it must either be
> the Makefiles or configure that puts them in because of my --prefix and/or
> --with-local-prefix

The -B still is added, because you did not clear the CC
environment variable in the shell where you did the previous configures.
GCC does not automatically add -B.

David


-- 


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



[Bug target/24119] gcc-4.x fails to build on AIX 5.2.0.0-ML04

2005-10-06 Thread dje at watson dot ibm dot com


--- Comment #15 from dje at watson dot ibm dot com  2005-10-06 14:07 ---
Subject: Re:  gcc-4.x fails to build on AIX 5.2.0.0-ML04 

The -Wl,-bbigtoc fix has been committed to GCC 4.1 sources.


-- 


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



[Bug fortran/21730] Character length incorrect.

2005-07-13 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-07-13 
18:23 ---
Subject: Re:  Character length incorrect. 

> What about the testcase, David?

I was focussing on the patch itself.  Here's a testcase:

! PR fortran/21730
! {do-do run}
character*2 a
character*4 b
character*6 c
parameter (a="12")
parameter (b = a)
write (c,'("#",A,"#")') b
if (c .ne. '#12  #') call abort
end

David


-- 


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


[Bug fortran/21730] Character length incorrect.

2005-07-13 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-07-14 
03:37 ---
Subject: Re:  Character length incorrect. 

>>>>> fengwang at gcc dot gnu dot org writes:

fengwang> IMHO, your patch only handles the scalar character and is not entire, 
though a 
fengwang> different bug is revealed by the above examples.

I cannot tell if your response is an objection to my patch or not.
Yes, gfortran has additional bugs in this area, but, as you mention, those
are different bugs -- they exist prior to my patch.  gfortran needs more
work in this area, but we need to start somewhere.



-- 


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


[Bug fortran/21730] Character length incorrect.

2005-07-13 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-07-14 
03:49 ---
Subject: Re:  Character length incorrect. 

>>>>> fengwang at gcc dot gnu dot org writes:

Feng> Having a good start, why not fix entirely? If somebody agrees to fix step 
by 
Feng> step, I have no objection.

Because developers are volunteers.


-- 


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


[Bug libstdc++/22554] [4.1 Regression] pb_assoc header build and install overflows exec

2005-07-20 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-07-20 
14:26 ---
Subject: Re:  [4.1 Regression] pb_assoc header build and install overflows exec 

> Please for completeness sake put in the generated command that kills AIX, and
> the AIX output. 

make[1]: Entering directory 
`/tmp/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/libstdc++-v3'
make "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" 
"CC_FOR_TARGET=/tmp/powerpc-ibm-aix5.2.0.0-20050720/./gcc/xgcc 
-B/tmp/powerpc-ibm-aix5.2.0.0-20050720/./gcc/ 
-B/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/bin/ 
-B/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/lib/ 
-isystem 
/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/include
 -isystem 
/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/sys-include"
 "CFLAGS=-O2 -g -O2" "CXXFLAGS=-g -O2" "CFLAGS_FOR_BUILD=-g -O2" 
"CFLAGS_FOR_TARGET=-O2 -g -O2" "INSTALL=/farm/dje/src/src/install-sh -c" 
"INSTALL_DATA=/farm/dje/src/src/install-sh -c -m 644" 
"INSTALL_PROGRAM=/farm/dje/src/src/install-sh -c" 
"INSTALL_SCRIPT=/farm/dje/src/src/install-sh -c" "LDFLAGS=" "LIBCFLAGS=-O2 -g 
-O2" "LIBCFLAGS_FOR_TARGET=-O2 -g -O2" "MAKE=make" "MAKEINFO=makeinfo 
--split-size=500 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" 
"RUNTESTFLAGS=" "exec_prefix=/farm/d!
 je/install/powerpc-ibm-aix5.2.0.0-20050720" 
"infodir=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/info" 
"libdir=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/lib" 
"includedir=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/include" 
"prefix=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720" 
"tooldir=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0"
 
"gxx_include_dir=/farm/dje/install/powerpc-ibm-aix5.2.0.0-20050720/include/c++/4.1.0"
 "AR=ar -X32_64" "AS=/tmp/powerpc-ibm-aix5.2.0.0-20050720/./gcc/as" "LD=ld" 
"RANLIB=ranlib" "NM=/tmp/powerpc-ibm-aix5.2.0.0-20050720/./gcc/nm -B -X32_64" 
"NM_FOR_BUILD=" "NM_FOR_TARGET=/tmp/powerpc-ibm-aix5.2.0.0-20050720/./gcc/nm -B 
-X32_64" "DESTDIR=" "WERROR=" all-recursive
make[2]: Entering directory 
`/tmp/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/libstdc++-v3'
Making all in include
/tmp/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include
make[3]: Entering directory 
`/tmp/powerpc-ibm-aix5.2.0.0-20050720/powerpc-ibm-aix5.2.0.0/libstdc++-v3/include'
cd ./ext/pb_assoc && for h in 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp
 /farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/type_utils.hpp 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/order_statistics_imp.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp
 /farm/!
 
dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/node.hpp 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp
 
/farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp
 /farm/dje/src/src/libstdc++-v3/include/ext/pb_assoc/detail/splay_tree_!
 /info_fn_imps.hpp /farm/dje/src/src/libstdc++-v3/include/ext/p!
 b_assoc/
detail/splay_tree_/debug_fn_imps.hpp 
/farm/dje

[Bug target/23071] Darwin alignment ignores "attribute packed" for first 'double' element of a struct

2005-07-26 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-07-26 
16:58 ---
Subject: Re:  Darwin alignment ignores "attribute packed" for first 'double' 
element of a struct 

If Chris and Apple want to change the behavior for Darwin, be my
guest. 

David


-- 


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


[Bug target/20366] AIX g++ -D_LARGE_FILES fails to compile #include

2007-12-21 Thread dje at watson dot ibm dot com


--- Comment #10 from dje at watson dot ibm dot com  2007-12-21 14:58 ---
Subject: Re:  AIX g++ -D_LARGE_FILES fails to compile #include  

> Why is this? -D_LARGE_FILES simply enables LFS. xlC works with and without
> -D_LARGE_FILES. Shouldn't G++ work as effectively as xlC?

You are mixing multiple questions and issues.

-D_LARGE_FILES redefines all I/O functions to use the 64-bit
versions. 

xlC has its own system header files.  G++ needs to use the AIX
system header files with changes from fixincludes, combined with libstdc++
header files that perform their own redefinitions.

"Shouldn't G++ work as effectively..." is a business question, not
a technical question.  Many major AIX customers use GCC, but none have
told IBM that they will not buy a system unless GCC works better.  That
sets investment priorities.


-- 


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



[Bug target/20366] AIX g++ -D_LARGE_FILES fails to compile #include

2007-12-22 Thread dje at watson dot ibm dot com


--- Comment #15 from dje at watson dot ibm dot com  2007-12-22 20:52 ---
Subject: Re:  AIX g++ -D_LARGE_FILES fails to compile #include  

>>>>> tcoleman at autowares dot com writes:

Tom> Does G++ really have to be either one way or the other?  Can't it also
include
Tom> conditional code to check for _LARGE_FILES?  Maybe I'm missing something
here.

GNU libc does not use _LARGE_FILE to distinguish large offsets in
32-bit file I/O.  Why would the GCC libstdc++ community be interested in
complicating its header files with AIX-specific checks?


-- 


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



[Bug target/21616] [3.4 only] ICE: unable to find a register to spill in class `FLOAT_REGS'

2006-02-28 Thread dje at watson dot ibm dot com


--- Comment #11 from dje at watson dot ibm dot com  2006-02-28 15:19 ---
Subject: Re:  [3.4 only] ICE: unable to find a register to spill in class
`FLOAT_REGS' 

If Alan and Gaby want the patch backported to GCC 3.4 branch, it's
okay with me.  The patch is fine.


-- 


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



[Bug tree-optimization/21048] [4.1 Regression] use of poisoned ggc memory causes cpu2000 build failures

2005-04-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-04-25 
19:20 ---
Subject: Re:  [4.1 Regression] use of poisoned ggc memory causes cpu2000 build 
failures 

The patch fixes the testcase for me on AIX.


-- 


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


[Bug target/19645] PPC64 64-bit build failure

2005-01-27 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-01-27 
19:09 ---
Subject: Re:  PPC64 64-bit build failure 

I configured with:

--build=powerpc64-linux --host=powerpc64-linux --target=powerpc64-linux
--with-cpu=default32 --enable-threads=posix --enable-shared
--enable-__cxa_atexit
--with-gcc-version-trigger=/home/dje/src/src/gcc/version.c
--enable-languages=c,c++

I am building everything with -m64.

Are you also adding -mcpu=G5?


-- 


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


[Bug target/19645] PPC64 64-bit build failure

2005-01-27 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2005-01-27 
21:20 ---
Subject: Re:  PPC64 64-bit build failure 

--with-cpu=default32 builds 32bit by default IIRC.

You obviously replied without reading my message.  I said, "I am building
everything with -m64".


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-17 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-18 01:50 
---
Subject: Re:  ICE cause by reload 

(subreg:SI (reg:DI)) normally isn't a problem, except when reg:DI
is assigned to an FPR.  If reg:DI was assigned to an FPR, CLASS probably
is NON_SPECIAL_REGS (encompassing both GPRs and FPRs), which would make
the result from CANNOT_CHANGE_MODE_CLASS correct.  I'm not sure what
problems would be created if one redefined CANNOT_CHANGE_MODE_CLASS to
return false for that super-class.

The problem is that the pseudo was assigned to an FPR, which is
valid for the CLASS, but not for the instruction.  One way of looking at
it is that regclass should not have widened the CLASS to include a
sub-class for which CANNOT_CHANGE_MODE_CLASS is true.


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-25 16:47 
---
Subject: Re:  ICE cause by reload 

>>>>> uweigand at gcc dot gnu dot org writes:

Ulrich> Does this patch help?

It changes the error, but I'm not sure if it helps.

pr15286.c: In function 'GMRESSolver':
pr15286.c:72: error: unrecognizable insn:
(insn 512 183 397 0 (set (subreg:DI (mem:SI (plus:SI (reg/f:SI 1 r1)
(const_int 204 [0xcc])) [15 clock_start+0 S4 A8]) 0)
(reg:DI 32 f0)) -1 (nil)
(nil))
pr15286.c:72: internal compiler error: in extract_insn, at recog.c:2034

It is storing to (SUBREG:DI (mem:SI)) instead of (mem:DI).



-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-25 18:04 
---
Subject: Re:  ICE cause by reload 

With both patches, the testcase works.  This probably is a correct
fix for reload.

The code is a little messy and is cleaned up by implementing
fixuns_truncdfsi, which also fixes the testcase.

David


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-25 19:07 
---
Subject: Re:  ICE cause by reload 

> I applied the last two patch, but it didn;t help:

The simplify-rtx.c patch is not *two* patches.


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-25 21:11 
---
Subject: Re:  ICE cause by reload 

With the earlier *two* patches from Ulrich, the compiler no longer
ICE. 

The latest patch to alter_subreg() (with the missing GET_MODEs)
does not fix the subreg offset problem for me.

bl L_clock$stub
std r3,168(r1)
lfd f0,168(r1)
fcfid f0,f0
stfd f0,224(r1)
fctidz f0,f0
stfd f0,204(r1)   <---
...
bl L_clock$stub
lwz r0,204(r1)<---
std r3,168(r1)
std r0,176(r1)
lfd f13,168(r1)
lfd f0,176(r1)
fcfid f12,f0
fcfid f0,f13
fsub f0,f0,f12
fctiwz f13,f0
stfd f13,184(r1)
lwz r3,188(r1)

The code continues to access the wrong word.


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-25 23:43 
---
Subject: Re:  ICE cause by reload 

Try again with what patch?  I have all patches applied and I
consistently get the output I emailed earlier with a native Mac OS X
compiler. 

David


-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-26 00:13 
---
Subject: Re:  ICE cause by reload 

There is a reduced testcase attached to the Bugzilla PR.  Please
do not confuse discussion with other examples.



-- 


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


[Bug target/15286] ICE cause by reload

2004-10-25 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-10-26 04:28 
---
Subject: Re:  ICE cause by reload 

I found a typo in my sourcebase introduced when applying one of
the patches.  Fixing that typo (matching the complete patch attached to
the PR) produces the correct offset.

I think the patch is the correct change to get reload to behave
correctly.


-- 


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


[Bug target/16800] PowerPC - Unnecessary rldicl

2004-11-24 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-11-24 
15:21 ---
Subject: Re:  PowerPC - Unnecessary rldicl 

The test for mode == Pmode is present because most of the fast scc
patterns depend on carry.  PowerPC carry depends on the mode of the
processor.  If the mode of the comparison is not the mode of the processor
(Pmode), the scc patterns cannot be applied and the modified cost should
not be applied.

Similarly, only EQ, GTU, and LTU costs are handled because those
are the fast scc patterns active for PowerPC.  I did not include the costs
for the original POWER architecture.


-- 


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


[Bug middle-end/18641] [4.0 Regression] Another ICE caused by reload of a psuedo reg into f0 for a DImode expr

2004-12-06 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-12-06 
17:16 ---
Subject: Re:  [4.0 Regression] Another ICE caused by reload of a psuedo reg 
into f0 for a DImode expr 

The following patch implements the two suggestions.  It fixes the
ICE on AIX, but continues to produce an ICE on Mac OS X.

Also, the CONST_INT case only should be relevant in 64-bit mode.

Index: rs6000.h
===
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.h,v
retrieving revision 1.348
diff -c -p -r1.348 rs6000.h
*** rs6000.h27 Nov 2004 22:45:24 -  1.348
--- rs6000.h6 Dec 2004 17:14:18 -
*** enum reg_class
*** 1397,1404 
   */
  
  #define PREFERRED_RELOAD_CLASS(X,CLASS)   \
!   (((GET_CODE (X) == CONST_DOUBLE \
!  && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT)  \
  ? NO_REGS \
  : (GET_MODE_CLASS (GET_MODE (X)) == MODE_INT  \
 && (CLASS) == NON_SPECIAL_REGS)\
--- 1397,1404 
   */
  
  #define PREFERRED_RELOAD_CLASS(X,CLASS)   \
!   (((CONSTANT_P (X)   \
!  && reg_classes_intersect_p ((CLASS), FLOAT_REGS))\
  ? NO_REGS \
  : (GET_MODE_CLASS (GET_MODE (X)) == MODE_INT  \
 && (CLASS) == NON_SPECIAL_REGS)\
Index: rs6000.md
===
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.336
diff -c -p -r1.336 rs6000.md
*** rs6000.md   1 Dec 2004 17:18:38 -   1.336
--- rs6000.md   6 Dec 2004 17:14:18 -
***
*** 8496,8502 
  ; List r->r after r->"o<>", otherwise reload will try to reload a
  ; non-offsettable address by using r->r which won't make progress.
  (define_insn "*movdi_internal32"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=o<>,r,r,f,f,m,r")
(match_operand:DI 1 "input_operand" "r,r,m,f,m,f,IJKnGHF"))]
"! TARGET_POWERPC64
 && (gpc_reg_operand (operands[0], DImode)
--- 8496,8502 
  ; List r->r after r->"o<>", otherwise reload will try to reload a
  ; non-offsettable address by using r->r which won't make progress.
  (define_insn "*movdi_internal32"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=o<>,r,r,!*f,!*f,m,r")
(match_operand:DI 1 "input_operand" "r,r,m,f,m,f,IJKnGHF"))]
"! TARGET_POWERPC64
 && (gpc_reg_operand (operands[0], DImode)
***
*** 8567,8573 
  }")
  
  (define_insn "*movdi_internal64"
!   [(set (match_operand:DI 0 "nonimmediate_operand" 
"=r,r,m,r,r,r,r,??f,f,m,r,*h,*h")
(match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,f,m,f,*h,r,0"))]
"TARGET_POWERPC64
 && (gpc_reg_operand (operands[0], DImode)
--- 8567,8573 
  }")
  
  (define_insn "*movdi_internal64"
!   [(set (match_operand:DI 0 "nonimmediate_operand" 
"=r,r,m,r,r,r,r,!*f,!*f,m,r,*h,*h")
(match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,f,m,f,*h,r,0"))]
"TARGET_POWERPC64
 && (gpc_reg_operand (operands[0], DImode)


-- 


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


[Bug middle-end/18641] [4.0 Regression] Another ICE caused by reload of a psuedo reg into f0 for a DImode expr

2004-12-06 Thread dje at watson dot ibm dot com

--- Additional Comments From dje at watson dot ibm dot com  2004-12-07 
03:10 ---
Subject: Re:  [4.0 Regression] Another ICE caused by reload of a psuedo reg 
into f0 for a DImode expr 

There are two open questions:

1) Do we want to change the register preferencing?

2) Should we need to return NO_REGS for FLOAT_MODE constant loaded into
GPRs? 

David


-- 


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