+2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ipa/83983
+ * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
+ arguments if they are comparable.
+
2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/84634
{
if (!types_same_for_odr (t1, t2, true))
return false;
- /* Limit recursion: If subtypes are ODR types and we know
- that they are same, be happy. */
- if (!odr_type_p (t1) || !get_odr_type (t1, true)->odr_violated)
+ /* Limit recursion: if subtypes are ODR types and we know that they are
+ same, be happy. We need to call get_odr_type on both subtypes since
+ we don't know which among t1 and t2 defines the common ODR type and
+ therefore which call will report the ODR violation, if any. */
+ if (!odr_type_p (t1)
+ || !odr_type_p (t2)
+ || (!get_odr_type (t1, true)->odr_violated
+ && !get_odr_type (t2, true)->odr_violated))
return true;
}