diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1d20459bc7a8290537701bef3709c904542cd1c3..b7b72dabccfc1eeba3602a7b52bae8e7d7262bc0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b1e9bc39f0871156dd41171d3adbf979bec83355..0c2e465b6ca5a9961c7368241fcceb87cbb034d9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 466e320d431c7539a9614e4abf6ad28f6b921497..2a2c78f9fb25e96f1d9cdcfb490669efe446ea9d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -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 ();
 }
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index c224fd9a3f8a9a734e9692f5e28dd2b4bf12bfa1..3789e30449d9a6e3d72e21c8ea30af22de8758f3 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -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);