regression in fp constants
Mikey
jeffdbREMOVETHIS@goodnet.com
Wed Jun 23 14:15:00 GMT 1999
This worked correctly in egcs-1.2.1
affects all x86 targets with 80387 and LONG_DOUBLE_TYPE_SIZE == 64?
related to changes in i386.md around 3/28/99?
compiling libgcc2.a
_fixunssfsi
_fixunsdfdi
0 0 [main] D:\USR\SRC\OBJ\GCC\CC1.EXE 1333 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
/tmp\cc6Qaaaa.s: Assembler messages:
/tmp\cc6Qaaaa.s:0: Warning: end of file in string: inserted '"'
/tmp\cc6Qaaaa.s:76: Warning: .stabs: Missing comma
_fixdfdi
_fixunssfdi
0 0 [main] D:\USR\SRC\OBJ\GCC\CC1.EXE 1347 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
/tmp\ccyRaaaa.s: Assembler messages:
/tmp\ccyRaaaa.s:0: Warning: end of file in string: inserted '"'
/tmp\ccyRaaaa.s:76: Warning: .stabs: Missing comma
_fixsfdi
_fixxfdi
adding -mno-80387 to ./specs works around this error
but is, I think, a less than optimal solution.-)
an XFmode node is being generated in expand_float()
with no type to represent it since long_double_type_node == DFmode
Reading symbols from /USR/SRC/OBJ/GCC/CC1.EXE...done.
0x4860ef in force_const_mem (mode=XFmode, x=0x29fff08)
at /usr/src/src/gcc/varasm.c:3462
3462 align = CONSTANT_ALIGNMENT (make_tree (type_for_mode (mode, 0), x)
(gdb) bt
#0 0x4860ef in force_const_mem (mode=XFmode, x=0x29fff08)
at /usr/src/src/gcc/varasm.c:3462
#1 0x44dc3f in emit_move_insn (x=0x29fff20, y=0x29fff08)
at /usr/src/src/gcc/expr.c:2532
#2 0x4743e4 in copy_to_mode_reg (mode=XFmode, x=0x29fff08)
at /usr/src/src/gcc/explow.c:670
#3 0x475a60 in expand_binop (mode=XFmode, binoptab=0x29e0450, op0=0x29ffba0,
op1=0x29fff08, target=0x29ffba0, unsignedp=0, methods=OPTAB_LIB_WIDEN)
at /usr/src/src/gcc/optabs.c:497
#4 0x47c4ee in expand_float (to=0x29ffb68, from=0x29d59d8, unsignedp=1)
at /usr/src/src/gcc/optabs.c:3712
#5 0x45ae9e in expand_expr (exp=0x29d40a0, target=0x29ffb68, tmode=VOIDmode,
modifier=EXPAND_NORMAL) at /usr/src/src/gcc/expr.c:7185
#6 0x45eddb in expand_expr (exp=0x29d40d0, target=0x29d57e8, tmode=DFmode,
modifier=EXPAND_NORMAL) at /usr/src/src/gcc/expr.c:8159
#7 0x4503af in store_expr (exp=0x29d40d0, target=0x29d57e8, want_value=0)
at /usr/src/src/gcc/expr.c:3638
#8 0x44ff4f in expand_assignment (to=0x29d5780, from=0x29d40d0, want_value=0,
suggest_reg=1) at /usr/src/src/gcc/expr.c:3475
#9 0x45de1a in expand_expr (exp=0x29d40f0, target=0x0, tmode=VOIDmode,
modifier=EXPAND_NORMAL) at /usr/src/src/gcc/expr.c:7872
#10 0x43e19c in expand_expr_stmt (exp=0x29d40f0)
at /usr/src/src/gcc/stmt.c:1695
#11 0x627c0f in expand_stmt_with_iterators_1 (stmt=0x29d40f0, iter_list=0x0)
at /usr/src/src/gcc/c-iterate.c:167
#12 0x627bee in iterator_expand (stmt=0x29d40f0)
at /usr/src/src/gcc/c-iterate.c:157
#13 0x5fa207 in yyparse () at c-parse.y:1700
#14 0x40677a in compile_file (name=0x29bfd9a "/tmp\\ccrHaaaa.i")
at /usr/src/src/gcc/toplev.c:3019
#15 0x40b535 in main (argc=12, argv=0x29d1060)
at /usr/src/src/gcc/toplev.c:5354
(gdb) print long_double_type_node->type
$4 = {common = "\000\000\000\000\000\000\000\000\b\000\000\000\004\000\000",
values = 0x0, size = 0x29d2a28, size_unit = 0x29d2a48, attributes = 0x0,
uid = 27, precision = 64 '@', mode = DFmode, string_flag = 0,
no_force_blk_flag = 0, needs_constructing_flag = 0,
transparent_union_flag = 0, packed_flag = 0, restrict_flag = 0,
lang_flag_0 = 0, lang_flag_1 = 0, lang_flag_2 = 0, lang_flag_3 = 0,
lang_flag_4 = 0, lang_flag_5 = 0, lang_flag_6 = 0, align = 64,
pointer_to = 0x0, reference_to = 0x0, symtab = {address = 14,
pointer = 0xe "p"}, name = 0x29d8970, minval = 0x0, maxval = 0x0,
next_variant = 0x0, main_variant = 0x29d88c8, binfo = 0x0,
noncopied_parts = 0x0, context = 0x0, obstack = 0x635250, alias_set = -1,
lang_specific = 0x0}
Sorry that's as far as I know how to get ;-)
More information about the Gcc-bugs
mailing list