Patchwork repost, [Patch libobjc] Fix Darwin powerpc m64 breakage.

login
register
mail settings
Submitter Office Admin
Date Aug. 13, 2010, 12:32 p.m.
Message ID <00F91EB0-BBBA-4674-85CA-AFB51AA49DBE@btconnect.com>
Download mbox | patch
Permalink /patch/61680/
State New
Headers show

Comments

Office Admin - Aug. 13, 2010, 12:32 p.m.
Andrew,
A repost after our discussion on irc,
OK for trunk now?
Iain

On 3 Jul 2010, at 11:54, IainS wrote:

> it's nice when 4 lines of code fixes 4 dozen test-suite fails ..
> .. and disappointing that it's probably taken more than 4 years for  
> someone to have time to look ..

Now that the PPC64 ABI is fixed on darwin I'd like to get this in  
too....

> libobjc/Changelog:
>
> 	* encoding.c: Add TARGET_ALIGN_NATURAL definition for m64 powerpc  
> darwin.
> 	Add a comment as to why, update FIXME comments.
>
> testsuite/ChangeLog:
> 	
> 	* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c: Update  
> XFAILs.
>

-  ({ const char *_fields = TYPE_FIELDS  
(STRUCT);                               \
+  ({ const char *_fields = TYPE_FIELDS  
(STRUCT);                       \
    ((_fields !=  
0                                                       \
      && TYPE_MODE (strip_array_types (TREE_TYPE (_fields))) ==  
DFmode)  \
     ? MAX (MAX (COMPUTED, SPECIFIED),  
64)                               \
Index: gcc/testsuite/objc.dg/gnu-encoding/struct-layout- 
encoding-1_generate.c
===================================================================
--- gcc/testsuite/objc.dg/gnu-encoding/struct-layout- 
encoding-1_generate.c      (revision 163223)
+++ gcc/testsuite/objc.dg/gnu-encoding/struct-layout- 
encoding-1_generate.c      (working copy)
@@ -236,7 +236,7 @@ switchfiles (int fields)
        || filecnt == 22)
       {
        fprintf (outfile, "\
-/* { dg-do run { xfail powerpc*-*-darwin* powerpc*-*-aix* } } */\n\
+/* { dg-do run { xfail { { \"powerpc*-*-darwin*\" && { ! lp64 } } ||  
{ \"powerpc*-*-aix*\" } } } } */\n\
  /* { dg-options \"-w -I%s -fgnu-runtime\" } */\n", srcdir);
       }
    /* FIXME: these should not be xfailed but they are because
Andrew Pinski - Aug. 27, 2010, 6:14 p.m.
On Fri, Aug 13, 2010 at 5:32 AM, Office Admin <admin-sal@btconnect.com> wrote:
> Andrew,
> A repost after our discussion on irc,
> OK for trunk now?

Yes this is ok.

Thanks,
Andrew Pinski
IainS - Sept. 6, 2010, 9:29 a.m.
On 27 Aug 2010, at 19:14, Andrew Pinski wrote:

> On Fri, Aug 13, 2010 at 5:32 AM, Office Admin <admin- 
> sal@btconnect.com> wrote:
>> Andrew,
>> A repost after our discussion on irc,
>> OK for trunk now?
>
> Yes this is ok.

r163906.
Iain

Patch

Index: libobjc/encoding.c
===================================================================
--- libobjc/encoding.c  (revision 163223)
+++ libobjc/encoding.c  (working copy)
@@ -105,13 +105,24 @@  static int __attribute__ ((__unused__)) not_target
  #undef ALTIVEC_VECTOR_MODE
  #define ALTIVEC_VECTOR_MODE(MODE) (0)

+/* Furthermore, some (powerpc) targets also use TARGET_ALIGN_NATURAL
+ in their alignment macros. Currently[4.5/6], rs6000.h points this
+ to a static variable, initialized by target overrides. This is reset
+ in linux64.h but not in darwin64.h.  The macro is not used by *86*.   
*/

+#if __MACH__ && __LP64__
+# undef TARGET_ALIGN_NATURAL
+# define TARGET_ALIGN_NATURAL 1
+#endif
+
  /*  FIXME: while this file has no business including tm.h, this
      definitely has no business defining this macro but it
      is only way around without really rewritting this file,
-    should look after the branch of 3.4 to fix this.  */
+    should look after the branch of 3.4 to fix this.
+    FIXME1: It's also out of date, darwin no longer has the same  
alignment
+    'special' as aix - this is probably the origin of the m32  
breakage.  */
  #define rs6000_special_round_type_align(STRUCT, COMPUTED,  
SPECIFIED)   \