On Fri, Jun 04, 2010 at 01:44:02PM +0000, Art Haas wrote: > This morning's i386 build fails with the following error: > > libbackend.a(sol2.o): In function `solaris_output_init_fini': > /home/ahaas/gnu/gcc.git/gcc/config/sol2.c:109: undefined reference to > `print_operand' > /home/ahaas/gnu/gcc.git/gcc/config/sol2.c:116: undefined reference to > `print_operand' > collect2: ld returned 1 exit status > make[3]: *** [cc1-dummy] Error 1 > > The sparc build fails like so: > > libbackend.a(targhooks.o): In function `default_print_operand_address': > /export/home/arth/src/gcc.git/gcc/targhooks.c:349: undefined reference to > `output_operand' > /export/home/arth/src/gcc.git/gcc/targhooks.c:349: undefined reference to > `output_operand' > collect2: ld returned 1 exit status > gmake[3]: *** [cc1-dummy] Error 1
Whoops, sorry about that. This patch fixes at least the sparc error (successfully built a cross to sparc-solaris) and I'm in the process of building a cross to i686-solaris. OK to commit if compilation succeeds? -Nathan * config/i386/i386-protos.h (ix86_print_operand): Declare. * config/i386/i386.c (ix86_print_operand): Make non-static. * config/i386/sol2.h (ASM_OUTPUT_CALL): Call ix86_print_operand. * rtl.h (output_operand): Declare. * final.c (output_operand): Make non-static. Index: final.c =================================================================== --- final.c (revision 160266) +++ final.c (working copy) @@ -220,7 +220,6 @@ static void output_asm_name (void); static void output_alternate_entry_point (FILE *, rtx); static tree get_mem_expr_from_op (rtx, int *); static void output_asm_operand_names (rtx *, int *, int); -static void output_operand (rtx, int); #ifdef LEAF_REGISTERS static void leaf_renumber_regs (rtx); #endif @@ -3478,7 +3477,7 @@ mark_symbol_refs_as_used (rtx x) The meanings of the letters are machine-dependent and controlled by TARGET_PRINT_OPERAND. */ -static void +void output_operand (rtx x, int code ATTRIBUTE_UNUSED) { if (x && GET_CODE (x) == SUBREG) Index: ChangeLog =================================================================== Index: rtl.h =================================================================== --- rtl.h (revision 160266) +++ rtl.h (working copy) @@ -2417,6 +2417,7 @@ extern void simplify_using_condition (rt /* In final.c */ extern unsigned int compute_alignments (void); extern int asm_str_count (const char *templ); +extern void output_operand (rtx, int); struct rtl_hooks { Index: config/i386/sol2.h =================================================================== --- config/i386/sol2.h (revision 160266) +++ config/i386/sol2.h (working copy) @@ -145,7 +145,7 @@ along with GCC; see the file COPYING3. do \ { \ fprintf (FILE, "\tcall\t"); \ - print_operand (FILE, XEXP (DECL_RTL (FN), 0), 'P'); \ + ix86_print_operand (FILE, XEXP (DECL_RTL (FN), 0), 'P'); \ fprintf (FILE, "\n"); \ } \ while (0) Index: config/i386/i386-protos.h =================================================================== --- config/i386/i386-protos.h (revision 160266) +++ config/i386/i386-protos.h (working copy) @@ -60,6 +60,7 @@ extern bool legitimate_pic_operand_p (rt extern int legitimate_pic_address_disp_p (rtx); extern void print_reg (rtx, int, FILE*); +extern void ix86_print_operand (FILE *, rtx, int); extern bool output_addr_const_extra (FILE*, rtx); extern void split_di (rtx[], int, rtx[], rtx[]); Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 160266) +++ config/i386/i386.c (working copy) @@ -11579,7 +11579,7 @@ get_some_local_dynamic_name (void) ; -- print a semicolon (after prefixes due to bug in older gas). */ -static void +void ix86_print_operand (FILE *file, rtx x, int code) { if (code)