Update of /cvsroot/fink/dists/10.4/unstable/main/finkinfo/languages
In directory 
sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv12870/main/finkinfo/languages

Modified Files:
      Tag: pangocairo-branch
        ipython-py.info python23.info 
Added Files:
      Tag: pangocairo-branch
        gcc42.info gcc42.patch 
Log Message:
merge from HEAD as of yesterday

--- NEW FILE: gcc42.info ---
Info2: <<
Package: gcc42
Version: 4.1.9999
Revision: 20070124
Source: ftp://gcc.gnu.org/pub/gcc/snapshots/4.2-%r/gcc-4.2-%r.tar.bz2
Source-MD5: 0cce2258681753b521c4d51af7b6ab76
Type: -64bit
NoSetCPPFLAGS: True
NoSetLDFLAGS: True
Conflicts: gcc4
Replaces: gcc4
Depends: gmp-shlibs (>= 4.2.1-1), libmpfr1-shlibs (>= 2.2.0-2), odcctools (>= 
622.3-20060913), %N-shlibs (>= %e:%v-%r), libiconv, libgettext3-shlibs
BuildDepends: gmp (>= 4.2.1-1), libmpfr1 (>= 2.2.0-2), libiconv-dev, 
gettext-tools, libgettext3-dev
ConfigureParams: <<
 --prefix=%p/lib/gcc4.2 --mandir=%p/share/man --infodir=%p/share/info 
--enable-languages=c,c++,fortran,objc,java \
 `cc -v 2>&1|grep '^Configured'|tr ' ' '\n'|egrep 
'^\-\-(with\-(arch|tune)|host)='|xargs` \
 --with-as=%p/lib/odcctools/bin/as --with-ld=%p/lib/odcctools/bin/ld 
--with-nm=%p/lib/odcctools/bin/nm \
 --with-gmp=%p --with-libiconv-prefix=%p --with-system-zlib 
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib
<<
PatchScript: <<
 #!/bin/sh -ev
 # make sure odcctools libtool being used.
 perl -pi -e 's,/usr/bin/libtool,%p/lib/odcctools/bin/libtool,;' 
gcc/config/darwin.h
 perl -pi -e 's,nm -P,%p/lib/odcctools/bin/nm -P,;' 
libstdc++-v3/scripts/make_exports.pl
<<
Patch: %n.patch
CompileScript: <<
 #!/bin/sh -ev
 ulimit -s `ulimit -s`
 cd boehm-gc
 # Hack to avoid building multilib boehm-gc
 perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: 
all-redirect\nelse\nall:\n\techo Multilib libffi build disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-redirect\nelse\ninstall:\n\techo Multiffi libjava install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-redirect\nelse\ncheck:\n\techo Multilib libffi check disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: 
all-recursive\nelse\nall:\n\techo Multilib libffi build disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-recursive\nelse\ninstall:\n\techo Multilib libffi install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-recursive\nelse\ncheck:\n\techo Multilib libffi check disabled\nendif/' 
Makefile.in
 cd ..
 cd libffi
 # Hack to avoid building multilib libffi
 perl -pi -e 's/^\t\$\(MAKE\) \$\(AM_MAKEFLAGS\) all-recursive\n//' Makefile.in
 perl -pi -e 's/^all: fficonfig.h/ifeq (\$(MULTISUBDIR),)\nall: 
fficonfig.h\n\t\$(MAKE) \$(AM_MAKEFLAGS) all-recursive\nelse\nall:\n\techo 
Multilib libffi build disabled\nendif/' Makefile.in
 perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-redirect\nelse\ninstall:\n\techo Multiffi libjava install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-redirect\nelse\ncheck:\n\techo Multilib libffi check disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: 
all-recursive\nelse\nall:\n\techo Multilib libffi build disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-recursive\nelse\ninstall:\n\techo Multilib libffi install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-recursive\nelse\ncheck:\n\techo Multilib libffi check disabled\nendif/' 
Makefile.in
 cd ..
 cd libjava
# regenerate configure with hacked configure.ac to avoid multilib build
 autoconf  -I . -I .. -I ../config
# Hack to avoid building multilib libjava
 perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: 
all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-redirect\nelse\ninstall:\n\techo Multilib libjava install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: 
all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' 
Makefile.in
 perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: 
install-recursive\nelse\ninstall:\n\techo Multilib libjava install 
disabled\nendif/' Makefile.in
 perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: 
check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' 
Makefile.in
 cd ..
 mkdir ../darwin_objdir
 cd ../darwin_objdir
 ../gcc-4.2-%r/configure %c
 make
 ##  make check requires autogen, dejagnu and expect, and should be run, in 
darwin_objdir, after install.
 ##  on 32-bit processors use
 # make -k check
 ##  on 64-bit processors use
 # make -k check RUNTESTFLAGS="--target_board=unix'{-m32,-m64}'"
<<
InstallScript: <<
 #!/bin/sh -ev
 cd ../darwin_objdir
 make install DESTDIR=%d 
 mkdir -p %i/bin
 ln -s %p/lib/gcc4.2/bin/gfortran %i/bin/gfortran
 ln -s %p/lib/gcc4.2/bin/gcc %i/bin/gcc-4
 ln -s %p/lib/gcc4.2/bin/g++ %i/bin/g++-4
 ln -s %p/lib/gcc4.2/bin/c++ %i/bin/c++-4
 ln -s %p/lib/gcc4.2/bin/cpp %i/bin/cpp-4
 ln -s %p/lib/gcc4.2/bin/gcov %i/bin/gcov-4
 ln -s %p/lib/gcc4.2/bin/gcj %i/bin/gcj
 ln -s %p/lib/gcc4.2/bin/gcj-dbtool %i/bin/gcj-dbtool
 ln -s %p/lib/gcc4.2/bin/gcjh %i/bin/gcjh
 ln -s %p/lib/gcc4.2/bin/gij %i/bin/gij
 ln -s %p/lib/gcc4.2/bin/gjnih %i/bin/gjnih
 ln -s %p/lib/gcc4.2/bin/grmiregistry %i/bin/grmiregistry
 ln -s %p/lib/gcc4.2/bin/grmic %i/bin/grmic
 ln -s %p/lib/gcc4.2/bin/jcf-dump %i/bin/jcf-dump
 ln -s %p/lib/gcc4.2/bin/jv-convert %i/bin/jv-convert
 ln -s %p/lib/gcc4.2/bin/jv-scan %i/bin/jv-scan
 mv %i/share/info/cpp.info %i/share/info/cpp-4.info
 mv %i/share/info/gcc.info %i/share/info/gcc-4.info
 mv %i/share/man/man1/cpp.1 %i/share/man/man1/cpp-4.1
 mv %i/share/man/man1/g++.1 %i/share/man/man1/g++-4.1
 mv %i/share/man/man1/gcc.1 %i/share/man/man1/gcc-4.1
 mv %i/share/man/man1/gcov.1 %i/share/man/man1/gcov-4.1
 # remove build path from .la files
 perl -pi -e "s, \-L[^ ']*/%n-%v-%r/darwin_objdir/[^ ']*,,g" `find 
%i/lib/gcc4.2/lib -name '*.la'`
<<
SplitOff: <<
  Package: %N-shlibs
  Replaces: gcc4 (<= 20050130-4), gfortran-shlibs
  Provides: gfortran-shlibs
  Description: Shared libraries for gcc4
  DocFiles: gcc/COPYING gcc/COPYING.LIB
  Homepage: http://gcc.gnu.org/
  Files: <<
    lib/gcc4.2/lib/libgcc_s.1.dylib
    lib/gcc4.2/lib/libgfortran.2.dylib
    lib/gcc4.2/lib/libgfortran.2.0.0.dylib
    lib/gcc4.2/lib/libssp.0.dylib
    lib/gcc4.2/lib/libssp.0.0.0.dylib
    lib/gcc4.2/lib/libgcc_s.10.4.dylib
    lib/gcc4.2/lib/libgcc_s.10.5.dylib
    lib/gcc4.2/lib/libobjc-gnu.2.dylib
    lib/gcc4.2/lib/libobjc-gnu.2.0.0.dylib
    lib/gcc4.2/lib/libstdc++.6.dylib
    lib/gcc4.2/lib/libstdc++.6.0.9.dylib
    lib/gcc4.2/lib/libgomp.1.dylib
    lib/gcc4.2/lib/libgomp.1.0.0.dylib
    lib/gcc4.2/lib/libffi.4.0.1.dylib
    lib/gcc4.2/lib/libffi.4.dylib
    lib/gcc4.2/lib/libgcj.8.0.0.dylib
    lib/gcc4.2/lib/libgcj.8.dylib
    lib/gcc4.2/lib/libgcj-tools.8.0.0.dylib
    lib/gcc4.2/lib/libgcj-tools.8.dylib
    lib/gcc4.2/lib/libgij.8.0.0.dylib
    lib/gcc4.2/lib/libgij.8.dylib
    lib/gcc4.2/lib/gcj-4.2.0
    lib/gcc4.2/%lib/libgfortran.2.dylib
    lib/gcc4.2/%lib/libgfortran.2.0.0.dylib
    lib/gcc4.2/%lib/libssp.0.dylib
    lib/gcc4.2/%lib/libssp.0.0.0.dylib
    lib/gcc4.2/%lib/libobjc-gnu.2.dylib
    lib/gcc4.2/%lib/libobjc-gnu.2.0.0.dylib
    lib/gcc4.2/%lib/libstdc++.6.dylib
    lib/gcc4.2/%lib/libstdc++.6.0.9.dylib
    lib/gcc4.2/%lib/libgomp.1.dylib
    lib/gcc4.2/%lib/libgomp.1.0.0.dylib
  <<
  Shlibs: <<
    %p/lib/gcc4.2/lib/libgfortran.2.dylib 3.0.0 %n (>= 4.1.999-20060915) 32
    %p/lib/gcc4.2/lib/libffi.4.dylib 5.0.0 %n (>= 20050130-5) 32
    %p/lib/gcc4.2/lib/libstdc++.6.dylib 5.0.0 %n (>= 4.1-1) 32
    %p/lib/gcc4.2/lib/libgcc_s.1.dylib 1.0.0 %n (>= 4.1-1) 32-64
    %p/lib/gcc4.2/lib/libgcj.8.dylib 9.0.0 %n (>= 4.1.999-20060915) 32
    %p/lib/gcc4.2/lib/libgcj-tools.8.dylib  9.0.0 %n (>= 4.1.999-20060915) 32
    %p/lib/gcc4.2/lib/libgij.8.dylib 9.0.0 %n (>= 4.1.999-20060915) 32
    %p/lib/gcc4.2/lib/libssp.0.dylib 1.0.0 %n (>= 4.1-1) 32
    %p/lib/gcc4.2/lib/libobjc-gnu.1.dylib 2.0.0 %n (>= 20050130-5) 32
    %p/lib/gcc4.2/lib/libgomp.1.dylib 2.0.0 %n (>= 2:4.1.99-20060513) 32
    %p/lib/gcc4.2/%lib/libgfortran.2.dylib 3.0.0 %n (>= 4.1.999-20060915) 64
    %p/lib/gcc4.2/%lib/libstdc++.6.dylib 5.0.0 %n (>= 4.1-1) 64
    %p/lib/gcc4.2/%lib/libssp.0.dylib 1.0.0 %n (>= 4.1-1) 64
    %p/lib/gcc4.2/%lib/libobjc-gnu.1.dylib 2.0.0 %n (>= 20050130-5) 64
    %p/lib/gcc4.2/%lib/libgomp.1.dylib 2.0.0 %n (>= 2:4.1.99-20060513) 64
  <<
<<
License: GPL
Description: GNU Compiler Collection Version 4.2
InfoDocs: cpp-4.info cppinternals.info gcc-4.info gccinstall.info gccint.info 
gcj.info gfortran.info
DescDetail: <<
 GCC, the GNU Compiler Collection, includes front ends for
 C, C++, Objective-C, Objective-C++, Fortran, Java, and Ada.
 .
 C, C++, Objective C and Fortran and Java are included in this package.
 .
 The C and C++ compilers are named gcc-4 and g++-4 to avoid
 conflicts with gcc and g++ installed by the Apple Developer Tools
<<
DescPackaging: <<
 The current gcc 4.2 snapshots still requires several Makefile.am files
to be patched and configure scripts regenerated in order to properly
perform multilib builds on 32-bit PowerPC processors. Since the libffi
and libjava don't properly build at 64-bit for Intel Darwin, I have
used --disable-multilib on that architecture for the gcc 4.2 release.
<<
Homepage: http://gcc.gnu.org/
Maintainer: Jack Howarth <[EMAIL PROTECTED]>
<<

                 

                 

Index: python23.info
===================================================================
RCS file: 
/cvsroot/fink/dists/10.4/unstable/main/finkinfo/languages/python23.info,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -d -r1.3 -r1.3.2.1
--- python23.info       22 Sep 2006 11:54:01 -0000      1.3
+++ python23.info       31 Jan 2007 19:18:01 -0000      1.3.2.1
@@ -1,6 +1,6 @@
 Package: python23
 Version: 2.3.5
-Revision: 1126
+Revision: 1127
 Epoch: 1
 Maintainer: Jeffrey Whitaker <[EMAIL PROTECTED]>
 Conflicts: python23-nox, python-nox (<= 2.2.1-8)
@@ -14,7 +14,7 @@
 Source2-MD5: 3cbe6e24949b9e8636a266e5115cf25b
 PatchScript: <<
 #!/bin/sh -ev
- (sed 's|@PREFIX@|%p|g' < %a/%n.patch | patch -p1)
+ (sed 's|@PREFIX@|%p|g' < %a/%n.patch | patch -p1) || exit 1
 # get rid of semaphore errors and of POSIX_C_SOURCE :
  perl -pi -e 's,(SunOS/5\.8|Darwin/6\* )\),\1 | Darwin/8\*\),' configure
 chmod 775 configure

--- NEW FILE: gcc42.patch ---
--- gcc-4.2-20060822/gcc/testsuite/lib/prune.exp.org    2006-08-23 
18:33:56.000000000 -0400
+++ gcc-4.2-20060822/gcc/testsuite/lib/prune.exp        2006-08-23 
18:41:28.000000000 -0400
@@ -43,6 +43,7 @@
     regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" 
text
     regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not 
done" $text "" text
 
+    regsub -all "(^|\n)can't find atom for N_GSYM stabs \[^\n\]* in \[^\n\]*" 
$text "" text
     #send_user "After:$text\n"
 
     return $text
--- gcc-4.2-20060825/libstdc++-v3/testsuite/lib/prune.exp.org   2006-08-26 
11:22:52.000000000 -0400
+++ gcc-4.2-20060825/libstdc++-v3/testsuite/lib/prune.exp       2006-08-26 
11:23:39.000000000 -0400
@@ -29,5 +29,7 @@
     regsub -all "(^|\n)\[^\n\]*: Additional NOP may be necessary to workaround 
Itanium processor A/B step errata" $text "" text
     regsub -all "(^|\n)\[^\n*\]*: Assembler messages:\[^\n\]*" $text "" text
 
+    regsub -all "(^|\n)can't find atom for N_GSYM stabs \[^\n\]* in \[^\n\]*" 
$text "" text
+
     return $text
 }
--- gcc-4.2-20061107/libjava/configure.ac.orig  2006-11-13 20:36:59.000000000 
-0500
+++ gcc-4.2-20061107/libjava/configure.ac       2006-11-13 20:38:22.000000000 
-0500
@@ -180,6 +180,10 @@
 TOOLKIT=
 AC_SUBST(TOOLKIT)
 
+if test -n "${with_multisubdir}"; then
+  peerlibs=no
+fi
+
 for peer in $peerlibs ; do
   case $peer in
     xlib)
diff -uNr gcc-4.2-20070123/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c 
gcc-4.2-20070123.pr29516/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
--- gcc-4.2-20070123/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c    1969-12-31 
19:00:00.000000000 -0500
+++ gcc-4.2-20070123.pr29516/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c    
2007-01-23 20:22:00.000000000 -0500
@@ -0,0 +1,23 @@
+/* PR tree-optimization/29516 */
+
+/* { dg-do compile { target fpic } } */
+/* { dg-options "-O -ftree-vrp -fPIC -fdump-tree-ivopts" } */
+
+typedef struct gfc_se { int pre; } gfc_se;
+typedef struct gfc_ss_info { int dim[7]; } gfc_ss_info;
+int gfc_rank_cst[7 + 1];
+gfc_conv_array_transpose (gfc_se * se) {
+  int dest, src, dest_index, src_index;
+  gfc_ss_info *dest_info;
+  int n;
+  for (n = 0; n < 2; n++) {
+    dest_info->dim[n] = n;
+    src_index = gfc_rank_cst[1 - n];
+    a (se->pre, b (dest, dest_index), c (src, src_index));
+  }
+}
+
+/* Ivopts should not produce multiplication by a pointer constant.  */
+
+/* { dg-final { scan-tree-dump-times "\\* \[0-9\]*B;" 0 "ivopts" } } */
+/* { dg-final { cleanup-tree-dump "ivopts" } } */
diff -uNr gcc-4.2-20070123/gcc/tree-ssa-address.c 
gcc-4.2-20070123.pr29516/gcc/tree-ssa-address.c
--- gcc-4.2-20070123/gcc/tree-ssa-address.c     2006-10-21 01:50:35.000000000 
-0400
+++ gcc-4.2-20070123.pr29516/gcc/tree-ssa-address.c     2007-01-23 
20:22:00.000000000 -0500
@@ -243,54 +243,54 @@
 tree
 tree_mem_ref_addr (tree type, tree mem_ref)
 {
-  tree addr = NULL_TREE;
+  tree addr;
   tree act_elem;
   tree step = TMR_STEP (mem_ref), offset = TMR_OFFSET (mem_ref);
+  tree sym = TMR_SYMBOL (mem_ref), base = TMR_BASE (mem_ref);
+  tree addr_base = NULL_TREE, addr_off = NULL_TREE;
 
-  act_elem = TMR_INDEX (mem_ref);
-  if (act_elem)
+  if (sym)
+    addr_base = fold_convert (type, build_addr (sym, current_function_decl));
+  else if (base && POINTER_TYPE_P (TREE_TYPE (base)))
     {
-      act_elem = fold_convert (type, act_elem);
-
-      if (step)
-       act_elem = fold_build2 (MULT_EXPR, type, act_elem,
-                               fold_convert (type, step));
-      addr = act_elem;
+      addr_base = fold_convert (type, base);
+      base = NULL_TREE;
     }
 
-  act_elem = TMR_BASE (mem_ref);
+  act_elem = TMR_INDEX (mem_ref);
   if (act_elem)
     {
-      act_elem = fold_convert (type, act_elem);
-
-      if (addr)
-       addr = fold_build2 (PLUS_EXPR, type, addr, act_elem);
-      else
-       addr = act_elem;
+      if (step)
+       act_elem = fold_build2 (MULT_EXPR, sizetype, act_elem, step);
+      addr_off = act_elem;
     }
 
-  act_elem = TMR_SYMBOL (mem_ref);
+  act_elem = base;
   if (act_elem)
     {
-      act_elem = fold_convert (type, build_addr (act_elem,
-                                                current_function_decl));
-      if (addr)
-       addr = fold_build2 (PLUS_EXPR, type, addr, act_elem);
+      if (addr_off)
+       addr_off = fold_build2 (PLUS_EXPR, sizetype, addr_off, act_elem);
       else
-       addr = act_elem;
+       addr_off = act_elem;
     }
 
   if (!zero_p (offset))
     {
-      act_elem = fold_convert (type, offset);
-
-      if (addr)
-       addr = fold_build2 (PLUS_EXPR, type, addr, act_elem);
+      if (addr_off)
+       addr_off = fold_build2 (PLUS_EXPR, sizetype, addr_off, offset);
       else
-       addr = act_elem;
+       addr_off = offset;
     }
 
-  if (!addr)
+  if (addr_off)
+    {
+      addr = fold_convert (type, addr_off);
+      if (addr_base)
+       addr = fold_build2 (PLUS_EXPR, type, addr_base, addr);
+    }
+  else if (addr_base)
+    addr = addr_base;
+  else
     addr = build_int_cst (type, 0);
 
   return addr;
@@ -342,52 +342,113 @@
              || DECL_EXTERNAL (obj)));
 }
 
-/* Adds COEF * ELT to PARTS.  TYPE is the type of the address we
-   construct.  */
+/* Remove M-th element from COMB.  */
 
 static void
-add_to_parts (struct mem_address *parts, tree type, tree elt,
-             unsigned HOST_WIDE_INT coef)
+aff_combination_remove_elt (struct affine_tree_combination *comb, unsigned m)
 {
-  /* Check if this is a symbol.  */
-  if (!parts->symbol
-      && coef == 1
-      && TREE_CODE (elt) == ADDR_EXPR
-      && fixed_address_object_p (TREE_OPERAND (elt, 0)))
+  comb->n--;
+  if (m <= comb->n)
     {
-      parts->symbol = TREE_OPERAND (elt, 0);
-      return;
+      comb->coefs[m] = comb->coefs[comb->n];
+      comb->elts[m] = comb->elts[comb->n];
     }
+  if (comb->rest)
+    {
+      comb->coefs[comb->n] = 1;
+      comb->elts[comb->n] = comb->rest;
+      comb->rest = NULL_TREE;
+      comb->n++;
+    }
+}
 
-  if (coef != 1)
-    elt = fold_build2 (MULT_EXPR, type, fold_convert (type, elt),
-                      build_int_cst_type (type, coef));
-  else
-    elt = fold_convert (type, elt);
+/* If ADDR contains an address of object that is a link time constant,
+   move it to PARTS->symbol.  */
 
-  if (!parts->base)
+static void
+move_fixed_address_to_symbol (struct mem_address *parts,
+                             struct affine_tree_combination *addr)
+{
+  unsigned i;
+  tree val = NULL_TREE;
+
+  for (i = 0; i < addr->n; i++)
     {
-      parts->base = elt;
-      return;
+      if (addr->coefs[i] != 1)
+       continue;
+
+      val = addr->elts[i];
+      if (TREE_CODE (val) == ADDR_EXPR
+         && fixed_address_object_p (TREE_OPERAND (val, 0)))
+       break;
     }
 
+  if (i == addr->n)
+    return;
+
+  parts->symbol = TREE_OPERAND (val, 0);
+  aff_combination_remove_elt (addr, i);
+}
+
+/* If ADDR contains an address of a dereferenced pointer, move it to
+   PARTS->base.  */
+
+static void
+move_pointer_to_base (struct mem_address *parts,
+                     struct affine_tree_combination *addr)
+{
+  unsigned i;
+  tree val = NULL_TREE;
+
+  for (i = 0; i < addr->n; i++)
+    {
+      if (addr->coefs[i] != 1)
+       continue;
+
+      val = addr->elts[i];
+      if (POINTER_TYPE_P (TREE_TYPE (val)))
+       break;
+    }
+
+  if (i == addr->n)
+    return;
+
+  parts->base = val;
+  aff_combination_remove_elt (addr, i);
+}
+
+/* Adds ELT to PARTS.  */
+
+static void
+add_to_parts (struct mem_address *parts, tree elt)
+{
+  tree type;
+
   if (!parts->index)
     {
       parts->index = elt;
       return;
     }
 
+  if (!parts->base)
+    {
+      parts->base = elt;
+      return;
+    }
+
   /* Add ELT to base.  */
-  parts->base = fold_build2 (PLUS_EXPR, type, parts->base, elt);
+  type = TREE_TYPE (parts->base);
+  parts->base = fold_build2 (PLUS_EXPR, type,
+                            parts->base,
+                            fold_convert (type, elt));
 }
 
 /* Finds the most expensive multiplication in ADDR that can be
    expressed in an addressing mode and move the corresponding
-   element(s) to PARTS.  TYPE is the type of the address we
-   construct.  */
+   element(s) to PARTS.  */
 
 static void
-most_expensive_mult_to_index (struct mem_address *parts, tree type,
+most_expensive_mult_to_index (struct mem_address *parts,
                              struct affine_tree_combination *addr)
 {
   unsigned HOST_WIDE_INT best_mult = 0;
@@ -423,16 +484,16 @@
          continue;
        }
 
-      elt = fold_convert (type, addr->elts[i]);
+      elt = fold_convert (sizetype, addr->elts[i]);
       if (!mult_elt)
        mult_elt = elt;
       else
-       mult_elt = fold_build2 (PLUS_EXPR, type, mult_elt, elt);
+       mult_elt = fold_build2 (PLUS_EXPR, sizetype, mult_elt, elt);
     }
   addr->n = j;
 
   parts->index = mult_elt;
-  parts->step = build_int_cst_type (type, best_mult);
+  parts->step = build_int_cst_type (sizetype, best_mult);
 }
 
 /* Splits address ADDR into PARTS.
@@ -445,10 +506,10 @@
    for complicated addressing modes is useless.  */
 
 static void
-addr_to_parts (struct affine_tree_combination *addr, tree type,
-              struct mem_address *parts)
+addr_to_parts (struct affine_tree_combination *addr, struct mem_address *parts)
 {
   unsigned i;
+  tree part;
 
   parts->symbol = NULL_TREE;
   parts->base = NULL_TREE;
@@ -456,19 +517,34 @@
   parts->step = NULL_TREE;
 
   if (addr->offset)
-    parts->offset = build_int_cst_type (type, addr->offset);
+    parts->offset = build_int_cst_type (sizetype, addr->offset);
   else
     parts->offset = NULL_TREE;
 
+  /* Try to find a symbol.  */
+  move_fixed_address_to_symbol (parts, addr);
+
   /* First move the most expensive feasible multiplication
      to index.  */
-  most_expensive_mult_to_index (parts, type, addr);
+  most_expensive_mult_to_index (parts, addr);
+
+  /* Try to find a base of the reference.  Since at the moment
+     there is no reliable way how to distinguish between pointer and its
+     offset, this is just a guess.  */
+  if (!parts->symbol)
+    move_pointer_to_base (parts, addr);
 
   /* Then try to process the remaining elements.  */
   for (i = 0; i < addr->n; i++)
-    add_to_parts (parts, type, addr->elts[i], addr->coefs[i]);
+    {
+      part = fold_convert (sizetype, addr->elts[i]);
+      if (addr->coefs[i] != 1)
+       part = fold_build2 (MULT_EXPR, sizetype, part,
+                           build_int_cst_type (sizetype, addr->coefs[i]));
+      add_to_parts (parts, part);
+    }
   if (addr->rest)
-    add_to_parts (parts, type, addr->rest, 1);
+    add_to_parts (parts, fold_convert (sizetype, addr->rest));
 }
 
 /* Force the PARTS to register.  */
@@ -493,10 +569,10 @@
                struct affine_tree_combination *addr)
 {
   tree mem_ref, tmp;
-  tree addr_type = build_pointer_type (type);
+  tree addr_type = build_pointer_type (type), atype;
   struct mem_address parts;
 
-  addr_to_parts (addr, addr_type, &parts);
+  addr_to_parts (addr, &parts);
   gimplify_mem_ref_parts (bsi, &parts);
   mem_ref = create_mem_ref_raw (type, &parts);
   if (mem_ref)
@@ -509,9 +585,9 @@
       /* Move the multiplication to index.  */
       gcc_assert (parts.index);
       parts.index = force_gimple_operand_bsi (bsi,
-                                             build2 (MULT_EXPR, addr_type,
-                                                     parts.index, parts.step),
-                                             true, NULL_TREE);
+                               fold_build2 (MULT_EXPR, sizetype,
+                                            parts.index, parts.step),
+                               true, NULL_TREE);
       parts.step = NULL_TREE;
   
       mem_ref = create_mem_ref_raw (type, &parts);
@@ -521,16 +597,18 @@
 
   if (parts.symbol)
     {
-      tmp = build_addr (parts.symbol, current_function_decl);
+      tmp = fold_convert (addr_type,
+                         build_addr (parts.symbol, current_function_decl));
     
       /* Add the symbol to base, eventually forcing it to register.  */
       if (parts.base)
        {
          if (parts.index)
            parts.base = force_gimple_operand_bsi (bsi,
-                                                  build2 (PLUS_EXPR, addr_type,
-                                                          parts.base, tmp),
-                                                  true, NULL_TREE);
+                       fold_build2 (PLUS_EXPR, addr_type,
+                                    fold_convert (addr_type, parts.base),
+                                    tmp),
+                       true, NULL_TREE);
          else
            {
              parts.index = parts.base;
@@ -546,18 +624,21 @@
        return mem_ref;
     }
 
-  if (parts.base)
+  if (parts.index)
     {
-      /* Add base to index.  */
-      if (parts.index)
-       parts.index = force_gimple_operand_bsi (bsi,
-                                               build2 (PLUS_EXPR, addr_type,
-                                                       parts.base,
-                                                       parts.index),
-                                               true, NULL_TREE);
+      /* Add index to base.  */
+      if (parts.base)
+       {
+         atype = TREE_TYPE (parts.base);
+         parts.base = force_gimple_operand_bsi (bsi,
+                       fold_build2 (PLUS_EXPR, atype,
+                                    parts.base,
+                                    fold_convert (atype, parts.index)),
+                       true, NULL_TREE);
+       }
       else
-       parts.index = parts.base;
-      parts.base = NULL_TREE;
+       parts.base = parts.index;
+      parts.index = NULL_TREE;
 
       mem_ref = create_mem_ref_raw (type, &parts);
       if (mem_ref)
@@ -566,15 +647,18 @@
 
   if (parts.offset && !integer_zerop (parts.offset))
     {
-      /* Try adding offset to index.  */
-      if (parts.index)
-       parts.index = force_gimple_operand_bsi (bsi, 
-                                               build2 (PLUS_EXPR, addr_type,
-                                                       parts.index,
-                                                       parts.offset),
-                                               true, NULL_TREE);
+      /* Try adding offset to base.  */
+      if (parts.base)
+       {
+         atype = TREE_TYPE (parts.base);
+         parts.base = force_gimple_operand_bsi (bsi, 
+                       fold_build2 (PLUS_EXPR, atype,
+                                    parts.base,
+                                    fold_convert (atype, parts.offset)),
+                       true, NULL_TREE);
+       }
       else
-       parts.index = parts.offset, bsi;
+       parts.base = parts.offset;
 
       parts.offset = NULL_TREE;
 
@@ -587,7 +671,7 @@
      (only a register).  If we cannot create such a memory reference,
      something is really wrong.  */
   gcc_assert (parts.symbol == NULL_TREE);
-  gcc_assert (parts.base == NULL_TREE);
+  gcc_assert (parts.index == NULL_TREE);
   gcc_assert (!parts.step || integer_onep (parts.step));
   gcc_assert (!parts.offset || integer_zerop (parts.offset));
   gcc_unreachable ();
@@ -632,8 +716,9 @@
   if (addr.base && TREE_CODE (addr.base) == INTEGER_CST)
     {
       if (addr.offset)
-       addr.offset = fold_binary_to_constant (PLUS_EXPR, ptr_type_node,
-                                              addr.offset, addr.base);
+       addr.offset = fold_binary_to_constant (PLUS_EXPR, sizetype,
+                       addr.offset,
+                       fold_convert (sizetype, addr.base));
       else
        addr.offset = addr.base;
 
@@ -646,14 +731,14 @@
       off = addr.index;
       if (addr.step)
        {
-         off = fold_binary_to_constant (MULT_EXPR, ptr_type_node,
+         off = fold_binary_to_constant (MULT_EXPR, sizetype,
                                         off, addr.step);
          addr.step = NULL_TREE;
        }
 
       if (addr.offset)
        {
-         addr.offset = fold_binary_to_constant (PLUS_EXPR, ptr_type_node,
+         addr.offset = fold_binary_to_constant (PLUS_EXPR, sizetype,
                                                 addr.offset, off);
        }
       else
diff -uNr gcc-4.2-20070123/gcc/tree.def gcc-4.2-20070123.pr29516/gcc/tree.def
--- gcc-4.2-20070123/gcc/tree.def       2006-10-21 01:50:37.000000000 -0400
+++ gcc-4.2-20070123.pr29516/gcc/tree.def       2007-01-23 20:22:00.000000000 
-0500
@@ -943,6 +943,9 @@
    OFFSET (integer constant).  Corresponding address is
    SYMBOL + BASE + STEP * INDEX + OFFSET.  Only variations and values valid on
    the target are allowed.
+
+   The type of STEP, INDEX and OFFSET is sizetype.  The type of BASE is
+   sizetype or a pointer type (if SYMBOL is NULL).
    
    The sixth argument is the reference to the original memory access, which
    is preserved for the purposes of the RTL alias analysis.  The seventh

                 

Index: ipython-py.info
===================================================================
RCS file: 
/cvsroot/fink/dists/10.4/unstable/main/finkinfo/languages/ipython-py.info,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -d -r1.4 -r1.4.2.1
--- ipython-py.info     8 Nov 2006 17:52:25 -0000       1.4
+++ ipython-py.info     31 Jan 2007 19:18:01 -0000      1.4.2.1
@@ -1,12 +1,12 @@
 Info2: <<
 Package: ipython-py%type_pkg[python]
-Version: 0.7.2
+Version: 0.7.3
 Revision: 1
 Type: python(2.3 2.4 2.5)
 Maintainer: Andrea Riciputi <[EMAIL PROTECTED]>
 Depends: python%type_pkg[python]
 Source: http://ipython.scipy.org/dist/ipython-%v.tar.gz 
-Source-MD5: 3565efcf87c7318c1a3930e278ac9fa5
+Source-MD5: 40cbc814b812f2c3d6c13b47d41a6cc5
 CompileScript: python%type_raw[python] setup.py build
 InstallScript: <<
  python%type_raw[python] setup.py install --root=%d


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Fink-commits mailing list
Fink-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fink-commits

Reply via email to