[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