------- Comment #22 from rguenth at gcc dot gnu dot org 2006-05-08 10:07 ------- Doesn't really work, it misses support for STRING_CST. See PR22303.
static const char *foo = "?"; char foobar () { return foo[0]; } Something like the following should fix it (once fold_read_from_constant_string is fixed): Index: tree-ssa-ccp.c =================================================================== *** tree-ssa-ccp.c (revision 113606) --- tree-ssa-ccp.c (working copy) *************** fold_const_aggregate_ref (tree t) *** 1011,1020 **** } if (ctor == NULL_TREE ! || TREE_CODE (ctor) != CONSTRUCTOR || !TREE_STATIC (ctor)) return NULL_TREE; /* Get the index. If we have an SSA_NAME, try to resolve it with the current lattice value for the SSA_NAME. */ idx = TREE_OPERAND (t, 1); --- 1011,1024 ---- } if (ctor == NULL_TREE ! || TREE_CODE (ctor) != CONSTRUCTOR || !TREE_STATIC (ctor)) return NULL_TREE; /* Get the index. If we have an SSA_NAME, try to resolve it with the current lattice value for the SSA_NAME. */ idx = TREE_OPERAND (t, 1); --- 1011,1024 ---- } if (ctor == NULL_TREE ! || (TREE_CODE (ctor) != CONSTRUCTOR ! && TREE_CODE (ctor) != STRING_CST) || !TREE_STATIC (ctor)) return NULL_TREE; + if (TREE_CODE (ctor) == STRING_CST) + return fold_read_from_constant_string (t); + /* Get the index. If we have an SSA_NAME, try to resolve it with the current lattice value for the SSA_NAME. */ idx = TREE_OPERAND (t, 1); -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- OtherBugsDependingO| |22303 nThis| | Status|RESOLVED |REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14841