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