public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/12476] New: ARM/THUMB thunk calls broken
@ 2003-10-01 11:27 thomas at koeller dot dyndns dot org
  2003-10-01 17:52 ` [Bug target/12476] " pinskia at gcc dot gnu dot org
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: thomas at koeller dot dyndns dot org @ 2003-10-01 11:27 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476

           Summary: ARM/THUMB thunk calls broken
           Product: gcc
           Version: 3.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: thomas at koeller dot dyndns dot org
                CC: gcc-bugs at gcc dot gnu dot org,thomas dot koeller at
                    baslerweb dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-ecos-elf

When compiling ARM programs in THUMB mode, thunks use a 'b' instruction to branch to 
the target function. Since the 'b' instruction has a very limited adressing range (+/- 256 
bytes), and the thunk and its target function are placed in different sections, linking errors 
are very common: 
 
csr_camerastatus.o: In function `non-virtual thunk [nv:-24] to 
CSR_CAMERASTATUS::SetProtocolError(ProtocolErrorHandler::EPROT_ERR_VAL)': 
csr_camerastatus.o(.gnu.linkonce.t._ZThn24_N16CSR_CAMERASTATUS16SetProtocolErrorEN20ProtocolErrorHandler13EPROT_ERR_VALE+0x2): 
relocation truncated to fit: R_ARM_THM_PC11 
CSR_CAMERASTATUS::SetProtocolError(ProtocolErrorHandler::EPROT_ERR_VAL)


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
@ 2003-10-01 17:52 ` pinskia at gcc dot gnu dot org
  2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-10-01 17:52 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
          Component|c++                         |target
           Keywords|                            |wrong-code


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-10-01 17:52 -------
Can you provide the preprocessed file?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
  2003-10-01 17:52 ` [Bug target/12476] " pinskia at gcc dot gnu dot org
  2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
@ 2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
  2003-10-01 19:19 ` rearnsha at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-10-01 18:31 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
         Resolution|                            |INVALID


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-10-01 18:31 -------
marking as invalid to mark as ....


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
  2003-10-01 17:52 ` [Bug target/12476] " pinskia at gcc dot gnu dot org
@ 2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
  2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-10-01 18:31 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-10-01 18:31 -------
unconfirmed.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (2 preceding siblings ...)
  2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
@ 2003-10-01 19:19 ` rearnsha at gcc dot gnu dot org
  2003-11-23  5:45 ` cvs-commit at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2003-10-01 19:19 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2003-10-01 19:19:59
               date|                            |


------- Additional Comments From rearnsha at gcc dot gnu dot org  2003-10-01 19:19 -------
This is a known problem.  See:

	http://gcc.gnu.org/ml/gcc/2002-06/msg01598.html


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (3 preceding siblings ...)
  2003-10-01 19:19 ` rearnsha at gcc dot gnu dot org
@ 2003-11-23  5:45 ` cvs-commit at gcc dot gnu dot org
  2004-01-09  2:47 ` pinskia at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2003-11-23  5:45 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2003-11-23 05:44 -------
Subject: Bug 12476

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	csl-arm-branch
Changes by:	pme@gcc.gnu.org	2003-11-23 05:44:53

Modified files:
	gcc            : ChangeLog 
	gcc/config/arm : arm.c arm.h 

Log message:
	2003-11-22  Phil Edwards  <phil@codesourcery.com>
	
	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk):  In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME):  Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=2.1568.2.5&r2=2.1568.2.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.303.2.2&r2=1.303.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.h.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.210.2.1&r2=1.210.2.2



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (4 preceding siblings ...)
  2003-11-23  5:45 ` cvs-commit at gcc dot gnu dot org
@ 2004-01-09  2:47 ` pinskia at gcc dot gnu dot org
  2004-01-09 10:25 ` rearnsha at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-09  2:47 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2003-10-01 19:19:59         |2004-01-09 02:47:50
               date|                            |
   Target Milestone|---                         |3.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (5 preceding siblings ...)
  2004-01-09  2:47 ` pinskia at gcc dot gnu dot org
@ 2004-01-09 10:25 ` rearnsha at gcc dot gnu dot org
  2004-01-14  3:39 ` pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2004-01-09 10:25 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rearnsha at gcc dot gnu dot org  2004-01-09 10:25 -------
This should be fixed in 3.4.  The code already exists on the csl-arm branch and
just needs pulling up.  I believe Mark has already approved doing so.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pbrook at gcc dot gnu dot
                   |                            |org
   Target Milestone|3.5.0                       |3.4.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (6 preceding siblings ...)
  2004-01-09 10:25 ` rearnsha at gcc dot gnu dot org
@ 2004-01-14  3:39 ` pinskia at gcc dot gnu dot org
  2004-01-14  5:41 ` pinskia at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-14  3:39 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-14 03:39 -------
Not a regression so moving to 3.4.1 (if you fix it before make sure you move the target 
back).

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.4.0                       |3.4.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (7 preceding siblings ...)
  2004-01-14  3:39 ` pinskia at gcc dot gnu dot org
@ 2004-01-14  5:41 ` pinskia at gcc dot gnu dot org
  2004-01-14  9:21 ` rearnsha at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-14  5:41 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.4.1                       |3.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (8 preceding siblings ...)
  2004-01-14  5:41 ` pinskia at gcc dot gnu dot org
@ 2004-01-14  9:21 ` rearnsha at gcc dot gnu dot org
  2004-01-14  9:40 ` pinskia at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2004-01-14  9:21 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rearnsha at gcc dot gnu dot org  2004-01-14 09:21 -------
Andrew, will you please stop moving targets like this without discussing the
issues with those involved.


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.5.0                       |3.4.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (9 preceding siblings ...)
  2004-01-14  9:21 ` rearnsha at gcc dot gnu dot org
@ 2004-01-14  9:40 ` pinskia at gcc dot gnu dot org
  2004-02-03 14:44 ` cvs-commit at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-14  9:40 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-14 09:40 -------
Target milestones are only for regressions and ABI bugs, this is neither. I said if the fix 
gets applied then just change the target milestone back to where it was fixed.  This is 
standard practice for all of GCC.  I am just move the milestone to 3.5 for now (as I assume 
the csl-arm branch will be merged into the mainline),  you can move it back when the fix 
is applied to the mainline.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.4.0                       |3.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (10 preceding siblings ...)
  2004-01-14  9:40 ` pinskia at gcc dot gnu dot org
@ 2004-02-03 14:44 ` cvs-commit at gcc dot gnu dot org
  2004-02-03 14:45 ` cvs-commit at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-02-03 14:44 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-02-03 14:44 -------
Subject: Bug 12476

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	pbrook@gcc.gnu.org	2004-02-03 14:44:15

Modified files:
	gcc            : ChangeLog config.gcc longlong.h 
	gcc/config/arm : aof.h aout.h arm-protos.h arm.c arm.h arm.md 
	                 cirrus.md elf.h fpa.md iwmmxt.md lib1funcs.asm 
	                 linux-elf.h netbsd-elf.h semi.h 
	gcc/doc        : install.texi invoke.texi md.texi 

Log message:
	Merge from csl-arm-branch.
	
	2004-01-30  Paul Brook  <paul@codesourcery.com>
	
	* aof.h (REGISTER_NAMES): Add vfp reg names
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* aout.h (REGISTER_NAMES): Ditto.
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* arm-protos.h: Update/Add Prototypes.
	* arm.c (init_fp_table): Rename from init_fpa_table. Update users.
	Only allow 0.0 for VFP.
	(fp_consts_inited): Rename from fpa_consts_inited.  Update users.
	(values_fp): Rename from values_fpa.  Update Users.
	(arm_const_double_rtx): Rename from const_double_rtx_ok_for_fpa.
	Update users.  Only check valid constants for this hardware.
	(arm_float_rhs_operand): Rename from fpa_rhs_operand.  Update Users.
	Only allow consts for FPA.
	(arm_float_add_operand): Rename from fpa_add_operand.  Update users.
	Only allow consts for FPA.
	(use_return_insn): Check for saved VFP regs.
	(arm_legitimate_address_p): Handle VFP DFmode addressing.
	(arm_legitimize_address): Ditto.
	(arm_general_register_operand): New function.
	(vfp_mem_operand): New function.
	(vfp_compare_operand): New function.
	(vfp_secondary_reload_class): New function.
	(arm_float_compare_operand): New function.
	(vfp_print_multi): New function.
	(vfp_output_fstmx): New function.
	(vfp_emit_fstm): New function.
	(arm_output_epilogue): Output VPF reg restore code.
	(arm_expand_prologue): Output VFP reg save code.
	(arm_print_operand): Add 'P'.
	(arm_hard_regno_mode_ok): Return modes for VFP regs.
	(arm_regno_class): Return classes for VFP regs.
	(arm_compute_initial_elimination_offset): Include space for VFP regs.
	(arm_get_frame_size): Ditto.
	* arm.h (FIXED_REGISTERS): Add VFP regs.
	(CALL_USED_REGISTERS): Ditto.
	(CONDITIONAL_REGISTER_USAGE): Enable VFP regs.
	(FIRST_VFP_REGNUM): Define.
	(LAST_VFP_REGNUM): Define.
	(IS_VFP_REGNUM): Define.
	(FIRST_PSEUDO_REGISTER): Include VFP regs.
	(HARD_REGNO_NREGS): Handle VFP regs.
	(REG_ALLOC_ORDER): Add VFP regs.
	(enum reg_class): Add VFP_REGS.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	(CANNOT_CHANGE_MODE_CLASS) Handle VFP Regs.
	(REG_CLASS_FROM_LETTER): Add 'w'.
	(EXTRA_CONSTRAINT_ARM): Add 'U'.
	(EXTRA_MEMORY_CONSTRAINT): Define.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Handle VFP regs.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	(REGISTER_MOVE_COST): Ditto.
	(PREDICATE_CODES): Add arm_general_register_operand,
	arm_float_compare_operand and vfp_compare_operand.
	* arm.md (various): Rename as above.
	(divsf3): Enable when TARGET_VFP.
	(divdf3): Ditto.
	(movdfcc): Ditto.
	(sqrtsf2): Ditto.
	(sqrtdf2): Ditto.
	(arm_movdi): Disable when TARGET_VFP.
	(arm_movsi_insn): Ditto.
	(movsi): Only split with general regs.
	(cmpsf): Use arm_float_compare_operand.
	(push_fp_multi): Restrict to TARGET_FPA.
	(vfp.md): Include.
	* vfp.md: New file.
	* fpa.md (various): Rename as above.
	* doc/md.texi: Document ARM w and U constraints.
	
	2004-01-15  Paul Brook  <paul@codesourcery.com>
	
	* config.gcc: Add with_fpu.  Allow with-float=softfp.
	* config/arm/arm.c (arm_override_options): Rename *-s to *s.
	Break out of loop when we find a float-abi.  Fix typo.
	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "fpu".
	Set -mfloat-abi=.
	* doc/install.texi: Document --with-fpu.
	
	2003-01-14  Paul Brook  <paul@codesourcery.com>
	
	* config.gcc (with_arch): Add armv6.
	* config/arm/arm.h: Rename TARGET_CPU_*_s to TARGET_CPU_*s.
	* config/arm/arm.c (arm_overrride_options): Ditto.
	
	2004-01-08  Richard Earnshaw  <rearnsha@arm.com>
	
	* arm.c (FL_ARCH3M): Renamed from FL_FAST_MULT.
	(FL_ARCH6): Renamed from FL_ARCH6J.
	(arm_arch3m): Renamed from arm_fast_multiply.
	(arm_arch6): Renamed from arm_arch6j.
	* arm.h: Update all uses of above.
	* arm-cores.def: Likewise.
	* arm.md: Likewise.
	
	* arm.h (CPP_CPU_ARCH_SPEC): Emit __ARM_ARCH_6J__ define for armV6j,
	not arm6j.  Add entry for arch armv6.
	
	2004-01-07  Richard Earnshaw  <rearnsha@arm.com>
	
	* arm.c (arm_emit_extendsi): Delete.
	* arm-protos.h (arm_emit_extendsi): Delete.
	* arm.md (zero_extendhisi2): Also handle zero-extension of
	non-subregs.
	(zero_extendqisi2, extendhisi2, extendqisi2): Likewise.
	(thumb_zero_extendhisi2): Only match if not v6.
	(arm_zero_extendhisi2, thumb_zero_extendqisi2, arm_zero_extendqisi2)
	(thumb_extendhisi2, arm_extendhisi2, arm_extendqisi)
	(thumb_extendqisi2): Likewise.
	(thumb_zero_extendhisi2_v6, arm_zero_extendhisi2_v6): New patterns.
	(thumb_zero_extendqisi2_v6, arm_zero_extendqisi2_v6): New patterns.
	(thumb_extendhisi2_insn_v6, arm_extendhisi2_v6): New patterns.
	(thumb_extendqisi2_v6, arm_extendqisi_v6): New patterns.
	(arm_zero_extendhisi2_reg, arm_zero_extendqisi2_reg): Delete.
	(arm_extendhisi2_reg, arm_extendqisi2_reg): Delete.
	(arm_zero_extendhisi2addsi): Remove subreg.  Add attributes.
	(arm_zero_extendqisi2addsi, arm_extendhisi2addsi): Likewise.
	(arm_extendqisi2addsi): Likewise.
	
	2003-12-31  Mark Mitchell  <mark@codesourcery.com>
	
	Revert this change:
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.
	
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.
	
	2003-12-30  Mark Mitchell  <mark@codesourcery.com>
	
	* config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept
	CONSTANT_P_RTX.
	
	2003-30-12  Paul Brook  <paul@codesourcery.com>
	
	* longlong.h: protect arm inlines with !defined (__thumb__)
	
	2003-30-12  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Always define __arm__.
	
	2003-12-30  Nathan Sidwell  <nathan@codesourcery.com>
	
	* builtins.c (expand_builtin_apply_args_1): Fix typo in previous
	change.
	
	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>
	
	* builtins.c (expand_builtin_apply_args_1): Add pretend args size
	to the virtual incoming args pointer for downward stacks.
	
	2003-12-29  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm-cores.def: Add cost function.
	* config/arm/arm.c (arm_*_rtx_costs): New functions.
	(arm_rtx_costs): Remove
	(struct processors): Add rtx_costs field.
	(all_cores, all_architectures): Ditto.
	(arm_override_options): Set targetm.rtx_costs.
	(thumb_rtx_costs): New function.
	(arm_rtx_costs_1): Remove cases handled elsewhere.
	* config/arm/arm.h (processor_type): Add COSTS parameter.
	
	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm.md (generic_sched): arm926 has its own scheduler.
	(arm926ejs.md): Include it.
	* config/arm/arm926ejs.md: New pipeline description.
	
	2003-12-24  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (arm_arch6j): New variable.
	(arm_override_options): Set it.
	(arm_emit_extendsi): New function.
	* config/arm/arm-protos.h (arm_emit_extendsi): Add prototype.
	* config/arm/arm.h (arm_arch6j): Declare.
	* config/arm/arm.md: Add sign/zero extend insns.
	
	2003-12-23  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (all_architectures): Add armv6.
	* doc/invoke.texi: Document it.
	
	2003-12-19  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.md: Add load1 and load_byte "type" attrs.  Modify
	insn patterns to match.
	* config/arm/arm-generic.md: Ditto.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/amm/iwmmxt.md: Ditto.
	* config/arm/arm1026ejs.md: Ditto.
	* config/arm/arm1135jfs.md: Ditto.  Add insn_reservation and bypasses
	for 11_loadb.
	
	2003-12-18  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm-protos.h (arm_no_early_alu_shift_value_dep): Declare.
	* config/arm/arm.c (arm_adjust_cost): Check shift cost for
	TYPE_ALU_SHIFT and TYPE_ALU_SHIFT_REG.
	(arm_no_early_store_addr_dep, arm_no_early_alu_shift_dep,
	arm_no_early_mul_dep): Correctly deal with conditional execution,
	parallels and single shift operations.
	(arm_no_early_alu_shift_value_dep): Define.
	* arm.md (attr type): Replace 'normal' with 'alu',
	'alu_shift' and 'alu_shift_reg'.
	(attr core_cycles): Adjust.
	(*addsi3_carryin_shift, andsi_not_shiftsi_si, *arm_shiftsi3,
	*shiftsi3_compare0, *notsi_shiftsi, *notsi_shiftsi_compare0,
	*not_shiftsi_compare0_scratch, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
	*cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
	*arith_shiftsi_compare0_scratch, *sub_shiftsi,
	*sub_shiftsi_compare0, *sub_shiftsi_compare0_scratch,
	*if_shift_move, *if_move_shift, *if_shift_shift): Set type
	attribute appropriately.
	* config/arm/arm1026ejs.md (alu_op): Adjust.
	(alu_shift_op, alu_shift_reg_op): New.
	* config/arm/arm1136.md: Add better bypasses for early
	registers. Remove load[234] and store[234] bypasses.
	(11_alu_op): Adjust.
	(11_alu_shift_op, 11_alu_shift_reg_op): New.
	
	2003-12-15  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm-protos.h (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Declare.
	* config/arm/arm.c (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Define.
	* config/arm/arm1026ejs.md: Add load-store bypass.
	* config/arm/arm1136jfs.md (11_alu_op): Take 2 cycles.
	Add bypasses between instructions.
	
	2003-12-10  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (arm_fpu_model): New variable.
	(arm_fload_abi): New variable.
	(target_fpe_name): Rename from target_fp_name.
	(target_fpu_name): New variable.
	(arm_is_cirrus): Remove.
	(fpu_desc): New struct.
	(all_fpus): Define.
	(pf_model_for_fpu): Define.
	(all_loat_abis): Define.
	(arm_override_options): Set fp arch flags based on -mfpu=
	and -float-abi=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(*): Use new TARGET_* flags.
	* config/arm/arm.h (TARGET_ANY_HARD_FLOAT): Remove.
	(TARGET_HARD_FLOAT): No longer implies TARGET_FPA.
	(TARGET_SOFT_FLOAT): Ditto.
	(TARGET_SOFT_FLOAT_ABI): New.
	(TARGET_MAVERICK): Rename from TARGET_CIRRUS.  No longer implies
	TARGET_HARD_FLOAT.
	(TARGET_VFP): No longer implies TARGET_HARD_FLOAT.
	(TARGET_OPTIONS): Add -mfpu=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(arm_pf_model): Define.
	(arm_float_abi_type): Define.
	(fputype): Add FPUTYPE_VFP.  Change SOFT_FPA->NONE
	* config/arm/arm.md: Use new TARGET_* flags.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/arm/elf.h (ASM_SPEC): Pass -mfloat-abi= and -mfpu=.
	* config/arm/semi.h (ASM_SPEC): Ditto.
	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Specify vfp.
	(FPUTYPE_DEFAULT): Set to VFP.
	* doc/invoke.texi: Document -mfpu= and -mfloat-abi=.
	
	2003-11-22  Phil Edwards  <phil@codesourcery.com>
	
	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk):  In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME):  Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.
	
	2003-11-15  Nicolas Pitre <nico@cam.org>
	
	* config/arm/arm.md (ashldi3, arm_ashldi3_1bit, ashrdi3,
	arm_ashrdi3_1bit, lshrdi3, arm_lshrdi3_1bit): New patterns.
	* config/arm/iwmmxt.md (ashrdi3_iwmmxt): Renamed from ashrdi3.
	(lshrdi3_iwmmxt): Renamed from lshrdi3.
	* config/arm/arm.c (IWMMXT_BUILTIN2): Renamed argument accordingly.
	
	2003-11-12  Steve Woodford  <scw@wasabisystems.com>
	Ian Lance Taylor  <ian@wasabisystems.com>
	
	* config/arm/lib1funcs.asm (ARM_DIV_BODY, ARM_MOD_BODY): Add new
	code for __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__).
	
	2003-11-05  Phil Edwards  <phil@codesourcery.com>
	
	* config/arm/arm.md (insn):  Add new V6 instruction names.
	(generic_sched):  New attr.
	* config/arm/arm-generic.md:  Use generic_sched here.
	* config/arm/arm1026ejs.md:  Do not model fetch/issue/decode
	stages of pipeline.  Adjust latency counts accordingly.
	* config/arm/arm1136jfs.md:  New file.
	
	2003-10-28  Mark Mitchell  <mark@codesourcery.com>
	
	* config/arm/arm.h (processor_type): New enumeration type.
	(CPP_ARCH_DEFAULT_SPEC): Set appropriately for ARM 926EJ-S,
	ARM1026EJ-S, ARM1136J-S, and ARM1136JF-S processor cores.
	(CPP_CPU_ARCH_SPEC): Likewise.
	* config/arm/arm.c (arm_tune): New variable.
	(all_cores): Use cores.def.
	(all_architectures): Add representative processor.
	(arm_override_options): Restructure way in which tuning
	information is deduced.
	* arm.md: Update "insn" and "type" attributes throughout.
	(insn): New attribute.
	(type): Compute "mult" from "insn" attribute.  Add load2,
	load3, load4 alternatives.
	(arm automaton): Move to arm-generic.md.
	* config/arm/arm-cores.def: New file.
	* config/arm/arm-generic.md: Likewise.
	* config/arm/arm1026ejs.md: Likewise.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.2620&r2=2.2621
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?cvsroot=gcc&r1=1.422&r2=1.423
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/longlong.h.diff?cvsroot=gcc&r1=1.41&r2=1.42
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/aof.h.diff?cvsroot=gcc&r1=1.29&r2=1.30
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/aout.h.diff?cvsroot=gcc&r1=1.35&r2=1.36
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm-protos.h.diff?cvsroot=gcc&r1=1.61&r2=1.62
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.c.diff?cvsroot=gcc&r1=1.326&r2=1.327
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.h.diff?cvsroot=gcc&r1=1.217&r2=1.218
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.md.diff?cvsroot=gcc&r1=1.157&r2=1.158
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/cirrus.md.diff?cvsroot=gcc&r1=1.5&r2=1.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/elf.h.diff?cvsroot=gcc&r1=1.44&r2=1.45
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/fpa.md.diff?cvsroot=gcc&r1=1.2&r2=1.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/iwmmxt.md.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/lib1funcs.asm.diff?cvsroot=gcc&r1=1.27&r2=1.28
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/linux-elf.h.diff?cvsroot=gcc&r1=1.46&r2=1.47
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/netbsd-elf.h.diff?cvsroot=gcc&r1=1.6&r2=1.7
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/semi.h.diff?cvsroot=gcc&r1=1.12&r2=1.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/install.texi.diff?cvsroot=gcc&r1=1.253&r2=1.254
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/invoke.texi.diff?cvsroot=gcc&r1=1.403&r2=1.404
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/md.texi.diff?cvsroot=gcc&r1=1.86&r2=1.87



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (11 preceding siblings ...)
  2004-02-03 14:44 ` cvs-commit at gcc dot gnu dot org
@ 2004-02-03 14:45 ` cvs-commit at gcc dot gnu dot org
  2004-02-03 16:39 ` pinskia at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-02-03 14:45 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-02-03 14:45 -------
Subject: Bug 12476

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	pbrook@gcc.gnu.org	2004-02-03 14:45:45

Added files:
	gcc/config/arm : arm-cores.def arm-generic.md arm1026ejs.md 
	                 arm1136jfs.md arm926ejs.md vfp.md 

Log message:
	Merge from csl-arm-branch.
	
	2004-01-30  Paul Brook  <paul@codesourcery.com>
	
	* aof.h (REGISTER_NAMES): Add vfp reg names
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* aout.h (REGISTER_NAMES): Ditto.
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* arm-protos.h: Update/Add Prototypes.
	* arm.c (init_fp_table): Rename from init_fpa_table. Update users.
	Only allow 0.0 for VFP.
	(fp_consts_inited): Rename from fpa_consts_inited.  Update users.
	(values_fp): Rename from values_fpa.  Update Users.
	(arm_const_double_rtx): Rename from const_double_rtx_ok_for_fpa.
	Update users.  Only check valid constants for this hardware.
	(arm_float_rhs_operand): Rename from fpa_rhs_operand.  Update Users.
	Only allow consts for FPA.
	(arm_float_add_operand): Rename from fpa_add_operand.  Update users.
	Only allow consts for FPA.
	(use_return_insn): Check for saved VFP regs.
	(arm_legitimate_address_p): Handle VFP DFmode addressing.
	(arm_legitimize_address): Ditto.
	(arm_general_register_operand): New function.
	(vfp_mem_operand): New function.
	(vfp_compare_operand): New function.
	(vfp_secondary_reload_class): New function.
	(arm_float_compare_operand): New function.
	(vfp_print_multi): New function.
	(vfp_output_fstmx): New function.
	(vfp_emit_fstm): New function.
	(arm_output_epilogue): Output VPF reg restore code.
	(arm_expand_prologue): Output VFP reg save code.
	(arm_print_operand): Add 'P'.
	(arm_hard_regno_mode_ok): Return modes for VFP regs.
	(arm_regno_class): Return classes for VFP regs.
	(arm_compute_initial_elimination_offset): Include space for VFP regs.
	(arm_get_frame_size): Ditto.
	* arm.h (FIXED_REGISTERS): Add VFP regs.
	(CALL_USED_REGISTERS): Ditto.
	(CONDITIONAL_REGISTER_USAGE): Enable VFP regs.
	(FIRST_VFP_REGNUM): Define.
	(LAST_VFP_REGNUM): Define.
	(IS_VFP_REGNUM): Define.
	(FIRST_PSEUDO_REGISTER): Include VFP regs.
	(HARD_REGNO_NREGS): Handle VFP regs.
	(REG_ALLOC_ORDER): Add VFP regs.
	(enum reg_class): Add VFP_REGS.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	(CANNOT_CHANGE_MODE_CLASS) Handle VFP Regs.
	(REG_CLASS_FROM_LETTER): Add 'w'.
	(EXTRA_CONSTRAINT_ARM): Add 'U'.
	(EXTRA_MEMORY_CONSTRAINT): Define.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Handle VFP regs.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	(REGISTER_MOVE_COST): Ditto.
	(PREDICATE_CODES): Add arm_general_register_operand,
	arm_float_compare_operand and vfp_compare_operand.
	* arm.md (various): Rename as above.
	(divsf3): Enable when TARGET_VFP.
	(divdf3): Ditto.
	(movdfcc): Ditto.
	(sqrtsf2): Ditto.
	(sqrtdf2): Ditto.
	(arm_movdi): Disable when TARGET_VFP.
	(arm_movsi_insn): Ditto.
	(movsi): Only split with general regs.
	(cmpsf): Use arm_float_compare_operand.
	(push_fp_multi): Restrict to TARGET_FPA.
	(vfp.md): Include.
	* vfp.md: New file.
	* fpa.md (various): Rename as above.
	* doc/md.texi: Document ARM w and U constraints.
	
	2004-01-15  Paul Brook  <paul@codesourcery.com>
	
	* config.gcc: Add with_fpu.  Allow with-float=softfp.
	* config/arm/arm.c (arm_override_options): Rename *-s to *s.
	Break out of loop when we find a float-abi.  Fix typo.
	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "fpu".
	Set -mfloat-abi=.
	* doc/install.texi: Document --with-fpu.
	
	2003-01-14  Paul Brook  <paul@codesourcery.com>
	
	* config.gcc (with_arch): Add armv6.
	* config/arm/arm.h: Rename TARGET_CPU_*_s to TARGET_CPU_*s.
	* config/arm/arm.c (arm_overrride_options): Ditto.
	
	2004-01-08  Richard Earnshaw  <rearnsha@arm.com>
	
	* arm.c (FL_ARCH3M): Renamed from FL_FAST_MULT.
	(FL_ARCH6): Renamed from FL_ARCH6J.
	(arm_arch3m): Renamed from arm_fast_multiply.
	(arm_arch6): Renamed from arm_arch6j.
	* arm.h: Update all uses of above.
	* arm-cores.def: Likewise.
	* arm.md: Likewise.
	
	* arm.h (CPP_CPU_ARCH_SPEC): Emit __ARM_ARCH_6J__ define for armV6j,
	not arm6j.  Add entry for arch armv6.
	
	2004-01-07  Richard Earnshaw  <rearnsha@arm.com>
	
	* arm.c (arm_emit_extendsi): Delete.
	* arm-protos.h (arm_emit_extendsi): Delete.
	* arm.md (zero_extendhisi2): Also handle zero-extension of
	non-subregs.
	(zero_extendqisi2, extendhisi2, extendqisi2): Likewise.
	(thumb_zero_extendhisi2): Only match if not v6.
	(arm_zero_extendhisi2, thumb_zero_extendqisi2, arm_zero_extendqisi2)
	(thumb_extendhisi2, arm_extendhisi2, arm_extendqisi)
	(thumb_extendqisi2): Likewise.
	(thumb_zero_extendhisi2_v6, arm_zero_extendhisi2_v6): New patterns.
	(thumb_zero_extendqisi2_v6, arm_zero_extendqisi2_v6): New patterns.
	(thumb_extendhisi2_insn_v6, arm_extendhisi2_v6): New patterns.
	(thumb_extendqisi2_v6, arm_extendqisi_v6): New patterns.
	(arm_zero_extendhisi2_reg, arm_zero_extendqisi2_reg): Delete.
	(arm_extendhisi2_reg, arm_extendqisi2_reg): Delete.
	(arm_zero_extendhisi2addsi): Remove subreg.  Add attributes.
	(arm_zero_extendqisi2addsi, arm_extendhisi2addsi): Likewise.
	(arm_extendqisi2addsi): Likewise.
	
	2003-12-31  Mark Mitchell  <mark@codesourcery.com>
	
	Revert this change:
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.
	
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.
	
	2003-12-30  Mark Mitchell  <mark@codesourcery.com>
	
	* config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept
	CONSTANT_P_RTX.
	
	2003-30-12  Paul Brook  <paul@codesourcery.com>
	
	* longlong.h: protect arm inlines with !defined (__thumb__)
	
	2003-30-12  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Always define __arm__.
	
	2003-12-30  Nathan Sidwell  <nathan@codesourcery.com>
	
	* builtins.c (expand_builtin_apply_args_1): Fix typo in previous
	change.
	
	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>
	
	* builtins.c (expand_builtin_apply_args_1): Add pretend args size
	to the virtual incoming args pointer for downward stacks.
	
	2003-12-29  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm-cores.def: Add cost function.
	* config/arm/arm.c (arm_*_rtx_costs): New functions.
	(arm_rtx_costs): Remove
	(struct processors): Add rtx_costs field.
	(all_cores, all_architectures): Ditto.
	(arm_override_options): Set targetm.rtx_costs.
	(thumb_rtx_costs): New function.
	(arm_rtx_costs_1): Remove cases handled elsewhere.
	* config/arm/arm.h (processor_type): Add COSTS parameter.
	
	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm.md (generic_sched): arm926 has its own scheduler.
	(arm926ejs.md): Include it.
	* config/arm/arm926ejs.md: New pipeline description.
	
	2003-12-24  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (arm_arch6j): New variable.
	(arm_override_options): Set it.
	(arm_emit_extendsi): New function.
	* config/arm/arm-protos.h (arm_emit_extendsi): Add prototype.
	* config/arm/arm.h (arm_arch6j): Declare.
	* config/arm/arm.md: Add sign/zero extend insns.
	
	2003-12-23  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (all_architectures): Add armv6.
	* doc/invoke.texi: Document it.
	
	2003-12-19  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.md: Add load1 and load_byte "type" attrs.  Modify
	insn patterns to match.
	* config/arm/arm-generic.md: Ditto.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/amm/iwmmxt.md: Ditto.
	* config/arm/arm1026ejs.md: Ditto.
	* config/arm/arm1135jfs.md: Ditto.  Add insn_reservation and bypasses
	for 11_loadb.
	
	2003-12-18  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm-protos.h (arm_no_early_alu_shift_value_dep): Declare.
	* config/arm/arm.c (arm_adjust_cost): Check shift cost for
	TYPE_ALU_SHIFT and TYPE_ALU_SHIFT_REG.
	(arm_no_early_store_addr_dep, arm_no_early_alu_shift_dep,
	arm_no_early_mul_dep): Correctly deal with conditional execution,
	parallels and single shift operations.
	(arm_no_early_alu_shift_value_dep): Define.
	* arm.md (attr type): Replace 'normal' with 'alu',
	'alu_shift' and 'alu_shift_reg'.
	(attr core_cycles): Adjust.
	(*addsi3_carryin_shift, andsi_not_shiftsi_si, *arm_shiftsi3,
	*shiftsi3_compare0, *notsi_shiftsi, *notsi_shiftsi_compare0,
	*not_shiftsi_compare0_scratch, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
	*cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
	*arith_shiftsi_compare0_scratch, *sub_shiftsi,
	*sub_shiftsi_compare0, *sub_shiftsi_compare0_scratch,
	*if_shift_move, *if_move_shift, *if_shift_shift): Set type
	attribute appropriately.
	* config/arm/arm1026ejs.md (alu_op): Adjust.
	(alu_shift_op, alu_shift_reg_op): New.
	* config/arm/arm1136.md: Add better bypasses for early
	registers. Remove load[234] and store[234] bypasses.
	(11_alu_op): Adjust.
	(11_alu_shift_op, 11_alu_shift_reg_op): New.
	
	2003-12-15  Nathan Sidwell  <nathan@codesourcery.com>
	
	* config/arm/arm-protos.h (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Declare.
	* config/arm/arm.c (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Define.
	* config/arm/arm1026ejs.md: Add load-store bypass.
	* config/arm/arm1136jfs.md (11_alu_op): Take 2 cycles.
	Add bypasses between instructions.
	
	2003-12-10  Paul Brook  <paul@codesourcery.com>
	
	* config/arm/arm.c (arm_fpu_model): New variable.
	(arm_fload_abi): New variable.
	(target_fpe_name): Rename from target_fp_name.
	(target_fpu_name): New variable.
	(arm_is_cirrus): Remove.
	(fpu_desc): New struct.
	(all_fpus): Define.
	(pf_model_for_fpu): Define.
	(all_loat_abis): Define.
	(arm_override_options): Set fp arch flags based on -mfpu=
	and -float-abi=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(*): Use new TARGET_* flags.
	* config/arm/arm.h (TARGET_ANY_HARD_FLOAT): Remove.
	(TARGET_HARD_FLOAT): No longer implies TARGET_FPA.
	(TARGET_SOFT_FLOAT): Ditto.
	(TARGET_SOFT_FLOAT_ABI): New.
	(TARGET_MAVERICK): Rename from TARGET_CIRRUS.  No longer implies
	TARGET_HARD_FLOAT.
	(TARGET_VFP): No longer implies TARGET_HARD_FLOAT.
	(TARGET_OPTIONS): Add -mfpu=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(arm_pf_model): Define.
	(arm_float_abi_type): Define.
	(fputype): Add FPUTYPE_VFP.  Change SOFT_FPA->NONE
	* config/arm/arm.md: Use new TARGET_* flags.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/arm/elf.h (ASM_SPEC): Pass -mfloat-abi= and -mfpu=.
	* config/arm/semi.h (ASM_SPEC): Ditto.
	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Specify vfp.
	(FPUTYPE_DEFAULT): Set to VFP.
	* doc/invoke.texi: Document -mfpu= and -mfloat-abi=.
	
	2003-11-22  Phil Edwards  <phil@codesourcery.com>
	
	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk):  In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME):  Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.
	
	2003-11-15  Nicolas Pitre <nico@cam.org>
	
	* config/arm/arm.md (ashldi3, arm_ashldi3_1bit, ashrdi3,
	arm_ashrdi3_1bit, lshrdi3, arm_lshrdi3_1bit): New patterns.
	* config/arm/iwmmxt.md (ashrdi3_iwmmxt): Renamed from ashrdi3.
	(lshrdi3_iwmmxt): Renamed from lshrdi3.
	* config/arm/arm.c (IWMMXT_BUILTIN2): Renamed argument accordingly.
	
	2003-11-12  Steve Woodford  <scw@wasabisystems.com>
	Ian Lance Taylor  <ian@wasabisystems.com>
	
	* config/arm/lib1funcs.asm (ARM_DIV_BODY, ARM_MOD_BODY): Add new
	code for __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__).
	
	2003-11-05  Phil Edwards  <phil@codesourcery.com>
	
	* config/arm/arm.md (insn):  Add new V6 instruction names.
	(generic_sched):  New attr.
	* config/arm/arm-generic.md:  Use generic_sched here.
	* config/arm/arm1026ejs.md:  Do not model fetch/issue/decode
	stages of pipeline.  Adjust latency counts accordingly.
	* config/arm/arm1136jfs.md:  New file.
	
	2003-10-28  Mark Mitchell  <mark@codesourcery.com>
	
	* config/arm/arm.h (processor_type): New enumeration type.
	(CPP_ARCH_DEFAULT_SPEC): Set appropriately for ARM 926EJ-S,
	ARM1026EJ-S, ARM1136J-S, and ARM1136JF-S processor cores.
	(CPP_CPU_ARCH_SPEC): Likewise.
	* config/arm/arm.c (arm_tune): New variable.
	(all_cores): Use cores.def.
	(all_architectures): Add representative processor.
	(arm_override_options): Restructure way in which tuning
	information is deduced.
	* arm.md: Update "insn" and "type" attributes throughout.
	(insn): New attribute.
	(type): Compute "mult" from "insn" attribute.  Add load2,
	load3, load4 alternatives.
	(arm automaton): Move to arm-generic.md.
	* config/arm/arm-cores.def: New file.
	* config/arm/arm-generic.md: Likewise.
	* config/arm/arm1026ejs.md: Likewise.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm-cores.def.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm-generic.md.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm1026ejs.md.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm1136jfs.md.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm926ejs.md.diff?cvsroot=gcc&r1=1.1&r2=1.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/vfp.md.diff?cvsroot=gcc&r1=1.1&r2=1.2



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (12 preceding siblings ...)
  2004-02-03 14:45 ` cvs-commit at gcc dot gnu dot org
@ 2004-02-03 16:39 ` pinskia at gcc dot gnu dot org
  2004-02-03 16:50 ` rearnsha at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-02-03 16:39 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-02-03 16:39 -------
Fixed for 3.5.0.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (13 preceding siblings ...)
  2004-02-03 16:39 ` pinskia at gcc dot gnu dot org
@ 2004-02-03 16:50 ` rearnsha at gcc dot gnu dot org
  2004-02-05 16:07 ` cvs-commit at gcc dot gnu dot org
  2004-02-12 17:55 ` ian at wasabisystems dot com
  16 siblings, 0 replies; 18+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2004-02-03 16:50 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rearnsha at gcc dot gnu dot org  2004-02-03 16:50 -------
This is not fixed yet for 3.5 and it's not fixed for 3.4 either.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |
   Target Milestone|3.5.0                       |3.4.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (14 preceding siblings ...)
  2004-02-03 16:50 ` rearnsha at gcc dot gnu dot org
@ 2004-02-05 16:07 ` cvs-commit at gcc dot gnu dot org
  2004-02-12 17:55 ` ian at wasabisystems dot com
  16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-02-05 16:07 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-02-05 16:06 -------
Subject: Bug 12476

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	pbrook@gcc.gnu.org	2004-02-05 16:06:53

Modified files:
	gcc            : ChangeLog calls.c function.h tree.h 
	gcc/config/alpha: alpha.c 
	gcc/config/arm : arm.c arm.h 
	gcc/config/rs6000: rs6000.c 
	gcc/cp         : ChangeLog decl.c method.c 

Log message:
	Backport from mainline.
	
	2003-11-22  Phil Edwards  <phil@codesourcery.com>
	
	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk):  In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME):  Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.
	
	2003-11-05  Mark Mitchell  <mark@codesourcery.com>
	
	* calls.c (initialize_argument_information): Add CALL_FROM_THUNK_P
	parameter.  Use it instead of current_function_is_thunk.
	* function.h (struct function): Update documentation for is_thunk.
	* tree.h (CALL_FROM_THUNK_P): New macro.
	* config/alpha/alpha.c (alpha_sa_mask): Do not check
	no_new_pseudos when testing current_function_is_thunk.
	* config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likeiwse.
	
	cp/
	2003-11-05  Mark Mitchell  <mark@codesourcery.com>
	
	* decl.c (cxx_push_function_context): Do not set
	current_function_is_thunk.
	* method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
	actual function.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.145&r2=2.2326.2.146
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/calls.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.315.2.1&r2=1.315.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.108.4.1&r2=1.108.4.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.458.2.1&r2=1.458.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/alpha/alpha.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.342.4.3&r2=1.342.4.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.317.4.2&r2=1.317.4.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.214.2.1&r2=1.214.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.576.2.5&r2=1.576.2.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.37&r2=1.3892.2.38
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.1174.2.5&r2=1.1174.2.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/method.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.275&r2=1.275.4.1



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug target/12476] ARM/THUMB thunk calls broken
  2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
                   ` (15 preceding siblings ...)
  2004-02-05 16:07 ` cvs-commit at gcc dot gnu dot org
@ 2004-02-12 17:55 ` ian at wasabisystems dot com
  16 siblings, 0 replies; 18+ messages in thread
From: ian at wasabisystems dot com @ 2004-02-12 17:55 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From ian at wasabisystems dot com  2004-02-12 17:55 -------
This has now been fixed on both mainline and the 3.4 branch.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12476


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2004-02-12 17:55 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-01 11:27 [Bug c++/12476] New: ARM/THUMB thunk calls broken thomas at koeller dot dyndns dot org
2003-10-01 17:52 ` [Bug target/12476] " pinskia at gcc dot gnu dot org
2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
2003-10-01 18:31 ` pinskia at gcc dot gnu dot org
2003-10-01 19:19 ` rearnsha at gcc dot gnu dot org
2003-11-23  5:45 ` cvs-commit at gcc dot gnu dot org
2004-01-09  2:47 ` pinskia at gcc dot gnu dot org
2004-01-09 10:25 ` rearnsha at gcc dot gnu dot org
2004-01-14  3:39 ` pinskia at gcc dot gnu dot org
2004-01-14  5:41 ` pinskia at gcc dot gnu dot org
2004-01-14  9:21 ` rearnsha at gcc dot gnu dot org
2004-01-14  9:40 ` pinskia at gcc dot gnu dot org
2004-02-03 14:44 ` cvs-commit at gcc dot gnu dot org
2004-02-03 14:45 ` cvs-commit at gcc dot gnu dot org
2004-02-03 16:39 ` pinskia at gcc dot gnu dot org
2004-02-03 16:50 ` rearnsha at gcc dot gnu dot org
2004-02-05 16:07 ` cvs-commit at gcc dot gnu dot org
2004-02-12 17:55 ` ian at wasabisystems dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).