This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Revised patch to remove integer output macros



This patch replaces the integer output macros with target hooks.  I've
tried to be careful, and I've tried to test a wide range of targets, but
I'm still uneasy that a patch this size will break something somewhere.

I've gone with mode-based names for new hooks, such as
TARGET_ASM_ALIGNED_HI_OP, since they are really dealing with fixed
numbers of bytes rather than short or int types.  Comments in several
back-ends said it was confusing to have SHORT and INT in the names of
the old macros, so I hope this is a step in the right direction.

The old documentation said the UNALIGNED_*_ASM_OP macros were for
16-, 32- and 64-bit quantities, but they seem to be used for
2-, 4- and 8-byte quantities, regardless of byte size.  The patch
preserves that behaviour.

The patch adds a string hook for bytes and separate aligned and
unaligned hooks for HI-, SI-, DI- and TI-sized integers.  These strings
will be NULL for unsupported directives.  The patch also adds a more
general function for cases where the string hook is NULL.

In order to get rid of references to the old macros, the patch
makes much of dwarfout use the dwarf2 output functions.  This move
seemed make the output more readable in many cases.

I tested by bootstrapping on i686-pc-linux-gnu and and running the test
suite (using -gdwarf for C).  I wrote some small test cases that seemed
likely to use the affected parts of the compiler.  I've attached them in
a tar archive, but briefly:

    vars.c
	Initialised variables of various types.  Should test all
	sizes of aligned op.

    fib.c
	A simple fibonacci function, plus a variable that points to it.
	Intended to test the debugging output without putting too much
	strain on bit-rotten ports.

    switch.c
	A dense switch statement.  Included to test for changes to
	the jump table output.

    tramp.c
	Passes a pointer to a local function.  Included because many
	trampoline templates used ASM_OUTPUT_*.

    eh.c
	Contains some exception handling-code.  Included to test for
	changes in EH tables.

I compiled cc1 and cc1plus for a range of targets (listed below),
checking for warning regressions.  I compared what the patched and
unpatched compilers did with above test cases, compiling switch.c at
-O2 and the rest without optimisation.  I tried each test with the
following additional options:

      {,-g,-gdwarf,-gdwarf-2}{,-dA}{,-fPIC}

ignoring complaints about unsupported combinations.

In many cases the output was identical.  Sometimes there were formatting
differences, mostly in the DWARF 1 output, which generally seems to have
improved.  Some of the older ports used to use ".byte" in tabular code
instead of the native byte pseudo-op ("dc.b", or whatever).  The patch
seems to fix this problem, for what it's worth.

I know of three cases where things genuinely changed:

   x86_64
	I tried to fix the solaris problem by making all unaligned
	ops the same as the aligned ones.  As a result, x86_64 now
	uses ".quad" instead of ".8byte" in tabular code.

   cris
	This target uses the same ops for unaligned and aligned data.
	It used to use ".quad" for unaligned data but not aligned data
	It will now use ".quad" for both.

   mmix
	Now uses ".byte" exclusively, instead of using "BYTE" for
	some things and ".byte" for others.

I've mostly stuck with convention of using #undef/#define pairs for each
change to the target structure.  In some cases I had to resort to
changing it in override_options instead, and I wonder whether it would
better to do all this stuff there.

There are several places where I've had to patch the float or string
output macros.  I hope to submit a patch to remove them once the
3.2 cycle gets underway.

Sorry about the ChangeLog, don't know how to write it really. ;-)

Some notes about individual ports:

The simple cases...

    i860 pj romp
	All I needed to do here was remove the ASM_OUTPUT_* macros, the
	new defaults are fine.  Shame these ports are so bit-rotten...

    a29k c4x clipper convex d30v dsp16xx fr30
    h8300 i960 m32r m68hc11 m88k mcore mn10200
    mn10300 sh v850 vax we32k xstormy16
	These targets could make do with the string hooks.  At least one
	of the default strings wasn't appropriate, or at least wasn't
	the same as the one in use before.  The choice of pseudo-op is
	unconditional for each of these ports.

    alpha ns32k
        The string hooks were OK here too.  The choice of pseudo-op
	does depend on the configuration, but the choice can be made at
	compile time.

The awkward three...

   m68k
	What a nightmare!  There seemed to be four dialects in use,
	although there were more than four definitions of various
	macros.  I've introduced a new macro to decide which
	syntax should be used.

   rs6000
	This port is the most difficult case in terms of what
	assemble_integer has to do.  I introduced a new target macro,
	RELOCATABLE_NEEDS_FIXUP, to decide whether fixup entries should
	be written when TARGET_RELOCATABLE.

	The old code would only use DOUBLE_INT_ASM_OP for 64-bit
	targets.  I've preserved that behaviour by changing the target
	structure in override_options.

   sparc
	Handles aligned DI-sized integers its own way.  Unaligned DI
	ops are again selected in override_options for 64-bit targets.
	
The rest...

   1750a
	This port seems to do some kind of label tracking, so
	target-specific code is needed for all types.

   arm arc avr ia64 pa
	These targets use a special syntax for referencing certain
	kinds of label.  Target-specific code handles aligned
	pointer-sized objects, the string hooks handle the rest.

   cris
	A simple case: default handling, unconditional choice of aligned
	ops, the unaligned ops are the same as the aligned ones.  The port
	didn't define ASM_OUTPUT_DOUBLE_INT, so the patch has the side
	effect of using ".quad" for aligned as well as unaligned DIs.

   elxsi
	Uses a suffix to indicate the data size, so target-specific code
	is needed for everything.

   i370
	TARGET_HLASM selects a rather strange syntax which has to be
	handled by target-specific code.  String hooks are OK when
	!TARGET_HLASM.

   i386
	Uses the default hook routine.  Aligned ops are chosen using the
	existing header file machinery, which I haven't tried to clean
	up.  The unaligned ops are the same as the aligned ones.  I
	changed explicit uses of UNALIGNED_INT_ASM_OP to ASM_LONG

	x86_64 now uses ".quad" instead of ".8byte" for unaligned DIs.

    mips
	Target-specific code is needed for aligned dwords to get round a
	limitation of the Irix 6 assembler.  If I'm reading the comment
	& code right, it can't handle 64-bit decimals.

	String hooks are OK for other sizes.  Irix 5 needs different
	unaligned ops to the other configurations.

   mmix
	Previously used ".byte" in tabular code and "BYTE" in the
	ASM_OUTPUT_* macros.  The patch makes it use ".byte" in all cases.

	The other macros used mmix_print_operand rather than
	output_addr_const to print the values of aligned objects.
	Doing so gave things like "WYDE #4" instead of "WYDE 4".
	I wasn't sure of the significance, so I've kept all the
	existing handling of multi-byte objects in a target-specific
	implementation.

   pdp11
	Defines its own version of output_const_addr(), so everything
	has to be done in a target-specific handler.

   s390
	Apparently an old version of GAS couldn't handle a 64-bit
	INT_MIN if printed in decimal.  Target-specific code is needed
	to work around it.

I tested against the following targets (picked from Kaveh's list):

    s390-unknown-linux-gnu
	gcc wouldn't compile

    fr30-unknown-elf
    i370-unknown-linux-gnu
    vax-unknown-elf
	Couldn't compile any of the test cases, before or after the patch.

    1750a-unknown-elf
    a29k-unknown-elf
    alpha-dec-vms
    arm-semi-aof
    arm-unknown-coff
    avr-unknown-elf
    dsp16xx-unknown-elf
    i370-unknown-mvs
    m68k-hp-hpux
    m68k-ncr-sysv
    mn10200-unknown-elf
    powerpc-unknown-darwin
    romp-unknown-mach
    sparc64-wrs-vxworks
	Could compile some of the tests but not all of them.  (Only one
	would compile for some, only one would fail for others.  I can
	post the details if anyone wants to know.)

    pj-unknown-linux-gnu
    sparc-unknown-aout
    sparc64-unknown-aout
	The patch seemed to correct some ICEs here, but there are still
	many problems on the pj and sparc64 targets.

    alpha-unknown-linux-gnu
    arc-unknown-elf
    arm-unknown-elf
    c1-convex-elf
    c4x-unknown-elf
    clipper-intergraph-clix
    cris-unknown-elf
    d30v-unknown-elf
    elxsi-elxsi-elf
    h8300-unknown-elf
    hppa1.0-hp-hpux10
    hppa1.1-hp-hpux10
    hppa64-hp-hpux11
    i386-unknown-aout
    i386-unknown-coff
    i386-unknown-cygwin
    i386-unknown-elf
    i386-unknown-sco3.2v5
    i386-sun-sunos
    i860-unknown-bsd
    i960-unknown-elf
    ia64-unknown-elf
    m32r-unknown-elf
    m68hc11-unknown-elf
    m68k-atari-sysv4
    m68k-apple-aux
    m68k-bull-sysv
    m68k-cbm-sysv4
    m68k-motorola-sysv
    m88k-unknown-aout
    m68k-unknown-coff
    m68k-unknown-lynxos
    mcore-unknown-elf
    mips-sgi-irix5
    mips-sgi-irix6.5
    mips-unknown-elf
    mips64-unknown-elf
    mmix-knuth-mmixware
    mn10300-unknown-elf
    ns32k-unknown-netbsd
    pdp11-unknown-elf
    powerpc-unknown-linux-gnu
    powerpc-unknown-sysv
    powerpc64-unknown-linux-gnu
    rs6000-bull-bosx
    rs6000-ibm-aix
    sh-unknown-elf
    sparc-unknown-elf
    sparc64-unknown-elf
    sparc64-unknown-linux-gnu
    sparcv9-sun-solaris2.8
    v850-unknown-elf
    we32k-att-sysv
    x86_64-unknown-linux-gnu
    xstormy16-unknown-elf
	These targets coped with all the tests.

Richard

	* target.h (asm_out.byte_op, asm_out.aligned_op, asm_out.unaligned_op,
	asm_out.integer): New fields.
	* target-def.h (TARGET_ASM_BYTE_OP, TARGET_ASM_ALIGNED_[HSDT]I_OP,
	TARGET_ASM_UNALIGNED_[HSDT]I_OP): New initialisers.
	(TARGET_ASM_ALIGNED_INT_OP, TARGET_ASM_UNALIGNED_INT_OP): Collect
	the individual initialisers together.
	(TARGET_ASM_OUT): Add the new initialisers.
	* output.h (assemble_integer): Return bool.
	(integer_asm_op): Declare.
	(default_assemble_integer): Declare.
	(assemble_aligned_integer): New interface to assemble_integer.
	* varasm.c (integer_asm_op): New function to select pseudo-op.
	(default_assemble_integer): Default implementation of asm_out.integer.
	(assemble_integer): Use integer_asm_op and the new target hook.
	Return bool.
	* doc/tm.texi (ASM_OUTPUT_CHAR, ASM_OUTPUT_BYTE, ASM_OUTPUT_SHORT,
	ASM_OUTPUT_INT, ASM_OUTPUT_DOUBLE_INT, ASM_OUTPUT_QUADRUPLE_INT,
	UNALIGNED_SHORT_ASM_OP,	UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Undocument.
	Document new target hooks.

	* defaults.h (ASM_OUTPUT_ADDR_VEC_ELT): Use integer_asm_op.
	* dwarf2asm.c (unaligned_integer_asm_op): Remove.
	(dw2_assemble_integer): New.
	(dw2_asm_output_data, dw2_asm_output_delta, dw2_asm_output_offset,
	dw2_asm_output_pcrel, dw2_asm_output_addr, dw2_asm_output_addr_rtx,
	dw2_asm_output_encoded_addr_rtx): Use it.
	(dw2_asm_output_nstring): Use assemble_integer for the null terminator.
	(dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128): Use
	integer_asm_op (1, TRUE) as the byte pseudo-op, if available,
	otherwise use assemble_integer to print one byte on each line.
	* dwarf2asm.h (dw2_assemble_integer): Declare.
	* dwarfout.c: Include dwarf2asm.h.  Use dwarf2 functions for the
	default	implementation of most macros.
	(output_unsigned_leb128): Use dw2_asm_output_data.
	(output_signed_leb128, dwarfout_source_line): Likewise.
	(output_reg_number): Use dw2_assemble_integer.
	(generate_macinfo_entry): Separate the type and offset arguments.
	Use assemble_integer to write the value.
	(dwarfout_start_source_file): Update generate_macinfo_entry usage.
	(dwarfout_end_source_file, dwarfout_define, dwarfout_undef): Likewise.
	* final.c (output_addr_const): Don't put brackets round a subtracted
	symbol value or ".".
	* halfpic.c (half_pic_finish): Use assemble_aligned_integer.

	* config/1750a/1750a.c (assemble_integer_1750a): New,
	* config/alpha/alpha.h (literal_section): Avoid ASM_OUTPUT_INT.
	* config/arc/arc.c (arc_assemble_integer): New.
	* config/arc/arc.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/arm/arm.c (arm_poke_function_name): Likewise.
	(arm_assemble_integer): New, extracted from...
	* config/arm/arm.h (OUTPUT_INT_ADDR_CONST): ...here, now removed.
	(ARM_TRAMPOLINE_TEMPLATE, ARM_FUNCTION_PROFILER): Avoid ASM_OUPTUT_INT.
	(ARM_FUNCTION_PROFILER): Likewise.
	* config/avr/avr-protos.h (asm_output_byte): Remove.
	(asm_output_char, asm_output_short): Remove.
	* config/avr/avr.c (avr_assemble_integer): New.
	(asm_output_byte, asm_output_char, asm_output_short): Remove.
	* config/clipper/clipper.h (ASM_LONG): Remove.
	* config/dsp16xx/dsp16xx-protos.h (asm_output_long): Remove.
	* config/dsp16xx/dsp16xx.c (asm_output_long): Remove.
	* config/elxsi/elxsi.c (elxsi_assemble_integer): New.
	* config/i370/i370.c (i370_hlasm_assemble_integer): New.
	* config/i370/i370.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_SHORT.
	(ASM_BYTE, ASM_SHORT, ASM_LONG): Delete.
	* config/i386/att.h, (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i386/linux.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Use
	ASM_LONG instead of UNALIGNED_INT_ASM_OP.
	* config/i386/sco5.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i386/sysv4.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Use
	ASM_LONG instead of UNALIGNED_INT_ASM_OP.
	* config/i860/fx2800.h (ASM_FILE_END): Avoid ASM_LONG.
	* config/i860/i860.c (i860_output_function_epilogue): Avoid ASM_LONG.
	* config/i860/i860.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	(ASM_SHORT, ASM_LONG): Undefine.
	* config/i860/paragon.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/i860/sysv3.h (ASM_OUTPUT_ASCII): Likewise.
	* config/i960/i960.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/ia64/ia64.c (ia64_assemble_integer): New.
	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Use integer_asm_op.
	(ASM_OUTPUT_DWARF_PCREL): Likewise.
	* config/m68hc11/m68hc11.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_DIFF_ELT, ASM_OUTPUT_ADDR_VEC_ELT): Avoid ASM_LONG.
	(ASM_SHORT, ASM_LONG): Remove.
	* config/m68k/m68k.h (INT_OP_GROUP): New macro.
	(INT_OP_STANDARD, INT_OP_DOT_WORD, INT_OP_NO_DOT, INT_OP_DC): New
	macros, the allowed values for INT_OP_GROUP.
	* config/m68k/amix.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP
	* config/m68k/atari.h (ASM_OUTPUT_ASCII): Likewise
	* config/m68k/m68kelf.h (ASM_OUTPUT_ASCII): Likewise
	* config/m68k/auxas.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP): Remove.
	(INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m68k/dpx2.h (ASM_LONG): Undefine.
	(INT_OP_GROUP): Define to INT_OP_DC.
	* config/m68k/dpx2g.h (ASM_LONG): Undefine.
	* config/m68k/hp320.h (INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m68k/lynx.h (ASM_LONG): Undefine.
	* config/m68k/dpx2g.h (ASM_LONG): Undefine.
	* config/m68k/m68kelf.h (ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/m68k/m68kv4.h (ASM_OUTPUT_ASCII): Likewise.
	(TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_*.
	* config/m68k/mot3300.h (INT_OP_GROUP): Define to INT_OP_STANDARD
	for GAS and INT_OP_NO_DOT otherwise.
	(ASM_CHAR, ASM_BYTE, ASM_SHORT, ASM_LONG): Remove.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Avoid ASM_LONG.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/m68k/sgs.h (BYTE_ASM_OP, WORD_ASM_OP, LONG_ASM_OP): Remove.
	(INT_OP_GROUP): Define to INT_OP_STANDARD.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT,
	ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Avoid LONG_ASM_OP.
	(ASM_OUTPUT_ASCII): Avoid BYTE_ASM_OP.
	* config/m68k/tower-as.h (ASM_LONG): Remove.
	(INT_OP_GROUP): Define to INT_OP_NO_DOT.
	* config/m88k/m88k.c (output_tdesc): Avoid ASM_LONG.
	* config/m88k/m88k.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	(ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Avoid ASM_LONG.
	* config/mips/iris5.h (TARGET_IRIX5): Define.
	* config/mips/mips.c (mips_assemble_integer): New.
	* config/mips/sni-svr4.h (ASM_LONG): Undefine.
	* config/mmix/mmix-protos.h (mmix_asm_output_double_int): Remove.
	* config/mmix/mmix.c (mmix_assemble_integer): New.
	(mmix_asm_output_double_int): Remove.
	(mmix_print_operand): Call mips_output_octa directly.
	* config/mmix/mmix.h (ASM_LONG): Remove.
	* config/ns32k/ns32k.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_INT.
	* config/pa/pa.c (pa_assemble_integer): New.
	* config/pdp11/pdp11.c (pdp11_assemble_integer): New.
	* config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Avoid ASM_OUTPUT_SHORT.
	* config/pj/pj.h (ASM_LONG): Undefine.
	* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Undefine.
	* config/rs6000/rs6000.c (rs6000_assemble_integer): New, mostly
	extracted from ASM_OUTPUT_INT in sysv4.h.  Use in_text_section()
	and in_toc_section() rather than the in_section variable.
	(rs6000_override_options): Provide DImode pseudo-ops on 64-bit targets.
	* config/rs6000/sysv4.h (TOC_SECTION_FUNCTION): Add in_toc_section().
	(RELOCATABLE_NEEDS_FIXUP): Define.
	* config/rs6000/xcoff.h (DOUBLE_INT_ASM_OP): Change space to tab.
	* config/s390/linux.h (ASM_SHORT, ASM_LONG, ASM_QUAD): Remove.
	(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Use integer_asm_op
	to get the word directive.
	(ASM_OUTPUT_ASCII): Avoid ASM_BYTE_OP.
	* config/s390/s390.c (s390_assemble_integer): New.
	* config/s390/s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Use
	integer_asm_op to get the word directive.
	* config/sparc/sol2.h (ASM_SHORT, ASM_LONG): Remove.
	(SPARC_USE_UNALIGNED_OPS): Define.
	* config/sparc/sparc-protos.h (output_double_int): Remove.
	* config/sparc/sparc.c (output_double_int): Move to...
	(sparc_assemble_integer): ...this new function.
	(sparc_override_options): Only use unaligned DI ops on 64-bit targets.
	* config/sparc/sparc.h (ASM_SHORT, ASM_LONG, ASM_LONGLONG): Remove.
	* config/sparc/sysv4.h (ASM_LONG): Remove.
	(ASM_OUTPUT_LONG_DOUBLE, ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Avoid
	ASM_LONG.
	* config/vax/vax.h (TRAMPOLINE_TEMPLATE): Use assemble_aligned_integer.
	* config/we32k/we32k.h (TRAMPOLINE_TEMPLATE): Likewise.

	* config/1750a/1750a.c, config/a29k/a29k.c, config/alpha/alpha.c,
	config/arc/arc.c, config/arm/arm.c, config/avr/avr.c, config/c4x/c4x.c,
	config/clipper/clipper.c, config/convex/convex.c, config/cris/cris.c,
	config/d30v/d30v.c, config/dsp16xx/dsp16xx.c, config/elxsi/elxsi.c,
	config/fr30/fr30.c, config/h8300/h8300.c, config/i370/i370.c,
	config/i386/i386.c, config/i860/i860.c, config/i960/i960.c,
	config/ia64/ia64.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
	config/m68k/m68k.c, config/m88k/m88k.c, config/mips/mips.c,
	config/mmix/mmix.c, config/mn10200/mn10200.c, config/mn10300/mn10300.c,
	config/ns32k/ns32k.c, config/pa/pa.c, config/pdp11/pdp11.c,
	config/sh/sh.c, config/sparc/sparc.c, config/stormy16/stormy16.c,
	config/v850/v850.c, config/vax/vax.c, config/we32k/we32k.c
	(TARGET_ASM_BYTE_OP, TARGET_ASM_ALIGNED_HI_OP,
	TARGET_ASM_ALIGNED_SI_OP, TARGET_ASM_ALIGNED_DI_OP,
	TARGET_ASM_UNALIGNED_HI_OP, TARGET_ASM_UNALIGNED_SI_OP,
	TARGET_ASM_UNALIGNED_DI_OP, TARGET_ASM_INTEGER): Redefine as
	appropriate.
	
	* config/defaults.h, config/darwin.h, config/elfos.h, config/svr3.h,
	config/1750a/1750a.h, config/a29k/a29k.h, config/alpha/alpha.h,
	config/arc/arc.h, config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h,
	config/clipper/clipper.h, config/convex/convex.h, config/cris/cris.h,
	config/d30v/d30v.h, config/dsp16xx/dsp16xx.h, config/elxsi/elxsi.h,
	config/fr30/fr30.h, config/h8300/h8300.h, config/i370/i370.h,
	config/i386/bsd.h, config/i386/djgpp.h, config/i386/i386.h,
	config/i386/sco5.h, config/i386/sol2.h, config/i386/sun386.h,
	config/i860/i860.h, config/i960/i960.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/auxas.h,
	config/m68k/dpx2.h, config/m68k/hp320.h, config/m68k/m68k.h,
	config/m68k/mot3300.h, config/m68k/sgs.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/mcore/mcore-elf.h, config/mcore/mcore.h,
	config/mips/iris5.h, config/mips/iris6.h, config/mips/mips.h,
	config/mmix/mmix.h, config/mn10200/mn10200.h, config/mn10300/mn10300.h
	config/ns32k/encore.h, config/ns32k/ns32k.h, config/pa/pa-64.h,
	config/pa/pa.h, config/pdp11/pdp11.h, config/pj/pj.h,
	config/romp/romp.h, config/rs6000/linux64.h, config/rs6000/rs6000.h,
	config/rs6000/sysv4.h, config/rs6000/xcoff.h, config/s390/linux.h,
	config/sh/sh.h, config/sparc/linux64.h, config/sparc/sol2.h,
	config/sparc/sp64-elf.h, config/sparc/sparc.h, config/sparc/sysv4.h,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h,
	config/we32k/we32k.h (ASM_OUTPUT_CHAR, ASM_OUTPUT_BYTE, ASM_BYTE_OP,
	ASM_BYTE, ASM_OUTPUT_SHORT, ASM_OUTPUT_INT, ASM_OUTPUT_DOUBLE_INT,
	UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP,
	UNALIGNED_DOUBLE_INT_ASM_OP): Undefine, where defined.

Attachment: int-op.patch.bz2
Description: The patch (compressed with bzip2)

Attachment: int-op-test-cases.tar.bz2
Description: The test cases (a .tar.bz2 archive)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]