new file mode 100644
@@ -0,0 +1,16 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+
+void lspf2lpc();
+
+void interpolate_lpc(int subframe_num) {
+ float weight = 0.25 * subframe_num + 1;
+ if (weight)
+ lspf2lpc();
+}
+
+void qcelp_decode_frame() {
+ int i;
+ for (;; i++)
+ interpolate_lpc(i);
+}
new file mode 100644
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+
+void lspf2lpc();
+
+int interpolate_lpc_q_0;
+
+void
+interpolate_lpc(int subframe_num) {
+ float weight;
+ if (interpolate_lpc_q_0)
+ weight = subframe_num;
+ else
+ weight = 1.0;
+ if (weight != 1.0)
+ lspf2lpc();
+}
+
+void
+qcelp_decode_frame() {
+ int i;
+ for (;; i++)
+ interpolate_lpc(i);
+}
@@ -1057,6 +1057,13 @@ irange::verify_range ()
return;
}
gcc_checking_assert (m_num_ranges <= m_max_ranges);
+
+ // Legacy allowed these to represent VARYING for unknown types.
+ // Leave this in for now, until all users are converted. Eventually
+ // we should abort in set_varying.
+ if (m_kind == VR_VARYING && m_type == error_mark_node)
+ return;
+
unsigned prec = TYPE_PRECISION (m_type);
if (m_kind == VR_VARYING)
{