// { dg-options "-fgnu-tm -std=c++14 -O2" } void unsafe(); struct A { virtual void f() transaction_safe_dynamic; }; struct B:A { void f() { unsafe(); } }; void f() transaction_safe { B b; A& ar = b; // This is undefined behavior, we want to give an error with // devirtualization. ar.f(); // { dg-error "unsafe" } }