This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wednesday 17 October 2001 11:48, Richard Kenner wrote: > This patch does a few things that ended up being tied together. > > First, it fixes the problem with execute/20001024-1.c involving restricted > pointers by defering making the new alias set until we actually need the > alias set of the object. The reason is that we might have a pointer to > an incomplete type and if we get an alias set for an incomplete type > it gets changed to alias set zero when it completes. We also don't change > the alias set of a reference into a reference via a restricted type into > the alias set of the component since it is known not to be aliased. > > Second, it fixes some minor problems in find_placeholder and calls it > from get_inner_reference. > > Third, it now computes and displays in the RTL (but nothing uses so far) > more attributes about a memory reference. > > Tested on alphaev56. > > Wed Oct 17 05:26:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> > > * Makefile.in (print-rtl.o): Depend on TREE_H. > * alias.c (get_alias_set): Make two passes over objects to first > see if inner object is access via restricted pointer. > Defer allocating alias set for restricted pointer until here. > Call find_placeholder with second arg nonzero. > Minor cleanups. > * c-common.c (c_apply_type_quals_to_decl): Defer getting alias > set for restricted pointer types. > * emit-rtl.c (set_mem_attributes): Set more attributes. > (set_mem_align, change_address, adjust_address_1): New functions. > (change_address_1): Now static. > (adjust_address, adjust_address_nv): Deleted. > (replace_equiv_address): Call change_address_1. > * expr.c (get_inner_reference): Handle PLACEHOLDER_EXPR. > (find_placeholder): Get starting point from PLIST arg. > (expand_expr, case PLACEHOLDER_EXPR): Initialize find_placeholder arg. > * expr.h (set_mem_align, change_address, adjust_address_1): New decls. > (adjust_address, adjust_address_nv): New macros. > * print-rtl.c (tree.h): New include. > (print_rtx, case MEM): Print all memory attributes. This patch triggers a reload problem on powerpc-linux-gnu with the attached testcase (reduced from XF4/Mesa) compiled with -O2: Starting program: /usr/lib/gcc-lib/ppc-linux/3.1/cc1 -fpreprocessed test3.i -quiet -dumpbase test3.c -O2 -W -Wall -version -fsigned-char -o test3.s GNU CPP version 3.1 20020120 (experimental) (cpplib) (PowerPC GNU/Linux) GNU C version 3.1 20020120 (experimental) (ppc-linux) compiled by GNU C version 3.1 20020120 (experimental). test3.c: In function `spec_tex_aa_tri': test3.c:553: unrecognizable insn: (insn 3418 3417 110 (set (mem:CC (plus:SI (plus:SI (reg/f:SI 1 r1) (const_int 65536 [0x10000])) (const_int 24824 [0x60f8])) [63 S4 A32]) (reg:CC 8 r8)) -1 (nil) (nil)) Breakpoint 1, fancy_abort (file=0x1033f230 "/cvsx/rawhide/BUILD/gcc-3.1/gcc/recog.c", line=2129, function=0x1033f554 "extract_insn") at /cvsx/rawhide/BUILD/gcc-3.1/gcc/diagnostic.c:1450 1450 internal_error ("Internal compiler error in %s, at %s:%d", The problem seems to be that the (plus:SI (reg/f:SI 1 r1) (const_int 65536 [0x10000])) never gets replaced with the already prepared (reg:SI 6 r6): (insn 3416 109 3417 (set (reg:SI 6 r6) (plus:SI (reg/f:SI 1 r1) (const_int 65536 [0x10000]))) 36 {*addsi3_internal1} (nil) (nil)) (insn 3417 3416 3418 (set (reg:CC 8 r8) (reg:CC 68 cr0)) 299 {*rs6000.md:7787} (nil) (nil)) (insn 3418 3417 110 (set (mem:CC (plus:SI (plus:SI (reg/f:SI 1 r1) (const_int 65536 [0x10000])) (const_int 24824 [0x60f8])) [63 S4 A32]) (reg:CC 8 r8)) -1 (nil) (nil)) (insn 110 3418 3419 (set (reg:CCEQ 68 cr0) (compare:CCEQ (ior:SI (lt:SI (reg:CCFP 68 cr0) (const_int 0 [0x0])) (eq:SI (reg:CCFP 68 cr0) (const_int 0 [0x0]))) (const_int 1 [0x1]))) 489 {*rs6000.md:12946} (insn_list 109 (nil)) (expr_list:REG_DEAD (reg:CCFP 68 cr0 [164]) (nil))) Any ideas? Franz.
Attachment:
test3.i
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |