* dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned.
* frame.h (__ia64_personality_v1): Add prototype.
* libgcc2.c (ia64_throw_helper): Change personality declaration to
prototype form. Add void * cast to first argument to personality
call.
...
From-SVN: r39227
+2001-01-23 Jim Wilson <wilson@redhat.com>
+
+ * dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned.
+ * frame.h (__ia64_personality_v1): Add prototype.
+ * libgcc2.c (ia64_throw_helper): Change personality declaration to
+ prototype form. Add void * cast to first argument to personality
+ call.
+ * real.c (e113toe): Surround with INTEL_EXTENDED_IEEE_FORMAT ifdefs.
+ (asctoe113): Likewise.
+ * config/ia64/frame-ia64.c: Include eh-common.h.
+ * config/ia64/ia64-protos.h (sdata_section, sbbs_section): Add
+ prototypes.
+ * config/ia64/ia64.c (emit_insn_group_barriers): Add ATTRIBUTE_UNUSED
+ to dump parameter.
+ (itanium_split_issue): Add prototype.
+ (gen_nop_type): Ifdef out.
+ (find_best_packet): Initialize best_packet.
+ (ia64_encode_section_info): New local string. Use for ggc_alloc_string
+ result.
+ * config/ia64/ia64.h (ASM_OUTPUT_LONG_DOUBLE): Use 0L not 0.
+ * config/ia64/ia64.md (bsp_value): Add explicit stop bit at start.
+ (flushrs): Add explicit stop bit at end.
+ * config/ia64/lib1funcs.asm (__ia64_restore_stack_nonlocal): Change
+ trailing \ to >.
+
2001-01-23 Chris Demetriou <cgd@broadcom.com>
* libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list
#include "defaults.h"
#include "frame-ia64.h"
+#include "eh-common.h"
/* Some types used by the DWARF 2 spec. */
extern void ia64_init_builtins PARAMS((void));
extern void ia64_override_options PARAMS((void));
extern int ia64_dbx_register_number PARAMS((int));
+
+#ifdef SDATA_SECTION_ASM_OP
+extern void sdata_section PARAMS ((void));
+#endif
+
+#ifdef SBSS_SECTION_ASM_OP
+extern void sbss_section PARAMS ((void));
+#endif
static void
emit_all_insn_group_barriers (dump, insns)
- FILE *dump;
+ FILE *dump ATTRIBUTE_UNUSED;
rtx insns;
{
rtx insn;
/* Nonzero if we should insert stop bits into the schedule. */
int ia64_final_schedule = 0;
+static int itanium_split_issue PARAMS ((const struct ia64_packet *, int));
static rtx ia64_single_set PARAMS ((rtx));
static int insn_matches_slot PARAMS ((const struct ia64_packet *, enum attr_type, int, rtx));
static void ia64_emit_insn_before PARAMS ((rtx, rtx));
+#if 0
static rtx gen_nop_type PARAMS ((enum attr_type));
+#endif
static void finish_last_head PARAMS ((FILE *, int));
static void rotate_one_bundle PARAMS ((FILE *));
static void rotate_two_bundles PARAMS ((FILE *));
emit_insn_before (insn, before);
}
+#if 0
/* Generate a nop insn of the given type. Note we never generate L type
nops. */
abort ();
}
}
+#endif
/* When rotating a bundle out of the issue window, insert a bundle selector
insn in front of it. DUMP is the scheduling dump file or NULL. START
int first = sched_data.first_slot;
int best = 0;
int lowest_end = 6;
- const struct ia64_packet *best_packet;
+ const struct ia64_packet *best_packet = NULL;
int i;
for (i = 0; i < NR_PACKETS; i++)
{
size_t len = strlen (symbol_str);
char *newstr = alloca (len + 1);
+ const char *string;
*newstr = SDATA_NAME_FLAG_CHAR;
memcpy (newstr + 1, symbol_str, len + 1);
- newstr = ggc_alloc_string (newstr, len + 1);
- XSTR (XEXP (DECL_RTL (decl), 0), 0) = newstr;
+ string = ggc_alloc_string (newstr, len + 1);
+ XSTR (XEXP (DECL_RTL (decl), 0), 0) = string;
}
}
/* This decl is marked as being in small data/bss but it shouldn't
long t[3]; \
REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, t); \
fprintf (FILE, "\tdata4 0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx\n", \
- t[0] & 0xffffffff, t[1] & 0xffffffff, t[2] & 0xffffffff, 0); \
+ t[0] & 0xffffffff, t[1] & 0xffffffff, t[2] & 0xffffffff, 0L);\
} while (0)
/* ??? Must reverse the word order for big-endian code? */
;; ??? Add function unit scheduling info for Itanium (TM) processor.
-;; ??? The explicit stop in the flushrs pattern is not ideal. It
-;; would be better if rtx_needs_barrier took care of this, but this is
-;; something that can be fixed later.
-
;; ??? Need a better way to describe alternate fp status registers.
;; Unspec usage:
"ldf.fill %0 = %1%P1"
[(set_attr "itanium_class" "fld")])
+;; ??? The explicit stop is not ideal. It would be better if
+;; rtx_needs_barrier took care of this, but this is something that can be
+;; fixed later. This avoids an RSE DV.
+
(define_insn "bsp_value"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] 20))]
""
- "mov %0 = ar.bsp"
+ ";;\;mov %0 = ar.bsp"
[(set_attr "itanium_class" "frar_i")])
(define_insn "set_bsp"
[(set_attr "itanium_class" "unknown")
(set_attr "predicable" "no")])
+;; ??? The explicit stops are not ideal. It would be better if
+;; rtx_needs_barrier took care of this, but this is something that can be
+;; fixed later. This avoids an RSE DV.
+
(define_insn "flushrs"
[(unspec [(const_int 0)] 21)]
""
- ";;\;flushrs"
+ ";;\;flushrs\;;;"
[(set_attr "itanium_class" "rse_m")])
\f
;; ::::::::::::::::::::
//
// The trampoline has the following form:
//
-// +-------------------+ \
+// +-------------------+ >
// TRAMP: | __ia64_trampoline | |
// +-------------------+ > fake function descriptor
// | TRAMP+16 | |
-// +-------------------+ /
+// +-------------------+ >
// | target descriptor |
// +-------------------+
// | static link |
fprintf (asm_out_file, "\t.file %d \"%s\"\n", file_num, filename);
fprintf (asm_out_file, "\t.loc %d %d 0\n", file_num, line);
#else
- static int last_file_num;
+ static unsigned int last_file_num;
if (file_num != last_file_num)
{
last_file_num = file_num;
#define IA64_UNW_EHANDLER 0x1
#define IA64_UNW_UHANDLER 0x2
+extern void * __ia64_personality_v1 (void *pc, old_exception_table *table);
+
extern unwind_info_ptr *__build_ia64_frame_state (unsigned char *,
ia64_frame_state *,
void *, void *,
memcpy (caller, throw_frame, sizeof (*caller));
while (!handler)
{
- void *(*personality) ();
+ void *(*personality) (void *, old_exception_table *);
void *eh_table;
frame_count++;
if (personality)
/* Pass a segment relative PC address to the personality routine,
because the unwind_info section uses segrel relocs. */
- handler = personality (pc - pc_base, eh_table);
+ handler = personality ((void *)(pc - pc_base), eh_table);
}
if (!handler)
unsigned EMUSHORT *));
static void e53toe PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
static void e64toe PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
+#ifndef INTEL_EXTENDED_IEEE_FORMAT
static void e113toe PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
+#endif
static void e24toe PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
static void etoe113 PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
static void toe113 PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
static void asctoe24 PARAMS ((const char *, unsigned EMUSHORT *));
static void asctoe53 PARAMS ((const char *, unsigned EMUSHORT *));
static void asctoe64 PARAMS ((const char *, unsigned EMUSHORT *));
+#ifndef INTEL_EXTENDED_IEEE_FORMAT
static void asctoe113 PARAMS ((const char *, unsigned EMUSHORT *));
+#endif
static void asctoe PARAMS ((const char *, unsigned EMUSHORT *));
static void asctoeg PARAMS ((const char *, unsigned EMUSHORT *, int));
static void efloor PARAMS ((unsigned EMUSHORT *, unsigned EMUSHORT *));
*q++ = *p++;
}
+#ifndef INTEL_EXTENDED_IEEE_FORMAT
/* Convert 128-bit long double precision float PE to e type Y. */
static void
}
emovo (yy, y);
}
+#endif
/* Convert single precision float PE to e type Y. */
asctoeg (s, y, 64);
}
+#ifndef INTEL_EXTENDED_IEEE_FORMAT
/* Convert ASCII string S to 128-bit long double Y. */
static void
{
asctoeg (s, y, 113);
}
+#endif
/* Convert ASCII string S to e type Y. */