// { dg-do compile { target c++2a } }

constexpr void
cleanup (int *x)
{
  if (x)
    asm ("");		// { dg-error "inline assembly is not a constant expression" }
}			// { dg-message "only unevaluated inline assembly is allowed in a 'constexpr' function" "" { target *-*-* } .-1 }

constexpr void
cleanup2 (int *x)
{
}

constexpr bool
foo ()
{
  int a __attribute__((cleanup (cleanup))) = 1;
  return true;
} // { dg-message "in 'constexpr' expansion of" }

constexpr bool
bar ()
{
  int a __attribute__((cleanup (cleanup2))) = 1;
  return true;
}

constexpr auto x = foo ();	// { dg-message "in 'constexpr' expansion of" }
constexpr auto y = bar ();
