aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <dje@gcc.gnu.org>1999-09-28 14:13:58 -0400
committerDavid Edelsohn <dje@gcc.gnu.org>1999-09-28 14:13:58 -0400
commitc81fc13e34621ae4506ffaae7d3b657aaeb17803 (patch)
treea5283426fa9e3f304466e2eada188afb3ae944c6
parent628d441075cef98809f0e2f661fb13810b7c85dc (diff)
downloadgcc-c81fc13e34621ae4506ffaae7d3b657aaeb17803.zip
gcc-c81fc13e34621ae4506ffaae7d3b657aaeb17803.tar.gz
gcc-c81fc13e34621ae4506ffaae7d3b657aaeb17803.tar.bz2
xcoffout.c (xcoffout_declare_function): Add documentation.
* xcoffout.c (xcoffout_declare_function): Add documentation. * rs6000.c (num_insns_constant_wide): Use TARGET_POWERPC64 not TARGET_64BIT. Compare constant to -1, not bit pattern. (easy_fp_constant): Use TARGET_POWERPC64 not TARGET_64BIT. (expand_block_move): Allow 8 DImode loads for PowerPC64. Fix gen_movsi typos. From-SVN: r29697
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/rs6000/rs6000.c63
-rw-r--r--gcc/xcoffout.c3
3 files changed, 47 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2fe62ff..34e4632 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+Tue Sep 28 16:45:40 1999 David Edelsohn <edelsohn@gnu.org>
+
+ * xcoffout.c (xcoffout_declare_function): Add documentation.
+ * rs6000.c (num_insns_constant_wide): Use TARGET_POWERPC64 not
+ TARGET_64BIT. Compare constant to -1, not bit pattern.
+ (easy_fp_constant): Use TARGET_POWERPC64 not TARGET_64BIT.
+ (expand_block_move): Allow 8 DImode loads for PowerPC64. Fix
+ gen_movsi typos.
+
Tue Sep 28 16:43:14 1999 Nick Clifton <nickc@cygnus.com>
* dwarf2out.c (add_abstract_origin_attribute): Abort if
@@ -167,7 +176,7 @@ Fri Sep 24 11:57:06 1999 Geoffrey Keating <geoffk@cygnus.com>
Thu Sep 23 18:18:55 1999 Mark Mitchell <mark@codesourcery.com>
- * stmt.c (expand_start_bindings): Don't allow cleanup isntructions
+ * stmt.c (expand_start_bindings): Don't allow cleanup instructions
to disappear.
Thu Sep 23 18:07:01 1999 Mark Mitchell <mark@codesourcery.com>
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index a432461..df18201 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -455,9 +455,9 @@ direct_return ()
if (info->first_gp_reg_save == 32
&& info->first_fp_reg_save == 64
- && !info->lr_save_p
- && !info->cr_save_p
- && !info->push_p)
+ && ! info->lr_save_p
+ && ! info->cr_save_p
+ && ! info->push_p)
return 1;
}
@@ -676,7 +676,7 @@ num_insns_constant_wide (value)
return 1;
#if HOST_BITS_PER_WIDE_INT == 64
- else if (TARGET_64BIT)
+ else if (TARGET_POWERPC64)
{
HOST_WIDE_INT low = value & 0xffffffff;
HOST_WIDE_INT high = value >> 32;
@@ -684,10 +684,10 @@ num_insns_constant_wide (value)
if (high == 0 && (low & 0x80000000) == 0)
return 2;
- else if (high == 0xffffffff && (low & 0x80000000) != 0)
+ else if (high == -1 && (low & 0x80000000) != 0)
return 2;
- else if (!low)
+ else if (! low)
return num_insns_constant_wide (high) + 1;
else
@@ -748,8 +748,7 @@ num_insns_constant (op, mode)
if (high == 0 && (low & 0x80000000) == 0)
return num_insns_constant_wide (low);
- else if (((high & 0xffffffff) == 0xffffffff)
- && ((low & 0x80000000) != 0))
+ else if (high == -1 && (low & 0x80000000) != 0)
return num_insns_constant_wide (low);
else if (mask64_operand (op, mode))
@@ -820,7 +819,7 @@ easy_fp_constant (op, mode)
}
else if (mode == DImode)
- return ((TARGET_64BIT
+ return ((TARGET_POWERPC64
&& GET_CODE (op) == CONST_DOUBLE && CONST_DOUBLE_LOW (op) == 0)
|| (num_insns_constant (op, DImode) <= 2));
@@ -1132,7 +1131,7 @@ current_file_function_operand (op, mode)
return (GET_CODE (op) == SYMBOL_REF
&& (SYMBOL_REF_FLAG (op)
|| (op == XEXP (DECL_RTL (current_function_decl), 0)
- && !DECL_WEAK (current_function_decl))));
+ && ! DECL_WEAK (current_function_decl))));
}
@@ -1549,7 +1548,7 @@ function_arg (cum, mode, type, named)
&& function_arg_boundary (mode, type) == 64) ? 1 : 0;
int align_words = cum->words + align;
- if (!named)
+ if (! named)
return NULL_RTX;
if (type && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
@@ -1724,7 +1723,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
}
set = get_varargs_alias_set ();
- if (!no_rtl && first_reg_offset < GP_ARG_NUM_REG)
+ if (! no_rtl && first_reg_offset < GP_ARG_NUM_REG)
{
mem = gen_rtx_MEM (BLKmode,
plus_constant (save_area,
@@ -1742,7 +1741,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
/* Save FP registers if needed. */
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
- && TARGET_HARD_FLOAT && !no_rtl
+ && TARGET_HARD_FLOAT && ! no_rtl
&& next_cum.fregno <= FP_ARG_V4_MAX_REG)
{
int fregno = next_cum.fregno;
@@ -2087,13 +2086,19 @@ expand_block_move (operands)
then don't generate more than 8 loads. */
if (TARGET_STRING)
{
- if (bytes > 4*8)
+ if (bytes > 8*4)
return 0;
}
else if (! STRICT_ALIGNMENT)
{
- if (bytes > 4*8)
- return 0;
+ if (TARGET_POWERPC64 && align >= 4)
+ {
+ if (bytes > 8*8)
+ return 0;
+ }
+ else
+ if (bytes > 8*4)
+ return 0;
}
else if (bytes > 8*align)
return 0;
@@ -2290,7 +2295,7 @@ expand_block_move (operands)
{
move_bytes = 2;
tmp_reg = gen_reg_rtx (HImode);
- emit_insn (gen_movsi (tmp_reg,
+ emit_insn (gen_movhi (tmp_reg,
expand_block_move_mem (HImode,
src_addr,
orig_src)));
@@ -2303,7 +2308,7 @@ expand_block_move (operands)
{
move_bytes = 1;
tmp_reg = gen_reg_rtx (QImode);
- emit_insn (gen_movsi (tmp_reg,
+ emit_insn (gen_movqi (tmp_reg,
expand_block_move_mem (QImode,
src_addr,
orig_src)));
@@ -3919,16 +3924,16 @@ rs6000_stack_info ()
if (info_ptr->gp_size == 0)
info_ptr->gp_save_offset = 0;
- if (!info_ptr->lr_save_p)
+ if (! info_ptr->lr_save_p)
info_ptr->lr_save_offset = 0;
- if (!info_ptr->cr_save_p)
+ if (! info_ptr->cr_save_p)
info_ptr->cr_save_offset = 0;
- if (!info_ptr->toc_save_p)
+ if (! info_ptr->toc_save_p)
info_ptr->toc_save_offset = 0;
- if (!info_ptr->main_save_p)
+ if (! info_ptr->main_save_p)
info_ptr->main_save_offset = 0;
return info_ptr;
@@ -3940,7 +3945,7 @@ debug_stack_info (info)
{
const char *abi_string;
- if (!info)
+ if (! info)
info = rs6000_stack_info ();
fprintf (stderr, "\nStack information for function %s:\n",
@@ -4080,7 +4085,7 @@ rs6000_output_load_toc_table (file, reg)
fprintf (file, "\n");
/* possibly create the toc section */
- if (!toc_initialized)
+ if (! toc_initialized)
{
toc_section ();
function_section (current_function_decl);
@@ -4339,13 +4344,13 @@ output_prolog (file, size)
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1 && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
{
- if (!info->lr_save_p)
+ if (! info->lr_save_p)
asm_fprintf (file, "\tmflr %s\n", reg_names[0]);
fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file);
asm_fprintf (file, "\tmflr %s\n", reg_names[PIC_OFFSET_TABLE_REGNUM]);
- if (!info->lr_save_p)
+ if (! info->lr_save_p)
asm_fprintf (file, "\tmtlr %s\n", reg_names[0]);
}
@@ -4459,7 +4464,7 @@ output_prolog (file, size)
if (TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0)
{
#ifdef USING_SVR4_H
- if (!profile_flag)
+ if (! profile_flag)
rs6000_pic_func_labelno = rs6000_pic_labelno;
#endif
rs6000_output_load_toc_table (file, 30);
@@ -5195,7 +5200,7 @@ output_toc (file, x, labelno)
a TOC reference to an unknown section. Thus, for vtables only,
we emit the TOC reference to reference the symbol and not the
section. */
- if (!strncmp ("_vt.", name, 4))
+ if (! strncmp ("_vt.", name, 4))
{
RS6000_OUTPUT_BASENAME (file, name);
if (offset < 0)
@@ -5983,7 +5988,7 @@ rs6000_encode_section_info (decl)
{
rtx sym_ref = XEXP (DECL_RTL (decl), 0);
if ((TREE_ASM_WRITTEN (decl) || ! TREE_PUBLIC (decl))
- && !DECL_WEAK (decl))
+ && ! DECL_WEAK (decl))
SYMBOL_REF_FLAG (sym_ref) = 1;
if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT)
diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
index 4da5079..6ee08ec 100644
--- a/gcc/xcoffout.c
+++ b/gcc/xcoffout.c
@@ -485,6 +485,9 @@ xcoffout_declare_function (file, decl, name)
file and/or at the wrong line number. */
xcoffout_source_file (file, DECL_SOURCE_FILE (decl), 0);
dbxout_symbol (decl, 0);
+
+ /* .function NAME, TOP, MAPPING, TYPE, SIZE
+ 16 and 044 are placeholders for backwards compatibility */
fprintf (file, "\t.function .%s,.%s,16,044,FE..%s-.%s\n", n, n, n, n);
}