arguments. Always use ".-symbol" as expression argument.
* doc/tm.texi: Update to match. Document requirement for
".size symbol, .-symbol" to be acceptable to assembler.
* config/elfos.h, config/netbsd-aout.h, config/openbsd.h,
config/arm/elf.h, config/avr/avr.h, config/cris/aout.h,
config/i386/freebsd-aout.h, config/i386/sco5.h,
config/ip2k/ip2k.h, config/m88k/m88k.h, config/xtensa/elf.h,
config/xtensa/linux.h: Update uses of ASM_OUTPUT_MEASURED_SIZE.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55820
138bc75d-0d04-0410-961f-
82ee72b054a4
15 files changed:
+2002-07-28 Zack Weinberg <zack@codesourcery.com>
+
+ * defaults.h (ASM_OUTPUT_MEASURED_SIZE): Take only two
+ arguments. Always use ".-symbol" as expression argument.
+ * doc/tm.texi: Update to match. Document requirement for
+ ".size symbol, .-symbol" to be acceptable to assembler.
+
+ * config/elfos.h, config/netbsd-aout.h, config/openbsd.h,
+ config/arm/elf.h, config/avr/avr.h, config/cris/aout.h,
+ config/i386/freebsd-aout.h, config/i386/sco5.h,
+ config/ip2k/ip2k.h, config/m88k/m88k.h, config/xtensa/elf.h,
+ config/xtensa/linux.h: Update uses of ASM_OUTPUT_MEASURED_SIZE.
+
2002-07-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Makefile.in (gengtype-lex.c): Fix error in last change.
2002-07-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Makefile.in (gengtype-lex.c): Fix error in last change.
[HONOR_SNANS]: New macro.
* toplev.c [flag_signaling_nans]: Initialize to false.
[HONOR_SNANS]: New macro.
* toplev.c [flag_signaling_nans]: Initialize to false.
- (f_options): Add processing for "-fsignaling-nans".
+ (f_options): Add processing for "-fsignaling-nans".
(set_fast_math_flags): Clear flag_signaling_nans with -ffast-math.
(process_options): flag_signaling_nans implies flag_trapping_math.
(set_fast_math_flags): Clear flag_signaling_nans with -ffast-math.
(process_options): flag_signaling_nans implies flag_trapping_math.
* rtlanal.c: #include real.c for TARGET_FLOAT_FORMAT definitions
required by HONOR_SNANS. (may_trap_p): Floating point DIV, MOD,
* rtlanal.c: #include real.c for TARGET_FLOAT_FORMAT definitions
required by HONOR_SNANS. (may_trap_p): Floating point DIV, MOD,
- UDIV, UMOD, GE, GT, LE, LT and COMPARE may always trap with
- -fsignaling_nans. EQ and NE only trap for flag_signaling_nans
+ UDIV, UMOD, GE, GT, LE, LT and COMPARE may always trap with
+ -fsignaling_nans. EQ and NE only trap for flag_signaling_nans
not flag_trapping_math (i.e. HONOR_SNANS but not HONOR_NANS).
* doc/invoke.texi: Document new -fsignaling-nans compiler option.
not flag_trapping_math (i.e. HONOR_SNANS but not HONOR_NANS).
* doc/invoke.texi: Document new -fsignaling-nans compiler option.
2002-07-25 Gabriel Dos Reis <gdr@nerim.net>
* c-common.c (c_sizeof_or_alignof_type): Take a third argument for
2002-07-25 Gabriel Dos Reis <gdr@nerim.net>
* c-common.c (c_sizeof_or_alignof_type): Take a third argument for
* c-common.h (c_sizeof): Adjust definition.
(c_alignof): Likewise.
* c-tree.h (c_sizeof_nowarn): Now macro.
* c-common.h (c_sizeof): Adjust definition.
(c_alignof): Likewise.
* c-tree.h (c_sizeof_nowarn): Now macro.
* config/rs6000/eabi.h: Define TARGET_SPE_ABI, TARGET_SPE,
TARGET_ISEL, and TARGET_FPRS.
* config/rs6000/eabi.h: Define TARGET_SPE_ABI, TARGET_SPE,
TARGET_ISEL, and TARGET_FPRS.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document
-mabi=spe, -mabi=no-spe, and -misel=.
* doc/invoke.texi (RS/6000 and PowerPC Options): Document
-mabi=spe, -mabi=no-spe, and -misel=.
(*ne0): Same.
(negsf2): Change to expand and rename old pattern to *negsf2.
(abssf2): Change to expand and rename old pattern to *abssf2.
(*ne0): Same.
(negsf2): Change to expand and rename old pattern to *negsf2.
(abssf2): Change to expand and rename old pattern to *abssf2.
New expanders: fix_truncsfsi2, floatunssisf2, floatsisf2,
fixunssfsi2.
New expanders: fix_truncsfsi2, floatunssisf2, floatsisf2,
fixunssfsi2.
(rs6000_builtins): Add SPE builtins.
* testsuite/gcc.dg/ppc-spe.c: New.
(rs6000_builtins): Add SPE builtins.
* testsuite/gcc.dg/ppc-spe.c: New.
* config/rs6000/eabispe.h: New.
* config/rs6000/spe.h: New.
* config/rs6000/eabispe.h: New.
* config/rs6000/spe.h: New.
(LARGEST_EXPONENT_IS_NORMAL): Ditto.
(VAX_HALFWORD_ORDER): Define (1 for DEC VAX, 0 otherwise).
(TARGET_G_FLOAT): Default to 0 if not defined.
(LARGEST_EXPONENT_IS_NORMAL): Ditto.
(VAX_HALFWORD_ORDER): Define (1 for DEC VAX, 0 otherwise).
(TARGET_G_FLOAT): Default to 0 if not defined.
- (ieeetoe): New, common routine to convert target format floats
+ (ieeetoe): New, common routine to convert target format floats
to internal form.
(e24toe, e53toe): Change to use ieeetoe, distinguish DEC
vs. others.
to internal form.
(e24toe, e53toe): Change to use ieeetoe, distinguish DEC
vs. others.
* gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
* function.c (SYMBOL__MAIN): Remove definition.
* global.c (SET_CONFLICT, REGBITP, ALLOCNO_LIVE_P): Remove.
* gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
* function.c (SYMBOL__MAIN): Remove definition.
* global.c (SET_CONFLICT, REGBITP, ALLOCNO_LIVE_P): Remove.
- * predict.c (PROB_NEVER, PROB_LIKELY, PROB_UNLIKELY): Remove.
+ * predict.c (PROB_NEVER, PROB_LIKELY, PROB_UNLIKELY): Remove.
* profile.c (GCOV_INDEX_TO_BB): Remove.
* sched-rgn.c (ABS_VALUE, MIN_DIFF_PRIORITY, MIN_PROB_DIFF): Remove.
* simplify-rtx.c (FIXED_BASE_PLUS_P): Remove.
* profile.c (GCOV_INDEX_TO_BB): Remove.
* sched-rgn.c (ABS_VALUE, MIN_DIFF_PRIORITY, MIN_PROB_DIFF): Remove.
* simplify-rtx.c (FIXED_BASE_PLUS_P): Remove.
2002-07-21 Andreas Jaeger <aj@suse.de>
2002-07-21 Andreas Jaeger <aj@suse.de>
- * reload1.c (fixup_abnormal_edges): Remove unused variable.
+ * reload1.c (fixup_abnormal_edges): Remove unused variable.
2002-07-21 Bernd Schmidt <bernds@redhat.com>
2002-07-21 Bernd Schmidt <bernds@redhat.com>
{ \
ARM_DECLARE_FUNCTION_SIZE (FILE, FNAME, DECL); \
if (!flag_inhibit_size_directive) \
{ \
ARM_DECLARE_FUNCTION_SIZE (FILE, FNAME, DECL); \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- labelno ++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
} while (0)
/* A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
} while (0)
/* A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
do \
{ \
if (!flag_inhibit_size_directive) \
do \
{ \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- \
- labelno++; \
- \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
do \
{ \
if (!flag_inhibit_size_directive) \
do \
{ \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- \
- labelno++; \
- \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
} while (0)
#define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
} while (0)
#define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (TARGET_ELF && !flag_inhibit_size_directive) \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (TARGET_ELF && !flag_inhibit_size_directive) \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), "."); \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
} while (0)
#undef ASM_DECLARE_OBJECT_NAME
} while (0)
#undef ASM_DECLARE_OBJECT_NAME
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
} while (0)
/* A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
} while (0)
/* A C statement (sans semicolon) to output to the stdio stream
STREAM any text necessary for declaring the size of a function
#undef ASM_DECLARE_FUNCTION_SIZE
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
#undef ASM_DECLARE_FUNCTION_SIZE
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do { \
- if (DECLARE_ASM_NAME) \
- { \
- if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno = 0; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, (FNAME), label); \
- } \
- } \
+ if (DECLARE_ASM_NAME && !flag_inhibit_size_directive) \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
} while (0)
/* This is how to output the definition of a user-level label named NAME,
} while (0)
/* This is how to output the definition of a user-level label named NAME,
do \
{ \
if (!flag_inhibit_size_directive) \
do \
{ \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME, label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
#ifndef OBSD_HAS_DECLARE_FUNCTION_SIZE
/* Declare the size of a function. */
#undef ASM_DECLARE_FUNCTION_SIZE
#ifndef OBSD_HAS_DECLARE_FUNCTION_SIZE
/* Declare the size of a function. */
#undef ASM_DECLARE_FUNCTION_SIZE
-#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
- do { \
- if (!flag_inhibit_size_directive) \
- ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME, "."); \
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
+ do { \
+ if (!flag_inhibit_size_directive) \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
do \
{ \
if (!flag_inhibit_size_directive) \
do \
{ \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- \
- labelno++; \
- \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME, label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
XTENSA_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL); \
} \
while (0)
XTENSA_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL); \
} \
while (0)
do \
{ \
if (!flag_inhibit_size_directive) \
do \
{ \
if (!flag_inhibit_size_directive) \
- { \
- char label[256]; \
- static int labelno; \
- \
- labelno++; \
- \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME, label); \
- } \
+ ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
XTENSA_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL); \
} \
while (0)
XTENSA_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL); \
} \
while (0)
-#define ASM_OUTPUT_MEASURED_SIZE(STREAM, BEG, END) \
+#define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME) \
do \
{ \
fputs (SIZE_ASM_OP, STREAM); \
do \
{ \
fputs (SIZE_ASM_OP, STREAM); \
- assemble_name (STREAM, BEG); \
- fputs (", ", STREAM); \
- assemble_name (STREAM, END); \
- putc ('-', STREAM); \
- assemble_name (STREAM, BEG); \
+ assemble_name (STREAM, NAME); \
+ fputs (", .-", STREAM); \
+ assemble_name (STREAM, NAME); \
putc ('\n', STREAM); \
} \
while (0)
putc ('\n', STREAM); \
} \
while (0)
provided.
@findex ASM_OUTPUT_MEASURED_SIZE
provided.
@findex ASM_OUTPUT_MEASURED_SIZE
-@item ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{beg}, @var{end})
+@item ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name})
A C statement (sans semicolon) to output to the stdio stream
@var{stream} a directive telling the assembler to calculate the size of
A C statement (sans semicolon) to output to the stdio stream
@var{stream} a directive telling the assembler to calculate the size of
-the symbol @var{beg} by subtracting its address from that of the symbol
-@var{end}. If you define @code{SIZE_ASM_OP}, a default definition of
-this macro is provided.
+the symbol @var{name} by subtracting its address from the current
+address.
+
+If you define @code{SIZE_ASM_OP}, a default definition of this macro is
+provided. The default assumes that the assembler recognizes a special
+@samp{.} symbol as referring to the current address, and can calculate
+the difference between this and another symbol. If your assembler does
+not recognize @samp{.} or cannot do calculations with it, you will need
+to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
@findex TYPE_ASM_OP
@item TYPE_ASM_OP
@findex TYPE_ASM_OP
@item TYPE_ASM_OP