1  #pragma omp error asdf				/* { dg-error "expected 'at', 'severity' or 'message' clause" } */
       2  #pragma omp error at				/* { dg-error "expected '\\\(' before end of line" } */
       3  #pragma omp error at(				/* { dg-error "expected 'execution' or 'compilation'" } */
       4  						/* { dg-error "expected '\\\)' before end of line" "" { target *-*-* } .-1 } */
       5  #pragma omp error at(runtime)			/* { dg-error "expected 'execution' or 'compilation'" } */
       6  #pragma omp error at(+				/* { dg-error "expected 'execution' or 'compilation'" } */
       7  						/* { dg-error "expected '\\\)' before '\\\+' token" "" { target *-*-* } .-1 } */
       8  #pragma omp error at(compilation		/* { dg-error "expected '\\\)' before end of line" } */
       9  						/* { dg-error "'pragma omp error' encountered" "" { target *-*-* } .-1 } */
      10  #pragma omp error severity			/* { dg-error "expected '\\\(' before end of line" } */
      11  #pragma omp error severity(			/* { dg-error "expected 'warning' or 'fatal'" } */
      12  						/* { dg-error "expected '\\\)' before end of line" "" { target *-*-* } .-1 } */
      13  #pragma omp error severity(error)		/* { dg-error "expected 'warning' or 'fatal'" } */
      14  #pragma omp error severity(-			/* { dg-error "expected 'warning' or 'fatal'" } */
      15  						/* { dg-error "expected '\\\)' before '-' token" "" { target *-*-* } .-1 } */
      16  #pragma omp error severity(fatal		/* { dg-error "expected '\\\)' before end of line" } */
      17  						/* { dg-error "'pragma omp error' encountered" "" { target *-*-* } .-1 } */
      18  #pragma omp error message			/* { dg-error "expected '\\\(' before end of line" } */
      19  #pragma omp error message(			/* { dg-error "expected expression before end of line" "" { target c } } */
      20  						/* { dg-error "expected primary-expression before end of line" "" { target c++ } .-1 } */
      21  						/* { dg-error "expected '\\\)' before end of line" "" { target c++ } .-2 } */
      22  						/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" "" { target *-*-* } .-3 } */
      23  #pragma omp error message(0			/* { dg-error "expected '\\\)' before end of line" } */
      24  						/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" "" { target *-*-* } .-1 } */
      25  #pragma omp error message("foo"			/* { dg-error "expected '\\\)' before end of line" } */
      26  						/* { dg-error "'pragma omp error' encountered: foo" "" { target *-*-* } .-1 } */
      27  #pragma omp error message(1)			/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" } */
      28  						/* { dg-error "invalid conversion from 'int' to 'const char\\*'" "" { target c++ } .-1 } */
      29  #pragma omp error message(1.2)			/* { dg-error "cannot convert to a pointer type" "" { target c } } */
      30  						/* { dg-error "could not convert" "" { target c++ } .-1 } */
      31  						/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" "" { target *-*-* } .-2 } */
      32  #pragma omp error message(L"bar")		/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" } */
      33  						/* { dg-error "could not convert" "" { target c++ } .-1 } */
      34  #pragma omp error message("foo"),at(compilation),severity(fatal),	/* { dg-error "expected end of line before ',' token" } */
      35  						/* { dg-error "'pragma omp error' encountered: foo" "" { target *-*-* } .-1 } */
      36  #pragma omp error message("foo"),at(compilation),severity(fatal),asdf	/* { dg-error "expected 'at', 'severity' or 'message' clause" } */
      37  #pragma omp error at(compilation) at(compilation)	/* { dg-error "too many 'at' clauses" } */
      38  #pragma omp error severity(fatal) severity(warning)	/* { dg-error "too many 'severity' clauses" } */
      39  #pragma omp error message("foo") message("foo")		/* { dg-error "too many 'message' clauses" } */
      40  #pragma omp error at(execution)			/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      41  
      42  struct S
      43  {
      44    #pragma omp error at(execution) message("foo")/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      45    int s;
      46  };
      47  
      48  int
      49  foo (int i, int x, const char *msg)
      50  {
      51    #pragma omp error message(msg)		/* { dg-error "'pragma omp error' encountered: <message unknown at compile time>" } */
      52    if (x)
      53      #pragma omp error at(execution)		/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      54    i++;
      55    if (x)
      56      ;
      57    else
      58      #pragma omp error at(execution) severity(warning)	/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      59    i++;
      60    switch (0)
      61      #pragma omp error severity(fatal) at(execution)	/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      62      ;
      63    while (0)
      64      #pragma omp error at(execution)message("42 - 1")	/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      65      i++;
      66    lab:
      67    #pragma omp error severity(warning) message("bar") at(execution)	/* { dg-error "'#pragma omp error' with 'at\\\(execution\\\)' clause may only be used in compound statements" } */
      68      i++;
      69    return i;
      70  }