A questionable predicate in sh/predicates.md

2006-01-08 Thread Kazu Hirata
Hi,

In sh/predicates.md, I see

(define_predicate "sh_rep_vec"
  (match_code "const_vector")
{
  int i;
  rtx x, y;

  if ((GET_CODE (op) != CONST_VECTOR && GET_CODE (op) != PARALLEL)
  || (GET_MODE (op) != mode && mode != VOIDmode))
return 0;

Notice that match_code at the beginning does not mention PARALLEL, but
we have GET_CODE (op) != PARALLEL later.  Is this predicate intended
to accept PARALLEL as well?  If so, should we change the match_code at
the beginning?  When I did the conversion from PREDICATE_CODES to
predicates.md, I did so in a mechanical way, so loose things like this
might have gone unnoticed.

Kazu Hirata



Re: svn access on RHEL 4.0

2006-01-08 Thread Pedro Lamarão
Bradley Lucier wrote:
> I'm having all kinds of trouble running svn on my RHEL 4.0 system.  A 
> typical example of what's happening is:
> 
> euler-62% svn cleanup
> svn: XML parser failed in 'gcc/testsuite/gcc.dg/special'
> 
> I first got that message when I tried contrib/gcc_update after doing  a
> svn checkout.  Now I just get
> 
> euler-63% contrib/gcc_update
> Updating SVN tree
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for 
> details)
> Adjusting file timestamps
> SVN update of full tree failed.

Have you tried doing "svn cleanup" as the error message suggests?

--
 Pedro Lamarão




Re: svn access on RHEL 4.0

2006-01-08 Thread Pedro Lamarão
Bradley Lucier wrote:
> I'm having all kinds of trouble running svn on my RHEL 4.0 system.  A 
> typical example of what's happening is:
> 
> euler-62% svn cleanup
> svn: XML parser failed in 'gcc/testsuite/gcc.dg/special'

I'm sorry, I'm a little sleepy, in the hurry of trying to "help" I
totally missed these lines. :-(

--
 Pedro Lamarão




Re: svn access on RHEL 4.0

2006-01-08 Thread Andreas Schwab
Bradley Lucier <[EMAIL PROTECTED]> writes:

> I'm having all kinds of trouble running svn on my RHEL 4.0 system.  A  
> typical example of what's happening is:
>
> euler-62% svn cleanup
> svn: XML parser failed in 'gcc/testsuite/gcc.dg/special'
>
> I first got that message when I tried contrib/gcc_update after doing  
> a svn checkout.  Now I just get
>
> euler-63% contrib/gcc_update
> Updating SVN tree
> svn: Working copy '.' locked
> svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for  
> details)
> Adjusting file timestamps
> SVN update of full tree failed.
>
>
> Does anyone have any helpful ideas of what to do?

Try removing the offending directory (gcc/testsuite/gcc.dg/special) and
run svn cleanup again, updating the tree afterwards.  If you didn't have
any local changes in that directory you should not lose anything.  If the
problem persists then you probably have a hardware problem.

Andreas.

-- 
Andreas Schwab, SuSE Labs, [EMAIL PROTECTED]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



libgcc.a, et. al.

2006-01-08 Thread Perry Smith

Hi,

I posted this message on gnu-help yesterday and did not get a reply.   
I am going to post it here.  I hope that does not bother anyone.


I can not find a description of what the different versions of libgcc  
and libstd++ are for.  Some versions are obvious, others are not.


In particular, I am trying to determine what these libraries are  
for:  (this is on AIX version 5.3)  (how are they different from each  
other perhaps is a better way to phrase my question.  Or what  
objective do each of these have?)


gcc/powerpc-ibm-aix5.3.0.0/4.0.2/libgcc_eh.a
libgcc_s.a
libsupc++.a
libstdc++.a

To provide some background, I am attempting to write a device driver  
on AIX 5.3 using C++.  I want to use the try/catch/throw exception  
part of C++.  I realize this may be an uphill battle but I think it  
will be worth it.  To do this, the driver must be linked statically  
except for references resolved by exports provided by the AIX kernel  
services.  I've been writing drivers using xlc on AIX for 18+ years  
so I am familiar with the AIX environment using C but want to start  
using C++.


Thank you,
Perry Smith




Re: svn access on RHEL 4.0

2006-01-08 Thread Daniel Berlin


Try removing the offending directory (gcc/testsuite/gcc.dg/special) and
run svn cleanup again, updating the tree afterwards.  If you didn't have
any local changes in that directory you should not lose anything.  If the
problem persists then you probably have a hardware problem.


Just "for the record":

gcc.gnu.org runs RHEL4, and we've never had any trouble like this.

All the snapshots are generated locally using svn, etc.





gcc 4.0.2 compiled on AIX 5.3 (53A)

2006-01-08 Thread Perry Smith
Here is my script to compile.  The ulimit is because I log in as a  
user and then su to root so I have the normal user limits which is  
too small.  See:


http://gcc.gnu.org/ml/gcc-help/2005-05/msg00105.html

and its follow ups for more info.

The CONFIG_SHELL is set because without it the configure of libstdc++  
would take more than a day to complete.  See:


http://gcc.gnu.org/ml/gcc-help/2005-05/msg00307.html

and its follow ups for more info.

I started with gcc 3.3.2.

#!/bin/sh

ulimit -S -d unlimited
export CONFIG_SHELL=/usr/local/bin/bash
../gcc-4.0.2/configure -v \
--disable-nls \
--with-libiconv-prefix=/usr \
--enable-languages=c,c++ 2>&1 | tee CONF-OUT
gmake bootstrap > MAKE-OUT 2>&1




Re: on data depenence

2006-01-08 Thread Hans-Peter Nilsson
On Wed, 28 Dec 2005, Liu Haibin wrote:
(I'm this far ^ behind on reading mailing lists.)

It's likely that you have since long noticed, but in case not:

> I got a dump of sha.c.27.flow2 from gcc 3.4.1. I don't quite
> understand the LOG_LINKS of insn 498. LOG_LINKS in insn 498 shows that
> it has a data dependence (a read after write dependence) with insn 3.
> Why is it so? I don't see any dependence between "mov r14 r4" and
> "addi r3, r4, 28". The bottom is the whole dump of the basic block.

It says r14 (14), not r4 (4).

>
> (insn 3 4 11 0 (set (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46])
> (reg:SI 4 r4 [ sha_info ])) 8 {movsi_internal} (nil)
> (expr_list:REG_DEAD (reg:SI 4 r4 [ sha_info ])
> (nil)))

Set of R14.

> 
>
> (insn 498 375 560 0 (set (reg/f:SI 3 r3 [235])
> (plus:SI (reg/v/f:SI 14 r14 [orig:46 sha_info ] [46])
> (const_int 28 [0x1c]))) 20 {addsi3} (insn_list 3 (nil))
> (nil))

Use of R14.

Or maybe you meant something else?

brgds, H-P



[gcjx] Tree-SSA Operands Processing Problem

2006-01-08 Thread Ranjit Mathew
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,

  While trying to debug a long-standing ICE on the
gcjx branch, I have found out that the root cause
of the problem is with the tree-ssa operands processing
code and it still seems to exist on the mainline
(as of revision 109471), though I have traced the code
path in a debugger and actually observed the problem only
on the gcjx branch.

In mainline, the code path starts from
tree-ssa-operands.c:1906 where we have a *local* variable
VAR whose address is passed on to add_stmt_operand() on
the next line:
- --- 8< ---
   1903   /* Add a VUSE for each call-clobbered variable.  */
   1904   EXECUTE_IF_SET_IN_BITMAP (call_clobbered_vars, 0, u, bi)
   1905 {
   1906   tree var = referenced_var (u);
   1907   add_stmt_operand (&var, &empty_ann, opf_none |
opf_non_specific);
   1908 }
   1909
- --- 8< ---

This function then passes this pointer to append_use() at
line 1634, which seems to just store it as-is in BUILD_USES:
- --- 8< ---
   1572 static void
   1573 add_stmt_operand (tree *var_p, stmt_ann_t s_ann, int flags)
   1574 {
   [...]
   1628   if (is_real_op)
   1629 {
   1630   /* The variable is a GIMPLE register.  Add it to real
operands.  */
   1631   if (flags & opf_is_def)
   1632 append_def (var_p);
   1633   else
   1634 append_use (var_p);
   1635 }
- --- 8< ---

This seems wrong.

I don't know whether this code path is actually ever
taken on mainline or why it hasn't caused any problems
yet, but on the gcjx branch it causes an ICE while
processing the method "of" of the inner class "UnicodeBlock"
of the class "java.lang.Character"
($GCC_SRC_DIR/libjava/java/lang/Character.java). Specifically,
it ICEs while processing the CALL_EXPR corresponding to
the call to _Jv_ThrowBadArrayIndex() thrown if a subscript
is beyond the limits of an array. The problem occurs when
the stack-slot for the VAR variable referred to earlier
is occupied by the NUM local variable of finalize_ssa_vuses()
and is overwritten when this variable is assigned a value in
this function.

Comments?

Thanks,
Ranjit.

- --
Ranjit Mathew   Email: rmathew AT gmail DOT com

Bangalore, INDIA. Web: http://ranjitmathew.hostingzero.com/




-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFDwT2fYb1hx2wRS48RAr8nAJ90iq5wgQpVeG09vihfwN1x1gvsRACfebPH
3ZjNpJLVJNJZTbWpDEKyxiU=
=NBsE
-END PGP SIGNATURE-



Re: svn access on RHEL 4.0

2006-01-08 Thread Bradley Lucier


On Jan 8, 2006, at 9:04 AM, Andreas Schwab wrote:

Try removing the offending directory (gcc/testsuite/gcc.dg/special)  
and
run svn cleanup again, updating the tree afterwards.  If you didn't  
have
any local changes in that directory you should not lose anything.   
If the

problem persists then you probably have a hardware problem.


Thanks for

I installed subversion 1.3.0 and tried your suggestion recursively  
and seemed to get into a cycle ---after removing libjava/testsuite/ 
libjava.lang as one of the "problem" directories on the way to  
getting a clean "xvn cleanup", it showed up again as one of the  
"problem" directories in trying to do contrib/gcc_update, notes are  
below.  Actually, gcc_update appears to complain about libstdc++-v3/ 
testsuite/data immediately after installing a new version.  (I got a  
slightly more detailed error message with 1.3.0 than with the default  
1.1.4:


euler-5% svn cleanup
svn: XML parser failed in 'gcc/testsuite/gcc.dg/pch'
svn: Bogus date

but I don't know what "Bogus date" means in any detail.)

It's interesting that you mention a possible hardware problem.  The  
file system is mounted on a new SAN served from a Sparc NFSv4 server;  
do you thin that perhaps we should try to mount it using NFSv3 to see  
if that fixes the problem?


Brad




euler-36% tcsh
euler-1% set path=(/export/users/lucier/local/subversion-1.3.0/bin/  
$path)

euler-2% which svn
/export/users/lucier/local/subversion-1.3.0/bin//svn
euler-3% dirs
~/programs/subversion-1.3.0
euler-4% pu ~/programs/gcc/4.2/
~/programs/gcc/4.2 ~/programs/subversion-1.3.0
euler-5% svn cleanup
svn: XML parser failed in 'gcc/testsuite/gcc.dg/pch'
svn: Bogus date
euler-6% /bin/rm -rf gcc/testsuite/gcc.dg/pch
euler-7% svn cleanup
svn: XML parser failed in 'libstdc++-v3/testsuite/data'
svn: Bogus date
euler-8% /bin/rm -rf libstdc++-v3/testsuite/data
euler-9% svn cleanup
svn: XML parser failed in 'libjava/classpath/org/omg/SendingContext'
svn: Bogus date
euler-10% /bin/rm -rf libjava/classpath/org/omg/SendingContext
euler-11% svn cleanup
svn: XML parser failed in 'libjava/testsuite/libjava.special'
svn: Bogus date
euler-12% /bin/rm -rf libjava/testsuite/libjava.special
euler-13% svn cleanup
svn: XML parser failed in 'libjava/testsuite/libjava.lang'
svn: Bogus date
euler-14% /bin/rm -rf libjava/testsuite/libjava.lang
euler-15% svn cleanup
svn: XML parser failed in 'libjava/testsuite/libjava.loader'
svn: Bogus date
euler-16% /bin/rm -rf libjava/testsuite/libjava.loader
euler-17% svn cleanup
euler-18% contrib/gcc_update
Updating SVN tree
Agcc/testsuite/gcc.dg/special
Agcc/testsuite/gcc.dg/special/2419-2.c
Agcc/testsuite/gcc.dg/special/wkali-1.c
Agcc/testsuite/gcc.dg/special/wkali-2.c
Agcc/testsuite/gcc.dg/special/wkali-2a.c
Agcc/testsuite/gcc.dg/special/wkali-2b.c
Agcc/testsuite/gcc.dg/special/mips-abi.exp
Agcc/testsuite/gcc.dg/special/mips-abi.s
Agcc/testsuite/gcc.dg/special/gcsec-1.c
Agcc/testsuite/gcc.dg/special/weak-1.c
Agcc/testsuite/gcc.dg/special/weak-2.c
Agcc/testsuite/gcc.dg/special/weak-1a.c
Agcc/testsuite/gcc.dg/special/weak-2a.c
Agcc/testsuite/gcc.dg/special/alias-1.c
Agcc/testsuite/gcc.dg/special/weak-2b.c
Agcc/testsuite/gcc.dg/special/alias-2.c
Agcc/testsuite/gcc.dg/special/special.exp
Agcc/testsuite/gcc.dg/pch
Agcc/testsuite/gcc.dg/pch/valid-1b.c
Agcc/testsuite/gcc.dg/pch/macro-2.c
Agcc/testsuite/gcc.dg/pch/decl-5.hs
Agcc/testsuite/gcc.dg/pch/macro-4.c
Agcc/testsuite/gcc.dg/pch/decl-1.c
Agcc/testsuite/gcc.dg/pch/inline-3.hs
Agcc/testsuite/gcc.dg/pch/decl-3.c
Agcc/testsuite/gcc.dg/pch/import-1.c
Agcc/testsuite/gcc.dg/pch/decl-5.c
Agcc/testsuite/gcc.dg/pch/cpp-2.hs
Agcc/testsuite/gcc.dg/pch/save-temps-1.hs
Agcc/testsuite/gcc.dg/pch/static-2.hs
Agcc/testsuite/gcc.dg/pch/import-1b.h
Agcc/testsuite/gcc.dg/pch/cpp-2.c
Agcc/testsuite/gcc.dg/pch/system-1.c
Agcc/testsuite/gcc.dg/pch/pch.exp
Agcc/testsuite/gcc.dg/pch/valid-3.hs
Agcc/testsuite/gcc.dg/pch/macro-4.hs
Agcc/testsuite/gcc.dg/pch/warn-1.hs
Agcc/testsuite/gcc.dg/pch/valid-2.c
Agcc/testsuite/gcc.dg/pch/empty.c
Agcc/testsuite/gcc.dg/pch/decl-4.hs
Agcc/testsuite/gcc.dg/pch/valid-4.c
Agcc/testsuite/gcc.dg/pch/include
Agcc/testsuite/gcc.dg/pch/include/import-2a.h
Agcc/testsuite/gcc.dg/pch/include/import-2b.h
Agcc/testsuite/gcc.dg/pch/valid-6.c
Agcc/testsuite/gcc.dg/pch/inline-2.hs
Agcc/testsuite/gcc.dg/pch/warn-1.c
Agcc/testsuite/gcc.dg/pch/cpp-1.hs
Agcc/testsuite/gcc.dg/pch/system-1.hs
Agcc/testsuite/gcc.dg/pch/static-1.hs
Agcc/testsuite/gcc.dg/pch/inline-2.c
Agcc/testsuite/gcc.dg/pch/inline-4.c
Agcc/testsuite/gcc.dg/pch/struct-1.c
Agcc/testsuite/gcc.dg/pch/static-1.c
Agcc/testsuite/gcc.dg/pch/common-1.c
Agcc/testsuite/gcc.dg/pch/empty.hs
Agcc/testsuite/gcc.dg/pch/valid-2.hs
Agcc/testsuite/gcc.dg/pch/valid-1b.hs
Agcc/

Re: libgcc.a, et. al.

2006-01-08 Thread David Edelsohn
> Perry Smith writes:

Perry> I can not find a description of what the different versions of libgcc  
Perry> and libstd++ are for.  Some versions are obvious, others are not.

Perry> In particular, I am trying to determine what these libraries are  
Perry> for:  (this is on AIX version 5.3)  (how are they different from each  
Perry> other perhaps is a better way to phrase my question.  Or what  
Perry> objective do each of these have?)

Perry> gcc/powerpc-ibm-aix5.3.0.0/4.0.2/libgcc_eh.a
Perry> libgcc_s.a
Perry> libsupc++.a
Perry> libstdc++.a

Perry> To provide some background, I am attempting to write a device driver  
Perry> on AIX 5.3 using C++.  I want to use the try/catch/throw exception  
Perry> part of C++.  I realize this may be an uphill battle but I think it  
Perry> will be worth it.  To do this, the driver must be linked statically  
Perry> except for references resolved by exports provided by the AIX kernel  
Perry> services.  I've been writing drivers using xlc on AIX for 18+ years  
Perry> so I am familiar with the AIX environment using C but want to start  
Perry> using C++.

libgcc is a general, low-level runtime support library for GCC.
On AIX, the XLC support routines are provided by the system libc.
libgcc_s is the shared library version of the support library.  libstdc++
provides the standard C++ library.  libgcc_eh.a provides general support
for exception handling for all GCC languages. libsupc++ is included in
libstdc++.  The VAC++ runtime libraries are much like the G++ libraries,
but the two are incompatible.

GCC, including G++, provides a "-static" option to link an
application staticly.  GCC invokes the appropriate options for AIX
(similarly, an AIX shared object can be created with the "-shared"
commandline option).  One can examine the options generated for the linker
with the "-v" commandline option.

Using a C++ applications with exception handling to build a device
driver is complicated, even without using G++.  G++ needs all of its GCC
and C++-related support libraries for exception handling.

David




Re: libgcc.a, et. al.

2006-01-08 Thread Perry Smith

Thanks David,

I discovered the --disable-hosted-libstdcxx configure option for   
libstdc++-v3 and I'm going to build it and see where that takes me.   
Right now, my biggest offender as far as dragging in lots of symbols  
(like iob, fprintf, etc) is the verbose_terminate_handler.  --disable- 
hosted-libstdcxx should remove the reference to that routine and  
simply call abort (according to the comments).  After that, I think I  
can plug in my versions for "free", "malloc", "realloc", and "abort"  
and be almost home.


I tried a simple driver using exceptions and compiling with xlC but I  
got stuck.  I fought with it for a day and decided to try the gcc/g++  
route.


Maybe you can help on another item.  I recall back around 1995 or so,  
gcc could not be used for AIX device drivers because it did not  
handle the floating point registers properly.  I have only a vague  
memory of this.  Do you recall anything like that?


Thanks
Perry

On Jan 8, 2006, at 11:13 AM, David Edelsohn wrote:


Perry Smith writes:


Perry> I can not find a description of what the different versions  
of libgcc
Perry> and libstd++ are for.  Some versions are obvious, others are  
not.


Perry> In particular, I am trying to determine what these libraries  
are
Perry> for:  (this is on AIX version 5.3)  (how are they different  
from each

Perry> other perhaps is a better way to phrase my question.  Or what
Perry> objective do each of these have?)

Perry> gcc/powerpc-ibm-aix5.3.0.0/4.0.2/libgcc_eh.a
Perry> libgcc_s.a
Perry> libsupc++.a
Perry> libstdc++.a

Perry> To provide some background, I am attempting to write a  
device driver
Perry> on AIX 5.3 using C++.  I want to use the try/catch/throw  
exception
Perry> part of C++.  I realize this may be an uphill battle but I  
think it
Perry> will be worth it.  To do this, the driver must be linked  
statically
Perry> except for references resolved by exports provided by the  
AIX kernel
Perry> services.  I've been writing drivers using xlc on AIX for 18 
+ years
Perry> so I am familiar with the AIX environment using C but want  
to start

Perry> using C++.

libgcc is a general, low-level runtime support library for GCC.
On AIX, the XLC support routines are provided by the system libc.
libgcc_s is the shared library version of the support library.   
libstdc++
provides the standard C++ library.  libgcc_eh.a provides general  
support

for exception handling for all GCC languages. libsupc++ is included in
libstdc++.  The VAC++ runtime libraries are much like the G++  
libraries,

but the two are incompatible.

GCC, including G++, provides a "-static" option to link an
application staticly.  GCC invokes the appropriate options for AIX
(similarly, an AIX shared object can be created with the "-shared"
commandline option).  One can examine the options generated for the  
linker

with the "-v" commandline option.

Using a C++ applications with exception handling to build a device
driver is complicated, even without using G++.  G++ needs all of  
its GCC

and C++-related support libraries for exception handling.

David







Re: libgcc.a, et. al.

2006-01-08 Thread David Edelsohn
> Perry Smith writes:

Perry> Maybe you can help on another item.  I recall back around 1995 or so,  
Perry> gcc could not be used for AIX device drivers because it did not  
Perry> handle the floating point registers properly.  I have only a vague  
Perry> memory of this.  Do you recall anything like that?

GCC will generate uses of floating point registers from source
code that only describes integer computations.  GCC 4.1 will do so less
often, but nothing has changed to prevent it.  One can use the soft-float
option, but this confuses people who want to use floating point registers
in code that does describe floating point computations.

David




Microchip Pic-18F port on GNU/Gcc

2006-01-08 Thread fpoulain
Hello,

With a friend, we are interested in the port of gcc on Microchip Pic18.

So can you tell me more about your experience with the Microchip 18F, if
somebody is currently working on this device, how to find his work, or if the
memory model of the PIC18 is definitively a problem to gcc porting ?

Thanks for answer,

Francois Poulain
Brest, France.
02 98 45 74 22




Re: svn access on RHEL 4.0

2006-01-08 Thread Bradley Lucier


On Jan 8, 2006, at 9:12 AM, Daniel Berlin wrote:



Try removing the offending directory (gcc/testsuite/gcc.dg/ 
special) and
run svn cleanup again, updating the tree afterwards.  If you  
didn't have
any local changes in that directory you should not lose anything.   
If the

problem persists then you probably have a hardware problem.


Just "for the record":

gcc.gnu.org runs RHEL4, and we've never had any trouble like this.

All the snapshots are generated locally using svn, etc.


OK, here are some details.  Our server is a dual UltraSparc running  
Solaris 10 attached to the SAN.


Working client situation:  subversion 1.3.0 on Sparc Solaris 9, not  
using Berkeley DB


Non-working client situation: subversion 1.3.0 on x86-64 RHEL 4.0,  
using Berkeley DB


I think everything is running NFSv4 at this point.

So I don't know if the problem is with RHEL versus Solaris 10, or  
Berkeley DB versus non-Berkeley DB (whatever subversion uses when  
Berkeley DB is not available).  Perhaps I can do some experiments to  
see whether Solaris 9 + Berkeley DB works or not.


Brad



Re: [gcjx] Tree-SSA Operands Processing Problem

2006-01-08 Thread Zdenek Dvorak
Hello,

>   While trying to debug a long-standing ICE on the
> gcjx branch, I have found out that the root cause
> of the problem is with the tree-ssa operands processing
> code and it still seems to exist on the mainline
> (as of revision 109471), though I have traced the code
> path in a debugger and actually observed the problem only
> on the gcjx branch.
> 
> In mainline, the code path starts from
> tree-ssa-operands.c:1906 where we have a *local* variable
> VAR whose address is passed on to add_stmt_operand() on
> the next line:
> - --- 8< ---
>1903   /* Add a VUSE for each call-clobbered variable.  */
>1904   EXECUTE_IF_SET_IN_BITMAP (call_clobbered_vars, 0, u, bi)
>1905 {
>1906   tree var = referenced_var (u);
>1907   add_stmt_operand (&var, &empty_ann, opf_none |
> opf_non_specific);
>1908 }
>1909
> - --- 8< ---
> 
> This function then passes this pointer to append_use() at
> line 1634, which seems to just store it as-is in BUILD_USES:
> - --- 8< ---
>1572 static void
>1573 add_stmt_operand (tree *var_p, stmt_ann_t s_ann, int flags)
>1574 {
>[...]
>1628   if (is_real_op)
>1629 {
>1630   /* The variable is a GIMPLE register.  Add it to real
> operands.  */
>1631   if (flags & opf_is_def)
>1632 append_def (var_p);
>1633   else
>1634 append_use (var_p);
>1635 }
> - --- 8< ---
> 
> This seems wrong.

this can never happen.  Note that is_real_op = is_gimple_reg (var), and
a call clobbered variable can never satisfy is_gimple_reg.  Most likely
you forget to set TREE_ADDRESSABLE for this variable.  Or it gets to
call_clobbered_vars wrongly.

Zdenek

> I don't know whether this code path is actually ever
> taken on mainline or why it hasn't caused any problems
> yet, but on the gcjx branch it causes an ICE while
> processing the method "of" of the inner class "UnicodeBlock"
> of the class "java.lang.Character"
> ($GCC_SRC_DIR/libjava/java/lang/Character.java). Specifically,
> it ICEs while processing the CALL_EXPR corresponding to
> the call to _Jv_ThrowBadArrayIndex() thrown if a subscript
> is beyond the limits of an array. The problem occurs when
> the stack-slot for the VAR variable referred to earlier
> is occupied by the NUM local variable of finalize_ssa_vuses()
> and is overwritten when this variable is assigned a value in
> this function.
> 
> Comments?
> 
> Thanks,
> Ranjit.
> 
> - --
> Ranjit Mathew   Email: rmathew AT gmail DOT com
> 
> Bangalore, INDIA. Web: http://ranjitmathew.hostingzero.com/
> 
> 
> 
> 
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> 
> iD8DBQFDwT2fYb1hx2wRS48RAr8nAJ90iq5wgQpVeG09vihfwN1x1gvsRACfebPH
> 3ZjNpJLVJNJZTbWpDEKyxiU=
> =NBsE
> -END PGP SIGNATURE-
> 



Re: svn access on RHEL 4.0

2006-01-08 Thread Daniel Berlin
On Sun, 2006-01-08 at 18:05 -0600, Bradley Lucier wrote:
> On Jan 8, 2006, at 9:12 AM, Daniel Berlin wrote:
> 
> >>
> >> Try removing the offending directory (gcc/testsuite/gcc.dg/ 
> >> special) and
> >> run svn cleanup again, updating the tree afterwards.  If you  
> >> didn't have
> >> any local changes in that directory you should not lose anything.   
> >> If the
> >> problem persists then you probably have a hardware problem.
> >
> > Just "for the record":
> >
> > gcc.gnu.org runs RHEL4, and we've never had any trouble like this.
> >
> > All the snapshots are generated locally using svn, etc.
> 
> OK, here are some details.  Our server is a dual UltraSparc running  
> Solaris 10 attached to the SAN.
> 
> Working client situation:  subversion 1.3.0 on Sparc Solaris 9, not  
> using Berkeley DB
> 
> Non-working client situation: subversion 1.3.0 on x86-64 RHEL 4.0,  
> using Berkeley DB
> 
> I think everything is running NFSv4 at this point.

Unless you are running a server locally, whether you've compiled in BDB
or not doesn't matter.






Re: [gcjx] Tree-SSA Operands Processing Problem

2006-01-08 Thread Ranjit Mathew
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Zdenek Dvorak wrote:
> 
> this can never happen.  Note that is_real_op = is_gimple_reg (var), and
> a call clobbered variable can never satisfy is_gimple_reg.  Most likely
> you forget to set TREE_ADDRESSABLE for this variable.  Or it gets to
> call_clobbered_vars wrongly.

Oh! That might explain why this hasn't manifested itself
on mainline yet and why even after I put in this workaround
patch:
-  8< ---
Index: tree-ssa-operands.c
===
- --- tree-ssa-operands.c (revision 109471)
+++ tree-ssa-operands.c (working copy)
@@ -1770,8 +1770,10 @@ add_call_read_ops (tree stmt)
   /* Add a VUSE for each call-clobbered variable.  */
   EXECUTE_IF_SET_IN_BITMAP (call_clobbered_vars, 0, i, bi)
 {
- -  tree var = referenced_var (i);
- -  add_stmt_operand (&var, &empty_ann, opf_none);
+  /* FIXME: Temporary workaround. */
+  tree **var_pp = ggc_alloc (sizeof (tree *));
+  *var_pp = &(referenced_var (i));
+  add_stmt_operand (*var_pp, &empty_ann, opf_none);
 }

   ro_call_aliased_loads = empty_ann.makes_aliased_loads;
-  8< ---

it still aborts later on (checking is enabled) in
var_ann() in tree-flow-inline.h where the assertion
DECL_P(t) fails - T happens to be an SSA_NAME that
wraps(?) the VAR_DECL for the "SPECIALS" field of
the UnicodeBlock inner class of java.lang.Character.

All the times that this erroneous code path was
taken, the variables were either "SPECIALS" itself
or aliases to it. Thanks a lot. I'll investigate this
when I get some more time.

However, it still remains true that the code path
I referred to is wrong and if, as you say, it can
never be taken, it should just be removed and
replaced with an assertion codifying what you
are saying.

Thanks,
Ranjit.

- --
Ranjit Mathew   Email: rmathew AT gmail DOT com

Bangalore, INDIA. Web: http://ranjitmathew.hostingzero.com/




-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFDwc/uYb1hx2wRS48RAiGjAJ9yXv0wlyEf3mTP8uhZWrAssvphBwCggLLM
Ve3PA7Ql4Qm40yUBSvjdNqU=
=w40V
-END PGP SIGNATURE-



[M16C-ELF] : Problem with double and float data types.

2006-01-08 Thread Ina Pandit
Hi,

I have downloaded latest GCC and Binutils sources from FSF for M16C 
port. Using these sources, I could successfully build the cross 
toolchain i.e. m32c-elf-*.

I have observed the following behavior while using "float" and 
"double" data types for m16c target. Any computation involving 
a "float" or a "double" data type does not work on the m16c hardware. 
However, the correct values can be observed using GDB simulator. 

For example, the following code: 

#include
int main(void)
{
   float f1 = 3.0;

   printf("\n f1 = %f \n",f1);

   f1 += 2.0;
   printf("\n f1 = %f \n",f1);

return 0;
}

prints the expected values of "f1" using gdb simulator. 
However, the above code does not work on hardware. 
Only the initial value of "f1",i.e. 3.0 is output on the serial port. 
But the value after computation i.e. 5.0 in not output. 
Similar behavior is observed when "double" data type is used. 

Please note that for outputting these characters on the serial port 
we have modified the printf() function a bit. 

Also the option "-msim" is used to print the output on the console 
using gdb simulator. But, even without this option ( with no printf() 
function in the code) the values can be watched by debugging the 
code using gdb.

Thanks in advance.

Regards,
Ina Pandit
KPIT Cummins InfoSystems Ltd.
Pune, India


Free download of GNU based tool-chains for Renesas' SH and H8 Series.
The following site also offers free technical support to its users. 
Visit http://www.kpitgnutools.com for details. 
Latest versions of KPIT GNU tools were released on October 12, 2005.