[llvm-commits] [llvm-gcc-4.2] r128619 - /llvm-gcc-4.2/trunk/gcc/fold-const.c

Bill Wendling isanbard at gmail.com
Thu Mar 31 01:07:09 PDT 2011


Author: void
Date: Thu Mar 31 03:07:09 2011
New Revision: 128619

URL: http://llvm.org/viewvc/llvm-project?rev=128619&view=rev
Log:
Our old friend "array ref with pointer base". The "fold_binary" function is
trying to fold a "ptr + 0" into something simple. The "tree_expr_nonzero_p"
function says that "&ptr[0]" is non-zero, which is correct only if ptr is an
array.
PR9571

Modified:
    llvm-gcc-4.2/trunk/gcc/fold-const.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=128619&r1=128618&r2=128619&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/fold-const.c (original)
+++ llvm-gcc-4.2/trunk/gcc/fold-const.c Thu Mar 31 03:07:09 2011
@@ -12839,11 +12839,21 @@
 
    case ADDR_EXPR:
       {
-	tree base = get_base_address (TREE_OPERAND (t, 0));
+        tree targ0 = TREE_OPERAND (t, 0);
+	tree base = get_base_address (targ0);
 
 	if (!base)
 	  return false;
 
+        /* LLVM LOCAL begin */
+#ifdef ENABLE_LLVM
+        /* Support the "array ref with pointer base" extension. */
+        if (TREE_CODE (targ0) == ARRAY_REF &&
+            TREE_CODE (TREE_TYPE (TREE_OPERAND(targ0, 0))) != ARRAY_TYPE)
+          return false;
+#endif
+        /* LLVM LOCAL end */
+
 	/* Weak declarations may link to NULL.  */
 	if (VAR_OR_FUNCTION_DECL_P (base))
 	  return !DECL_WEAK (base);





More information about the llvm-commits mailing list