diff --git a/src/operator.rs b/src/operator.rs
index 538f4125c6ea63b7ca5e171cdff625cc822b7faf..6292095ccd0b0707d29c37bf920e4c4ba45624e2 100644
--- a/src/operator.rs
+++ b/src/operator.rs
@@ -60,7 +60,13 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
     ) -> EvalResult<'tcx, bool> {
         let (val, overflowed) = self.binop_with_overflow(op, left, right)?;
         self.write_primval(dest, val, dest_ty)?;
-        Ok(overflowed.to_bool()?)
+        if overflowed.is_concrete() {
+            Ok(overflowed.to_bool()?)
+        } else {
+            // keeps the old behavior of ignoring overflow for symbolic ops
+            // this works because the return value is never used
+            Ok(false)
+        }
     }
 }