/* Functional tests for the "target" attribute and pragma.  */

/* { dg-do compile } */
/* { dg-require-effective-target target_attribute } */
/* { dg-options "-O3 -march=zEC12 -mno-htm -fno-ipa-icf -save-temps" } */

#pragma GCC target("htm")
void p1(void)
{
#ifndef __HTM__
#error __HTM__ is not defined
#endif
  __builtin_tend ();
}
#pragma GCC reset_options

#pragma GCC target("no-htm")
void p0(void)
{
#ifdef __HTM__
#error __HTM__ is defined
#endif
  __builtin_tend (); /* { dg-error "is not supported without '-mhtm'" } */
}
#pragma GCC reset_options

__attribute__ ((target("htm")))
void a1(void)
{
#ifdef __HTM__
#error __HTM__ is defined
#endif
  __builtin_tend ();
}

__attribute__ ((target("no-htm")))
void a0(void)
{
#ifdef __HTM__
#error __HTM__ is defined
#endif
  __builtin_tend (); /* { dg-error "is not supported without '-mhtm'" } */
}

void htmd(void)
{
#ifdef __HTM__
#error __HTM__ is defined
#endif
  __builtin_tend (); /* { dg-error "is not supported without '-mhtm'" } */
}