------- Comment #43 from pluto at agmk dot net 2005-11-26 11:57 ------- i've done quick tests on ix86:
$ stage1/xgcc -Bstage1/ -c -gnatpg -gnata -g -I- -I. -Iada -I../../gcc/ada ../../gcc/ada/a-except.adb -o ada/a-except.o -fno-inline -O1 -march=i{486,586,686,pentium,pentiumpro} WORKS. but -march={athlon,pentium2,pentium3,pentium4} FAILS. the i386 variant with -mmx option FAILS either. $ stage1/xgcc -Bstage1/ -c -gnatpg -gnata -g -I- -I. -Iada -I../../gcc/ada ../../gcc/ada/a-except.adb -o ada/a-except.o -fno-inline -O1 -march=athlon raised STORAGE_ERROR : stack overflow (or erroneous memory access) Program received signal SIGSEGV, Segmentation fault. 0x0839c8c5 in insert_insn_on_edge () (gdb) bt #0 0x0839c8c5 in insert_insn_on_edge () #1 0x085c5e6b in fixup_abnormal_edges () #2 0x0859b30f in convert_regs () #3 0x0859b684 in reg_to_stack () #4 0x0859b6bb in rest_of_handle_stack_regs () #5 0x0860dc88 in execute_one_pass () #6 0x0860dd47 in execute_pass_list () #7 0x0860dd67 in execute_pass_list () #8 0x0860dd67 in execute_pass_list () #9 0x08328868 in tree_rest_of_compilation () #10 0x0805e8d5 in gnat_expand_body () #11 0x08656a58 in cgraph_expand_function () #12 0x08656bed in cgraph_expand_all_functions () #13 0x08657109 in cgraph_optimize () #14 0x0805dd9e in gnat_parse_file () #15 0x085e68a4 in compile_file () #16 0x085e7f0d in do_compile () #17 0x085e7f75 in toplev_main () #18 0x0832472c in main () on amd64: Program received signal SIGSEGV, Segmentation fault. 0x00000000007143a8 in insert_insn_on_edge (pattern=0x2a96415410, e=0x0) at ../../gcc/cfgrtl.c:1412 1412 gcc_assert (!((e->flags & EDGE_ABNORMAL) && EDGE_CRITICAL_P (e))); (gdb) bt #0 0x00000000007143a8 in insert_insn_on_edge (pattern=0x2a96415410, e=0x0) at ../../gcc/cfgrtl.c:1412 During symbol reading, Incomplete CFI data; unspecified registers at 0x0000000000714398. (...) #1 0x00000000009acfed in fixup_abnormal_edges () at ../../gcc/reload1.c:8252 During symbol reading, Incomplete CFI data; unspecified registers at 0x00000000009acdb3. (...) #2 0x000000000097ef8d in convert_regs (file=0x0) at ../../gcc/reg-stack.c:3097 #3 0x000000000097f328 in reg_to_stack (file=0x0) at ../../gcc/reg-stack.c:3207 #4 0x000000000097f35f in rest_of_handle_stack_regs () at ../../gcc/reg-stack.c:3230 #5 0x0000000000a001ae in execute_one_pass (pass=0xee2360) at ../../gcc/passes.c:828 #6 0x0000000000a0026d in execute_pass_list (pass=0xee2360) at ../../gcc/passes.c:860 #7 0x0000000000a0028b in execute_pass_list (pass=0xee2b20) at ../../gcc/passes.c:861 #8 0x0000000000a0028b in execute_pass_list (pass=0xee2ac0) at ../../gcc/passes.c:861 #9 0x0000000000691057 in tree_rest_of_compilation (fndecl=0x2a95e1e500) at ../../gcc/tree-optimize.c:419 #10 0x00000000004192de in gnat_expand_body (gnu_decl=0x2a95e1e500) at ../../gcc/ada/misc.c:649 #11 0x0000000000a5774f in cgraph_expand_function (node=0x2a95ea1630) at ../../gcc/cgraphunit.c:1055 #12 0x0000000000a57917 in cgraph_expand_all_functions () at ../../gcc/cgraphunit.c:1121 #13 0x0000000000a57ea3 in cgraph_optimize () at ../../gcc/cgraphunit.c:1278 #14 0x0000000000418612 in gnat_parse_file (set_yydebug=0) at ../../gcc/ada/misc.c:245 #15 0x00000000009d2f2b in compile_file () at ../../gcc/toplev.c:990 #16 0x00000000009d4876 in do_compile () at ../../gcc/toplev.c:1948 #17 0x00000000009d48da in toplev_main (argc=19, argv=0x7fbffff508) at ../../gcc/toplev.c:1980 #18 0x000000000068cbff in main (argc=19, argv=0x7fbffff508) at ../../gcc/main.c:35 i'll check this witout Uros' switch-mmx-mode patchset. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22533