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