re PR tree-optimization/63841 (Incorrect strlen optimization after complete unroll)

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc:
	PR tree-optimization/63841
	* tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers.

2014-11-13  Teresa Johnson  <tejohnson@google.com>

gcc/testsuite:
	PR tree-optimization/63841
	* g++.dg/tree-ssa/pr63841.C: Remove prints, use abort.

From-SVN: r217537
This commit is contained in:
Teresa Johnson 2014-11-14 06:35:35 +00:00 committed by Teresa Johnson
parent ca3d99a632
commit 5004bd0026
4 changed files with 23 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841
* tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers.
2014-11-14 Bin Cheng <bin.cheng@arm.com>
* timevar.def (TV_SCHED_FUSION): New time var.
@ -103,6 +108,11 @@
* ipa-profile.c: Likewise.
* tree-ssa-loop-ivcanon.c: Fix typo in comments and debugging dumps.
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841
* tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers.
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841

View File

@ -1,3 +1,8 @@
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841
* g++.dg/tree-ssa/pr63841.C: Remove prints, use abort.
2014-11-14 Bin Cheng <bin.cheng@arm.com>
* gcc.target/arm/ldrd-strd-pair-1.c: New test.
@ -8,6 +13,11 @@
PR debug/63581
* g++.dg/tree-prof/pr63581.C: New test.
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841
* g++.dg/tree-ssa/pr63841.C: Remove prints, use abort.
2014-11-13 Teresa Johnson <tejohnson@google.com>
PR tree-optimization/63841

View File

@ -1,7 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
#include <cstdio>
#include <string>
std::string __attribute__ ((noinline)) comp_test_write() {
@ -29,10 +28,8 @@ std::string __attribute__ ((noinline)) comp_test_write_good() {
int main() {
std::string good = comp_test_write_good();
printf("expected: %hx\n", *(short*)good.c_str());
std::string bad = comp_test_write();
printf("got: %hx\n", *(short*)bad.c_str());
return good != bad;
if (good != bad)
__builtin_abort ();
}

View File

@ -1934,7 +1934,7 @@ strlen_optimize_stmt (gimple_stmt_iterator *gsi)
break;
}
}
else if (is_gimple_assign (stmt))
else if (is_gimple_assign (stmt) && !gimple_clobber_p (stmt))
{
tree lhs = gimple_assign_lhs (stmt);