jjc@UUNET.UU.NET (James Clark) (06/13/89)
gas 1.34/sparc doesn't like some g++ output. It rejects lines 162 and 164 of the following with an ``Illegal operands'' diagnostic. The relevant lines are: ld [%lo(LC1)+%g1],%o1 and ld [%lo(LC1+4)+%g1],%o2 The complete input file was: gcc_compiled.: .text .align 4 .proc 1 _peek_PSchar_list_iterator: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 mov %i0,%o1 ld [%o1],%o0 tst %o0 bne L43 nop b L42 mov -1,%i0 L43: ldsh [%o1+4],%o3 ld [%o1],%o2 ld [%o2+4],%o0 cmp %o3,%o0 bge L45 nop add %o2,%o3,%o0 b L42 ldub [%o0+8],%i0 L45: ld [%o1],%o0 ld [%o0],%o4 st %o4,[%o1] sth %g0,[%o1+4] call _peek_PSchar_list_iterator,0 mov %o1,%o0 mov %o0,%i0 L42: ret restore .align 4 .proc 1 _next_PSchar_list_iterator: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 mov %i0,%o2 ld [%o2],%o0 tst %o0 bne L53 nop b L52 mov -1,%i0 L53: ldsh [%o2+4],%o0 ld [%o2],%o3 ld [%o3+4],%o1 cmp %o0,%o1 bge L55 nop add %o2,4,%o0 ldsh [%o0],%o1 ldsh [%o0],%o2 add %o2,1,%o2 sth %o2,[%o0] sll %o1,0x10,%o1 sra %o1,0x10,%o1 add %o3,%o1,%o1 b L52 ldub [%o1+8],%i0 L55: ld [%o2],%o0 ld [%o0],%o4 st %o4,[%o2] sth %g0,[%o2+4] call _next_PSchar_list_iterator,0 mov %o2,%o0 mov %o0,%i0 L52: ret restore .align 4 .proc 1 _is_dummy_PSnode: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 mov 0,%i0 ret restore .align 4 .proc 1 _copy_PSline_start_node: !#PROLOGUE# 0 save %sp,-120,%sp !#PROLOGUE# 1 mov %i0,%l0 call _line_start_node_PSline_start_node,0 mov 0,%o0 ld [%o0+4],%o4 st %o4,[%fp-20] mov %o0,%o2 ld [%l0+4],%g1 st %g1,[%o2+4] ld [%l0+0],%g1 st %g1,[%o2+0] ld [%fp-20],%o4 st %o4,[%o0+4] mov %o0,%i0 ret restore LC0: .ascii "<line start>\0" .align 4 .proc 1 _print_PSline_start_node: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 sethi %hi(__iob),%o0 or %lo(__iob),%o0,%o0 add %o0,40,%o0 sethi %hi(LC0),%o1 call _fprintf,0 or %o1,%lo(LC0),%o1 ret restore .align 4 .proc 1 _line_start_node_PSline_start_node: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 orcc %i0,%g0,%o0 ! 2-insn combine bne L80 nop call ___builtin_new,0 mov 8,%o0 L80: call _node_PSnode_PSnode,0 mov 0,%o1 sethi %hi(__vt$line_start_node),%o2 or %lo(__vt$line_start_node),%o2,%o2 st %o2,[%o0+4] mov %o0,%i0 ret restore .align 8 LC1: .double 0r0.00000000000000000000e+00 .align 4 .global _do_break_PSenvironment .proc 1 _do_break_PSenvironment: !#PROLOGUE# 0 save %sp,-112,%sp !#PROLOGUE# 1 mov %i0,%l0 ld [%l0+248],%o3 tst %o3 be L111 nop mov 0,%o0 sethi %hi(LC1),%g1 sethi %hi(LC1),%g1 ld [%lo(LC1)+%g1],%o1 sethi %hi(LC1+4),%g1 ld [%lo(LC1+4)+%g1],%o2 call _space_node_PSspace_node_DF_PSnode,0 nop st %o0,[%l0+248] mov %l0,%o0 call _possibly_break_line_PSenvironment_SI,0 mov 0,%o1 L111: ld [%l0+248],%o0 tst %o0 be L112 nop ldd [%l0+264],%f2 ldd [%l0+272],%f4 faddd %f2,%f4,%f2 ldd [%l0+280],%f4 fsubd %f4,%f2,%f4 std %f4,[%l0+280] ldd [%l0+264],%f2 ldd [%l0+272],%f4 mov %l0,%o0 ld [%l0+248],%o1 faddd %f2,%f4,%f6 std %f6,[%fp-8] ldd [%fp-8],%o2 call _output_line_PSenvironment_PSnode_DF,0 nop st %g0,[%l0+248] L112: st %g0,[%l0+332] ret restore .global _dfont$next_dfontno .common _dfont$next_dfontno,8,"bss" .global _font_size$next_size .common _font_size$next_size,8,"bss" .global _font_size$table .common _font_size$table,8192,"bss" .global _symbol$block_size .common _symbol$block_size,8,"bss" .global _symbol$block .common _symbol$block,8,"bss" .global _symbol$table_size .common _symbol$table_size,8,"bss" .global _symbol$table_used .common _symbol$table_used,8,"bss" .global _symbol$table .common _symbol$table,8,"bss" .data .align 8 __vt$space_node: .half 0 .half 0 .word 0 .half 0 .half 0 .word __$_node .half 0 .half 0 .word _copy_PSspace_node .half 0 .half 0 .word _width_PSspace_node .half 0 .half 0 .word _space_width_PSspace_node .half 0 .half 0 .word _vertical_width_PSnode .half 0 .half 0 .word _prev_char_width_PSnode .half 0 .half 0 .word _character_type_PSnode .half 0 .half 0 .word _set_vertical_size_PSnode_PSvertical_size .half 0 .half 0 .word _print_PSspace_node .half 0 .half 0 .word _is_dummy_PSnode .half 0 .half 0 .word _ends_sentence_PSnode .half 0 .half 0 .word _merge_glyph_node_PSnode_PSglyph_node .half 0 .half 0 .word _add_discretionary_hyphen_PSnode .half 0 .half 0 .word _add_self_PSnode_PSnode_PPShyphen_list .half 0 .half 0 .word _get_hyphen_list_PSnode_PShyphen_list .half 0 .half 0 .word _typeset_PSspace_node_PStypeset_output_file .half 0 .half 0 .word _zero_width_typeset_PSnode_PStypeset_output_file .half 0 .half 0 .word _ascii_print_PSspace_node_PSascii_output_file .half 0 .half 0 .word _discardable_PSspace_node .half 0 .half 0 .word _set_space_factor_PSspace_node_DF .half 0 .half 0 .word _get_breakpoints_PSspace_node_DF_DF_PSbreakpoint_SI .half 0 .half 0 .word _nbreaks_PSspace_node .half 0 .half 0 .word _split_PSspace_node_SI_PPSnode_PPSnode .half 0 .half 0 .word _get_hyphenation_type_PSnode .half 0 .half 0 .word _get_diverted_space_node_PSnode .half 0 .half 0 .word _overlaps_vertically_PSnode .half 0 .half 0 .word _overlaps_horizontally_PSnode .half 0 .half 0 .word _size_PSnode .half 0 .half 0 .word _transparent_char_PSnode .align 8 __vt$line_start_node: .half 0 .half 0 .word 0 .half 0 .half 0 .word __$_node .half 0 .half 0 .word _copy_PSline_start_node .half 0 .half 0 .word _width_PSnode .half 0 .half 0 .word _space_width_PSnode .half 0 .half 0 .word _vertical_width_PSnode .half 0 .half 0 .word _prev_char_width_PSnode .half 0 .half 0 .word _character_type_PSnode .half 0 .half 0 .word _set_vertical_size_PSnode_PSvertical_size .half 0 .half 0 .word _print_PSline_start_node .half 0 .half 0 .word _is_dummy_PSnode .half 0 .half 0 .word _ends_sentence_PSnode .half 0 .half 0 .word _merge_glyph_node_PSnode_PSglyph_node .half 0 .half 0 .word _add_discretionary_hyphen_PSnode .half 0 .half 0 .word _add_self_PSnode_PSnode_PPShyphen_list .half 0 .half 0 .word _get_hyphen_list_PSnode_PShyphen_list .half 0 .half 0 .word _typeset_PSnode_PStypeset_output_file .half 0 .half 0 .word _zero_width_typeset_PSnode_PStypeset_output_file .half 0 .half 0 .word _ascii_print_PSnode_PSascii_output_file .half 0 .half 0 .word _discardable_PSnode .half 0 .half 0 .word _set_space_factor_PSnode_DF .half 0 .half 0 .word _get_breakpoints_PSnode_DF_DF_PSbreakpoint_SI .half 0 .half 0 .word _nbreaks_PSnode .half 0 .half 0 .word _split_PSnode_SI_PPSnode_PPSnode .half 0 .half 0 .word _get_hyphenation_type_PSnode .half 0 .half 0 .word _get_diverted_space_node_PSnode .half 0 .half 0 .word _overlaps_vertically_PSnode .half 0 .half 0 .word _overlaps_horizontally_PSnode .half 0 .half 0 .word _size_PSnode .half 0 .half 0 .word _transparent_char_PSnode .global _sys_nerr .common _sys_nerr,8,"bss" .global _errno .common _errno,8,"bss" James Clark jjc@jclark.uucp