Author: asl Date: Sun Jul 15 16:57:06 2007 New Revision: 39881 URL: http://llvm.org/viewvc/llvm-project?rev=39881&view=rev Log: Another bunch of fixes here and there.
Modified: llvm-gcc-4-2/trunk/gcc/fold-const.c llvm-gcc-4-2/trunk/gcc/llvm-convert.cpp llvm-gcc-4-2/trunk/gcc/tree-inline.c llvm-gcc-4-2/trunk/gcc/tree.c llvm-gcc-4-2/trunk/gcc/varasm.c Modified: llvm-gcc-4-2/trunk/gcc/fold-const.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4-2/trunk/gcc/fold-const.c?rev=39881&r1=39880&r2=39881&view=diff ============================================================================== --- llvm-gcc-4-2/trunk/gcc/fold-const.c (original) +++ llvm-gcc-4-2/trunk/gcc/fold-const.c Sun Jul 15 16:57:06 2007 @@ -12935,7 +12935,14 @@ { if ((TREE_CODE (exp) == INDIRECT_REF || TREE_CODE (exp) == ARRAY_REF) - && TREE_CODE (TREE_TYPE (exp)) == INTEGER_TYPE) + && TREE_CODE (TREE_TYPE (exp)) == INTEGER_TYPE && +/* LLVM LOCAL begin */ +#if ENABLE_LLVM + /* LLVM extends ARRAY_REF to allow pointers to be the base value. */ + (TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == ARRAY_TYPE) +#endif +/* LLVM LOCAL end */ + ) { tree exp1 = TREE_OPERAND (exp, 0); tree index; Modified: llvm-gcc-4-2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4-2/trunk/gcc/llvm-convert.cpp?rev=39881&r1=39880&r2=39881&view=diff ============================================================================== --- llvm-gcc-4-2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4-2/trunk/gcc/llvm-convert.cpp Sun Jul 15 16:57:06 2007 @@ -676,8 +676,8 @@ // As it turns out, not all temporaries are associated with blocks. For those // that aren't, emit them now. for (tree t = cfun->unexpanded_var_list; t; t = TREE_CHAIN(t)) { - assert(!DECL_LLVM_SET_P(TREE_VALUE(t)) && "var already emitted?"); - EmitAutomaticVariableDecl(TREE_VALUE(t)); + if (!DECL_LLVM_SET_P(TREE_VALUE(t))) + EmitAutomaticVariableDecl(TREE_VALUE(t)); } // Create a new block for the return node, but don't insert it yet. Modified: llvm-gcc-4-2/trunk/gcc/tree-inline.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4-2/trunk/gcc/tree-inline.c?rev=39881&r1=39880&r2=39881&view=diff ============================================================================== --- llvm-gcc-4-2/trunk/gcc/tree-inline.c (original) +++ llvm-gcc-4-2/trunk/gcc/tree-inline.c Sun Jul 15 16:57:06 2007 @@ -2633,7 +2633,13 @@ /* The new variable/label has no RTL, yet. */ if (CODE_CONTAINS_STRUCT (TREE_CODE (copy), TS_DECL_WRTL) && !TREE_STATIC (copy) && !DECL_EXTERNAL (copy)) - SET_DECL_RTL (copy, NULL_RTX); + /* LLVM LOCAL begin */ +#ifdef ENABLE_LLVM + SET_DECL_LLVM (copy, 0); +#else + SET_DECL_RTL (copy, NULL_RTX); +#endif + /* LLVM_LOCAL end */ /* These args would always appear unused, if not for this. */ TREE_USED (copy) = 1; @@ -2823,6 +2829,8 @@ /* Generate a new name for the new version. */ if (!update_clones) DECL_NAME (new_decl) = create_tmp_var_name (NULL); + /* LLVM LOCAL begin */ + #ifndef ENABLE_LLVM /* Create a new SYMBOL_REF rtx for the new name. */ if (DECL_RTL (old_decl) != NULL) { @@ -2831,7 +2839,9 @@ gen_rtx_SYMBOL_REF (GET_MODE (XEXP (DECL_RTL (old_decl), 0)), IDENTIFIER_POINTER (DECL_NAME (new_decl))); } - + #endif + /* LLVM LOCAL end */ + /* Prepare the data structures for the tree copy. */ memset (&id, 0, sizeof (id)); Modified: llvm-gcc-4-2/trunk/gcc/tree.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4-2/trunk/gcc/tree.c?rev=39881&r1=39880&r2=39881&view=diff ============================================================================== --- llvm-gcc-4-2/trunk/gcc/tree.c (original) +++ llvm-gcc-4-2/trunk/gcc/tree.c Sun Jul 15 16:57:06 2007 @@ -7067,6 +7067,14 @@ if (TREE_CODE (idx) != INTEGER_CST) return false; + /* LLVM LOCAL begin */ +#if ENABLE_LLVM + /* LLVM extends ARRAY_REF to allow pointers to be the base value. */ + if (TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) != ARRAY_TYPE) + return false; +#endif + /* LLVM LOCAL end */ + min = array_ref_low_bound (ref); max = array_ref_up_bound (ref); if (!min @@ -7089,6 +7097,15 @@ bool range_in_array_bounds_p (tree ref) { + /* LLVM LOCAL begin */ +#if ENABLE_LLVM + /* LLVM extends ARRAY_REF to allow pointers to be the base value. */ + if (TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) != ARRAY_TYPE) + return false; + else { +#endif + /* LLVM LOCAL end */ + tree domain_type = TYPE_DOMAIN (TREE_TYPE (ref)); tree range_min, range_max, min, max; @@ -7113,6 +7130,11 @@ return false; return true; + /* LLVM LOCAL begin */ +#if ENABLE_LLVM + } +#endif + /* LLVM LOCAL end */ } /* Return true if T (assumed to be a DECL) is a global variable. */ Modified: llvm-gcc-4-2/trunk/gcc/varasm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4-2/trunk/gcc/varasm.c?rev=39881&r1=39880&r2=39881&view=diff ============================================================================== --- llvm-gcc-4-2/trunk/gcc/varasm.c (original) +++ llvm-gcc-4-2/trunk/gcc/varasm.c Sun Jul 15 16:57:06 2007 @@ -5171,6 +5171,11 @@ #ifdef ENABLE_LLVM { tree target_decl; + if (lookup_attribute ("weakref", DECL_ATTRIBUTES (p->decl))) + { + ultimate_transparent_alias_target (&p->target); + } + target_decl = find_decl_and_mark_needed (p->decl, p->target); emit_alias_to_llvm(p->decl, p->target, target_decl); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits