--- /dev/null
+/* { dg-additional-options "-fcompare-debug" } */
+/* PR tree-optimization/116156 */
+
+/* Forwprop used to delete an unused statement
+ but only with debug statements around. */
+
+struct jpeg_compress_struct {
+ int X_density;
+};
+void gg();
+int h(const char*,const char*) __attribute((pure));
+int h1(const char*) __attribute((pure));
+int f1() __attribute__((returns_twice));
+void real_save_jpeg(char **keys, char *values) {
+ struct jpeg_compress_struct cinfo;
+ int x_density = 0;
+ while (*keys)
+ {
+ if (h1(*keys) == 0)
+ gg();
+ if (h1(*keys) == 0) {
+ if (!*values)
+ x_density = -1;
+ if (x_density <= 0)
+ gg();
+ }
+ }
+ if (f1())
+ cinfo.X_density = x_density;
+}
tree val = fwprop_ssa_val (use);
if (val && val != use)
{
- bitmap_set_bit (simple_dce_worklist, SSA_NAME_VERSION (use));
+ if (!is_gimple_debug (stmt))
+ bitmap_set_bit (simple_dce_worklist, SSA_NAME_VERSION (use));
if (may_propagate_copy (use, val))
{
propagate_value (usep, val);
if (gimple_cond_true_p (cond)
|| gimple_cond_false_p (cond))
cfg_changed = true;
- /* Queue old uses for simple DCE. */
- for (tree use : uses)
- if (TREE_CODE (use) == SSA_NAME
- && !SSA_NAME_IS_DEFAULT_DEF (use))
- bitmap_set_bit (simple_dce_worklist,
- SSA_NAME_VERSION (use));
+ /* Queue old uses for simple DCE if not debug statement. */
+ if (!is_gimple_debug (stmt))
+ for (tree use : uses)
+ if (TREE_CODE (use) == SSA_NAME
+ && !SSA_NAME_IS_DEFAULT_DEF (use))
+ bitmap_set_bit (simple_dce_worklist,
+ SSA_NAME_VERSION (use));
}
if (changed || substituted_p)