james@raid.dell.com (James Van Artsdalen) (11/15/89)
config.gcc i386v. If the following file is compiled by gcc without optimization, gcc aborts. If any short in struct a, or any local int in k(), is deleted, gcc gets a segmentation fault. If f() or k() are removed, gcc does not abort or get a fault. ----- struct a { short b; short c; short d; short e; }; f() { struct { struct a g, h, i; } j; } int k() { int l; int m; int n; struct a *o; struct { struct a p, q, r; } s; } ----- raid:/usr/local/src/gcc-1.36/i386> gdb cc1 GDB 3.3, Copyright (C) 1989 Free Software Foundation, Inc. There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details. GDB is free software and you are welcome to distribute copies of it under certain conditions; type "info copying" to see the conditions. Reading symbol data from /usr/local/src/gcc-1.36/i386/cc1...done. Breakpoint 1 at 0x73160 Type "help" for a list of commands. (gdb) run -version q.i Starting program: /usr/local/src/gcc-1.36/i386/cc1 -version q.i GNU C version 1.36 (80386, ATT syntax) compiled by GNU C version 1.36. default target switches: -m80387 f k Bpt 1, 0x73160 in abort () (gdb) bt #0 0x73160 in abort () #1 0x1ec5d in convert_move (to=(rtx) 0x40c5e0, from=(rtx) 0xce, unsignedp=0) (expr.c line 601) #2 0x2023c in store_expr (exp=(union tree_node *) 0x40c3ac, target=(rtx) 0x40c5e0, suggest_reg=0, 28) (expr.c line 1851) #3 0x20d40 in expand_expr (exp=(union tree_node *) 0x40c5c4, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 2268) #4 0x19066 in variable_size () #5 0x19e13 in layout_type () #6 0xc071 in finish_struct () #7 0x46dd in yyparse () #8 0x139ba in compile_file (2147482978) #9 0x1503d in main (Error reading memory address 0x253bd82a: I/O error (5). (gdb) fr 1 #1 0x1ec5d in convert_move (to=(rtx) 0x40c5e0, from=(rtx) 0xce, unsignedp=0) (expr.c line 601) 601 abort (); (gdb) list 596 #endif 597 abort (); 598 } 599 600 /* Mode combination is not recognized. */ 601 abort (); 602 } 603 604 /* Return an rtx for a value that would result 605 from converting X to mode MODE. (gdb) p to $1 = (rtx) 0x40c5e0 (gdb) pr (reg:L 10) (gdb) p from $2 = (rtx) 0xce (gdb) info locals to = (rtx) 0x40c5e0 from = (rtx) 0xce (gdb) fr 2 #2 0x2023c in store_expr (exp=(union tree_node *) 0x40c3ac, target=(rtx) 0x40c5e0, suggest_reg=0, 28) (expr.c line 1851) 1851 convert_move (target, temp, unsignedp); (gdb) info locals unsignedp = 0 temp = (rtx) 0xce dont_return_target = 0 exp = (union tree_node *) 0x40c3ac target = (rtx) 0x40c5e0 (gdb) p target $3 = (rtx) 0x40c5e0 (gdb) pr (reg:L 10) (gdb) fr 3 #3 0x20d40 in expand_expr (exp=(union tree_node *) 0x40c5c4, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 2268) 2268 store_expr (TREE_OPERAND (exp, 0), reg, 0); (gdb) info locals reg = (rtx) 0x40c5e0 op0 = (rtx) 0x40c578 op1 = (rtx) 0x0 temp = (rtx) 0x0 type = (union tree_node *) 0xfffffff4 mode = MAX_MACHINE_MODE code = SAVE_EXPR this_optab = (optab) 0x72 negate_1 = 91391 subtarget = (rtx) 0x0 original_target = (rtx) 0x0 ignore = 0 exp = (union tree_node *) 0x40c5c4 (gdb) p reg $4 = (rtx) 0x40c5e0 (gdb) pr (reg:L 10) (gdb) p op0 $5 = (rtx) 0x40c578 (gdb) pr (L (nil) NOTE_INSN_FUNCTION_BEGswitch format wrong in rtl.print_rtx(). format was: t. Bpt 1, 0x73160 in abort (4220604, 117638, 116) Cannot continue previously requested operation. Unable to restore previously selected frame. (gdb) -- James R. Van Artsdalen james@raid.dell.com "Live Free or Die" DCC Corporation 9505 Arboretum Blvd Austin TX 78759 512-338-8789