1  /* Verify that we use precise locations when emitting diagnostics
       2     about pragmas.  */
       3  
       4  /* { dg-do assemble } */
       5  /* { dg-options "-fdiagnostics-show-caret" } */
       6  
       7  /* pack ****************************************************************************/
       8  
       9  #pragma pack
      10  /* { dg-warning "missing '\\(' after '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      11     { dg-begin-multiline-output "" }
      12   #pragma pack
      13           ^~~~
      14     { dg-end-multiline-output "" }  */
      15  
      16  #pragma pack (
      17  /* { dg-warning "malformed '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      18     { dg-begin-multiline-output "" }
      19   #pragma pack (
      20           ^~~~
      21     { dg-end-multiline-output "" }  */
      22  
      23  #pragma pack (32
      24  /* { dg-warning "malformed '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      25     { dg-begin-multiline-output "" }
      26   #pragma pack (32
      27           ^~~~
      28     { dg-end-multiline-output "" }  */
      29  
      30  #pragma pack (3.14159
      31  /* { dg-warning "invalid constant in '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      32     { dg-begin-multiline-output "" }
      33   #pragma pack (3.14159
      34                 ^~~~~~~
      35     { dg-end-multiline-output "" }  */
      36  
      37  #pragma pack (push, 3.14159
      38  /* { dg-warning "invalid constant in '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      39     { dg-begin-multiline-output "" }
      40   #pragma pack (push, 3.14159
      41                       ^~~~~~~
      42     { dg-end-multiline-output "" }  */
      43  
      44  #pragma pack (toothbrush
      45  /* { dg-warning "unknown action 'toothbrush' for '#pragma pack' - ignored" "" { target *-*-* } .-1 }
      46     { dg-begin-multiline-output "" }
      47   #pragma pack (toothbrush
      48                 ^~~~~~~~~~
      49     { dg-end-multiline-output "" }  */
      50  
      51  #pragma pack() pyjamas
      52  /* { dg-warning "junk at end of '#pragma pack'" "" { target *-*-* } .-1 }
      53     { dg-begin-multiline-output "" }
      54   #pragma pack() pyjamas
      55                  ^~~~~~~
      56     { dg-end-multiline-output "" }  */
      57  
      58  /* target ****************************************************************************/
      59  
      60  #pragma GCC target 42
      61  /* { dg-warning "#pragma GCC option' is not a string" "" { target *-*-* } .-1 }
      62     { dg-begin-multiline-output "" }
      63   #pragma GCC target 42
      64                      ^~
      65     { dg-end-multiline-output "" }  */
      66  
      67  #pragma GCC target ( 1776
      68  /* { dg-warning "#pragma GCC option' is not a string" "" { target *-*-* } .-1 }
      69     { dg-begin-multiline-output "" }
      70   #pragma GCC target ( 1776
      71                        ^~~~
      72     { dg-end-multiline-output "" }  */
      73  
      74  /* message ****************************************************************************/
      75  
      76  #pragma message "foo" int
      77  /* { dg-warning "junk at end of '#pragma message'" "" { target *-*-* } .-1 }
      78     { dg-message "'#pragma message: foo'" "" { target *-*-* } .-2 }
      79     { dg-begin-multiline-output "" }
      80   #pragma message "foo" int
      81                         ^~~
      82     { dg-end-multiline-output "" }
      83     { dg-begin-multiline-output "" }
      84   #pragma message "foo" int
      85           ^~~~~~~
      86     { dg-end-multiline-output "" }  */