> > I still get implicitly declared errors for a couple of functions declared
> > in ia64-protos.h.  I think the patch needs to be expanded to include
> > tm_p.h in addition to tm.h.  I am testing that now.
> 
> Shall I help? I have a fast sunfire here where I can cross check.
> 
> I wait until you come up, then we can put it in together, ok?
> 
> Andreas

I took Zack's advice and put all the includes from insn-attrtab.c into
insn-automata.c.  My current problem is that I get:

| insn-automata.c: In function 'print_reservation':
| insn-automata.c:22466: warning: string length '669' is greater than the 
length '
| 509' ISO C89 compilers are required to support
| make[3]: *** [insn-automata.o] Error 1
| make[3]: Target `all' not remade because of errors.

Here is the patch I used:

Index: gcc/varasm.c
===================================================================
--- gcc/varasm.c        (revision 110102)
+++ gcc/varasm.c        (working copy)
@@ -1860,12 +1860,9 @@ assemble_name_raw (FILE *file, const cha
 void
 assemble_name (FILE *file, const char *name)
 {
-  const char *real_name;
   tree id;
 
-  real_name = targetm.strip_name_encoding (name);
-
-  id = maybe_get_identifier (real_name);
+  id = maybe_get_identifier (name);
   if (id)
     {
       tree id_orig = id;
Index: gcc/testsuite/gcc.target/ia64/asm-decl.c
===================================================================
--- gcc/testsuite/gcc.target/ia64/asm-decl.c    (revision 0)
+++ gcc/testsuite/gcc.target/ia64/asm-decl.c    (revision 0)
@@ -0,0 +1,13 @@
+/* Make sure a function with __asm__ name gets declared properly. */
+/* { dg-do compile { target ia64*-*-hpux* } } */
+/* { dg-final { scan-assembler "\\.global.*foobar" } } */
+/* { dg-final { scan-assembler "\\.type.*foobar.*function" } } */
+
+extern double bar (void);
+extern double bar (void) __asm__ ("foobar");
+
+double
+foo (void)
+{
+  return bar ();
+}

Reply via email to