Patchwork [ARM] require 64-bit hw-int for all arm targets

login
register
mail settings
Submitter Richard Earnshaw
Date July 30, 2013, 3:59 p.m.
Message ID <51F7E2F6.8000509@arm.com>
Download mbox | patch
Permalink /patch/263441/
State New
Headers show

Comments

Richard Earnshaw - July 30, 2013, 3:59 p.m.
Most arm target configs now require a 64-bit HW-int.  Unfortunately a 
few of the older, less commonly used config targets do not.  The code in 
arm.c now pretty much requires that a 64-bit HW-int is used, especially 
for vectorization to work.

This patch makes 64-bit HW-int the default for all arm configs and 
cleans up the configure script accordingly.

	* config.gcc (arm): Require 64-bit host-wide-int for all ARM
	target configs.

R.
Joseph S. Myers - Aug. 7, 2013, 12:25 a.m.
On Tue, 30 Jul 2013, Richard Earnshaw wrote:

> Most arm target configs now require a 64-bit HW-int.  Unfortunately a few of
> the older, less commonly used config targets do not.  The code in arm.c now
> pretty much requires that a 64-bit HW-int is used, especially for
> vectorization to work.
> 
> This patch makes 64-bit HW-int the default for all arm configs and cleans up
> the configure script accordingly.
> 
> 	* config.gcc (arm): Require 64-bit host-wide-int for all ARM
> 	target configs.

The configuration in libcpp/configure.ac of which targets need 64-bit 
HOST_WIDE_INT always needs to be kept in sync with that in gcc/config.gcc.

Patch

--- gcc/config.gcc	(revision 201327)
+++ gcc/config.gcc	(local)
@@ -330,6 +330,7 @@  arm*-*-*)
 	target_type_format_char='%'
 	c_target_objs="arm-c.o"
 	cxx_target_objs="arm-c.o"
+	need_64bit_hwint=yes
 	extra_options="${extra_options} arm/arm-tables.opt"
 	;;
 avr-*-*)
@@ -943,10 +944,6 @@  arm*-*-linux-*)			# ARM GNU/Linux with E
 	    tmake_file="$tmake_file arm/t-linux-androideabi"
 	    ;;
 	esac
-  	# The BPABI long long divmod functions return a 128-bit value in
-	# registers r0-r3.  Correctly modeling that requires the use of
-	# TImode.
-	need_64bit_hwint=yes
 	# The EABI requires the use of __cxa_atexit.
 	default_use_cxa_atexit=yes
 	with_tls=${with_tls:-gnu}
@@ -955,10 +952,6 @@  arm*-*-uclinux*eabi*)		# ARM ucLinux
 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
 	tmake_file="arm/t-arm arm/t-arm-elf arm/t-bpabi"
 	tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h vxworks-dummy.h arm/arm.h"
-	# The BPABI long long divmod functions return a 128-bit value in
-	# registers r0-r3.  Correctly modeling that requires the use of
-	# TImode.
-	need_64bit_hwint=yes
 	# The EABI requires the use of __cxa_atexit.
 	default_use_cxa_atexit=yes
 	;;
@@ -967,10 +960,6 @@  arm*-*-eabi* | arm*-*-symbianelf* | arm*
 	arm*eb-*-eabi*)
 	  tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
 	esac
-	# The BPABI long long divmod functions return a 128-bit value in
-	# registers r0-r3.  Correctly modeling that requires the use of
-	# TImode.
-	need_64bit_hwint=yes
 	default_use_cxa_atexit=yes
 	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
 	tmake_file="arm/t-arm arm/t-arm-elf"