1  /* { dg-do compile } */
       2  /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
       3  
       4  /* Scalar return types.  In registers when <= 64 bit.  */
       5  
       6  typedef int __attribute__((mode(TI))) ti;
       7  
       8  /* { dg-final { scan-assembler-times ".extern .func dcl_av;" 1 } } */
       9  void dcl_av (void);
      10  
      11  /* { dg-final { scan-assembler-times ".extern .func dcl_ac \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */
      12  void dcl_ac (char);
      13  
      14  /* { dg-final { scan-assembler-times ".extern .func dcl_as \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */
      15  void dcl_as (short);
      16  
      17  /* { dg-final { scan-assembler-times ".extern .func dcl_ai \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */
      18  void dcl_ai (int);
      19  
      20  /* { dg-final { scan-assembler-times ".extern .func dcl_all \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
      21  void dcl_all (long long);
      22  
      23  /* { dg-final { scan-assembler-times ".extern .func dcl_ati \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
      24  void dcl_ati (ti);
      25  
      26  /* { dg-final { scan-assembler-times ".extern .func dcl_af \\(.param.f32 %\[_a-z0-9\]*\\);" 1 } } */
      27  void dcl_af (float);
      28  
      29  /* { dg-final { scan-assembler-times ".extern .func dcl_ad \\(.param.f64 %\[_a-z0-9\]*\\);" 1 } } */
      30  void dcl_ad (double);
      31  
      32  /* { dg-final { scan-assembler-times ".extern .func dcl_ap \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
      33  void dcl_ap (void *);
      34  
      35  void test_1 (void)
      36  {
      37    dcl_av ();
      38    dcl_ac (1);
      39    dcl_as (2);
      40    dcl_ai (3);
      41    dcl_all (4);
      42    dcl_ati (5);
      43    dcl_af (6);
      44    dcl_ad (7);
      45    dcl_ap (0);
      46  }
      47  
      48  /* { dg-final { scan-assembler-times ".visible .func dfn_av(?:;|\[\r\n\]+\{)" 2 } } */
      49  void dfn_av (void)
      50  {
      51  }
      52  
      53  /* { dg-final { scan-assembler-times ".visible .func dfn_ac \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      54  void dfn_ac (char c)
      55  {
      56  }
      57  
      58  /* { dg-final { scan-assembler-times ".visible .func dfn_as \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      59  void dfn_as (short s)
      60  {
      61  }
      62  
      63  /* { dg-final { scan-assembler-times ".visible .func dfn_ai \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      64  void dfn_ai (int i)
      65  {
      66  }
      67  
      68  /* { dg-final { scan-assembler-times ".visible .func dfn_all \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      69  void dfn_all (long long ll)
      70  {
      71  }
      72  
      73  /* { dg-final { scan-assembler-times ".visible .func dfn_ati \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      74  void dfn_ati (ti t)
      75  {
      76  }
      77  
      78  /* { dg-final { scan-assembler-times ".visible .func dfn_af \\(.param.f32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      79  void dfn_af (float f)
      80  {
      81  }
      82  
      83  /* { dg-final { scan-assembler-times ".visible .func dfn_ad \\(.param.f64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      84  void dfn_ad (double d)
      85  {
      86  }
      87  
      88  /* { dg-final { scan-assembler-times ".visible .func dfn_ap \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      89  void dfn_ap (void *p)
      90  {
      91  }