diff mbox

[SH,committed] Fix usage of __SHMEDIA__ in libgcc

Message ID 1417374502.3387.72.camel@yam-132-YW-E178-FTW
State New
Headers show

Commit Message

Oleg Endo Nov. 30, 2014, 7:08 p.m. UTC
Hi,

In libgcc/lib1funcs.S the usage of the __SHMEDIA__ macro seems to
mismatch the setup in sh/sh-c.c (sh_cpu_cpp_builtins).  __SHMEDIA__ is
always defined when building for SH5 / SH64, even when the subtarget is
SHcompact.  Thus, when building for SHcompact testing '#ifdef
__SHMEDIA__' will result in the wrong answer and try to compile SHmedia
code which doesn't work.  Testing the value of __SHMEDIA__ seems to fix
the issue.
Tested with 'make all' for sh-elf and sh64-elf, which builds various
multilib versions of libgcc.  Committed as r218190.

Cheers,
Oleg

libgcc/ChangeLog:
	* config/sh/lib1funcs.S: Check value of __SHMEDIA__ instead of checking
	whether it's defined.

Comments

Oleg Endo Dec. 9, 2014, 10:52 p.m. UTC | #1
On Sun, 2014-11-30 at 20:08 +0100, Oleg Endo wrote:
> Hi,
> 
> In libgcc/lib1funcs.S the usage of the __SHMEDIA__ macro seems to
> mismatch the setup in sh/sh-c.c (sh_cpu_cpp_builtins).  __SHMEDIA__ is
> always defined when building for SH5 / SH64, even when the subtarget is
> SHcompact.  Thus, when building for SHcompact testing '#ifdef
> __SHMEDIA__' will result in the wrong answer and try to compile SHmedia
> code which doesn't work.  Testing the value of __SHMEDIA__ seems to fix
> the issue.
> Tested with 'make all' for sh-elf and sh64-elf, which builds various
> multilib versions of libgcc.  Committed as r218190.
> 
> Cheers,
> Oleg
> 
> libgcc/ChangeLog:
> 	* config/sh/lib1funcs.S: Check value of __SHMEDIA__ instead of checking
> 	whether it's defined.

Turns out there was already a PR 55351 for that.
Committed to 4.9 (r218544) and 4.8 (r218545).

Cheers,
Oleg
diff mbox

Patch

Index: libgcc/config/sh/lib1funcs.S
===================================================================
--- libgcc/config/sh/lib1funcs.S	(revision 218189)
+++ libgcc/config/sh/lib1funcs.S	(working copy)
@@ -1278,7 +1278,7 @@ 
 #endif
 	ENDFUNC(GLOBAL(sdivsi3_2))
 #endif
-#elif defined __SHMEDIA__
+#elif __SHMEDIA__
 /* m5compact-nofpu */
  // clobbered: r18,r19,r20,r21,r25,tr0,tr1,tr2
 	.mode	SHmedia
@@ -1683,7 +1683,7 @@ 
  add.l r18,r25,r0
  blink tr0,r63
 #endif
-#elif defined (__SHMEDIA__)
+#elif __SHMEDIA__
 /* m5compact-nofpu - more emphasis on code size than on speed, but don't
    ignore speed altogether - div1 needs 9 cycles, subc 7 and rotcl 4.
    So use a short shmedia loop.  */
@@ -1707,7 +1707,7 @@ 
  bnei r25,-32,tr1
  add.l r20,r63,r0
  blink tr2,r63
-#else /* ! defined (__SHMEDIA__) */
+#else /* ! __SHMEDIA__ */
 LOCAL(div8):
  div1 r5,r4
 LOCAL(div7):
@@ -1773,7 +1773,7 @@ 
 #endif /* L_udivsi3 */
 
 #ifdef L_udivdi3
-#ifdef __SHMEDIA__
+#if __SHMEDIA__
 	.mode	SHmedia
 	.section	.text..SHmedia32,"ax"
 	.align	2
@@ -1901,7 +1901,7 @@ 
 #endif /* L_udivdi3 */
 
 #ifdef L_divdi3
-#ifdef __SHMEDIA__
+#if __SHMEDIA__
 	.mode	SHmedia
 	.section	.text..SHmedia32,"ax"
 	.align	2
@@ -1925,7 +1925,7 @@ 
 #endif /* L_divdi3 */
 
 #ifdef L_umoddi3
-#ifdef __SHMEDIA__
+#if __SHMEDIA__
 	.mode	SHmedia
 	.section	.text..SHmedia32,"ax"
 	.align	2
@@ -2054,7 +2054,7 @@ 
 #endif /* L_umoddi3 */
 
 #ifdef L_moddi3
-#ifdef __SHMEDIA__
+#if __SHMEDIA__
 	.mode	SHmedia
 	.section	.text..SHmedia32,"ax"
 	.align	2
@@ -3142,7 +3142,7 @@ 
 
 #ifdef L_div_table
 #if __SH5__
-#if defined(__pic__) && defined(__SHMEDIA__)
+#if defined(__pic__) && __SHMEDIA__
 	.global	GLOBAL(sdivsi3)
 	FUNC(GLOBAL(sdivsi3))
 #if __SH5__ == 32
@@ -3215,7 +3215,7 @@ 
 #else /* ! __pic__ || ! __SHMEDIA__ */
 	.section	.rodata
 #endif /* __pic__ */
-#if defined(TEXT_DATA_BUG) && defined(__pic__) && defined(__SHMEDIA__)
+#if defined(TEXT_DATA_BUG) && defined(__pic__) && __SHMEDIA__
 	.balign 2
 	.type	Local_div_table,@object
 	.size	Local_div_table,128