Author: evancheng
Date: Tue Jan 22 20:49:24 2008
New Revision: 46271

URL: http://llvm.org/viewvc/llvm-project?rev=46271&view=rev
Log:
Need to call init_regs() from backend_init() to ensure TYPE_MODE for 
user-defined vector types are set up correctly; remove the workaround from 
i386.c.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
    llvm-gcc-4.2/trunk/gcc/toplev.c

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46271&r1=46270&r2=46271&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Tue Jan 22 20:49:24 2008
@@ -3270,16 +3270,9 @@
                   int offset = tree_low_cst (BINFO_OFFSET (base_binfo), 0) * 8;
                   tree type = BINFO_TYPE (base_binfo);
 
-/* LLVM local */
-#ifdef ENABLE_LLVM
-                  num = classify_argument (type_natural_mode (type),
-                                           type, subclasses,
-                                           (offset + bit_offset) % 256);
-#else                   
                   num = classify_argument (TYPE_MODE (type),
                                            type, subclasses,
                                            (offset + bit_offset) % 256);
-#endif
                   if (!num)
                     return 0;
                   for (i = 0; i < num; i++)
@@ -3315,18 +3308,10 @@
                    }
                  else
                    {
-/* LLVM local */
-#ifdef ENABLE_LLVM
-                     num = classify_argument (type_natural_mode (TREE_TYPE 
(field)),
-                                              TREE_TYPE (field), subclasses,
-                                              (int_bit_position (field)
-                                               + bit_offset) % 256);
-#else
                      num = classify_argument (TYPE_MODE (TREE_TYPE (field)),
                                               TREE_TYPE (field), subclasses,
                                               (int_bit_position (field)
                                                + bit_offset) % 256);
-#endif
                      if (!num)
                        return 0;
                      for (i = 0; i < num; i++)
@@ -3345,14 +3330,8 @@
          /* Arrays are handled as small records.  */
          {
            int num;
-/* LLVM local */
-#ifdef ENABLE_LLVM
-           num = classify_argument (type_natural_mode (TREE_TYPE (type)),
-                                    TREE_TYPE (type), subclasses, bit_offset);
-#else
            num = classify_argument (TYPE_MODE (TREE_TYPE (type)),
                                     TREE_TYPE (type), subclasses, bit_offset);
-#endif
            if (!num)
              return 0;
 
@@ -3384,16 +3363,9 @@
                  if (TREE_TYPE (field) == error_mark_node)
                    continue;
 
-/* LLVM local */
-#ifdef ENABLE_LLVM
-                 num = classify_argument (type_natural_mode (TREE_TYPE 
(field)),
-                                          TREE_TYPE (field), subclasses,
-                                          bit_offset);
-#else
                  num = classify_argument (TYPE_MODE (TREE_TYPE (field)),
                                           TREE_TYPE (field), subclasses,
                                           bit_offset);
-#endif
                  if (!num)
                    return 0;
                  for (i = 0; i < num; i++)

Modified: llvm-gcc-4.2/trunk/gcc/toplev.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/toplev.c?rev=46271&r1=46270&r2=46271&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/toplev.c (original)
+++ llvm-gcc-4.2/trunk/gcc/toplev.c Tue Jan 22 20:49:24 2008
@@ -2052,6 +2052,9 @@
 
   /* LLVM LOCAL begin */
 #ifdef ENABLE_LLVM
+  /* note: stor-layout.c:layout_type() uses have_regs_of_mode[] to initialize
+     TYPE_MODE field for user specified vector types. */
+  init_regs ();
   /* note: we need init_emit_once above to initialize ptr_mode and friends. */
   llvm_initialize_backend();
   return;


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to