Skip several analyzer socket tests on hppa*-*-hpux*
[official-gcc.git] / gcc / testsuite / c-c++-common / strub-parms3.c
blob7383fea9ce8818b035f438df97547709f316e376
1 /* { dg-do compile } */
2 /* { dg-options "-fstrub=strict -fdump-ipa-strub" } */
3 /* { dg-require-effective-target strub } */
5 /* Check that uses of a strub variable implicitly enables internal strub for
6 publicly-visible functions, and causes the same transformations to their
7 signatures as those in strub-parms1.c. */
9 #include <stdarg.h>
11 int __attribute__ ((__strub__)) var;
13 void
14 small_args (int i, long long l, void *p, void **q, double d, char c)
16 var++;
19 /* { dg-final { scan-ipa-dump "\n(void )?\[^ \]*small_args\[^ \]*.strub.\[0-9\]* \[(\]int i, long long int l, void \\* p, void \\* \\* q, double d, char c, void \\* &\[^&,\]*.strub.watermark_ptr\[)\]" "strub" } } */
20 /* { dg-final { scan-ipa-dump " \[^ \]*small_args\[^ \]*.strub.\[0-9\]* \[(\]\[^&\]*&.strub.watermark.\[0-9\]*\[)\]" "strub" } } */
23 struct large_arg {
24 int x[128];
27 void
28 large_byref_arg (struct large_arg la)
30 var++;
33 /* { dg-final { scan-ipa-dump "\n(void )?\[^ \]*large_byref_arg\[^ \]*.strub.\[0-9\]* \[(\]struct large_arg & la, void \\* &\[^&,\]*.strub.watermark_ptr\[)\]" "strub" } } */
34 /* { dg-final { scan-ipa-dump " \[^ \]*large_byref_arg\[^ \]*.strub.\[0-9\]* \[(\]&\[^&\]*&.strub.watermark.\[0-9\]*\[)\]" "strub" } } */
36 void
37 std_arg (int i, ...)
39 va_list vl;
40 va_start (vl, i);
41 var++;
42 va_end (vl);
45 /* { dg-final { scan-ipa-dump "\n(void )?\[^ \]*std_arg\[^ \]*.strub.\[0-9\]* \[(\]int i, \[^&,\]* &\[^&,\]*.strub.va_list_ptr, void \\* &\[^&,\]*.strub.watermark_ptr\[)\]" "strub" } } */
46 /* { dg-final { scan-ipa-dump " \[^ \]*std_arg\[^ \]*.strub.\[0-9\]* \[(\]\[^&\]*&.strub.va_list.\[0-9\]*, &.strub.watermark.\[0-9\]*\[)\]" "strub" } } */
47 /* { dg-final { scan-ipa-dump-times "va_start \\(" 1 "strub" } } */
48 /* { dg-final { scan-ipa-dump-times "va_copy \\(" 1 "strub" } } */
49 /* { dg-final { scan-ipa-dump-times "va_end \\(" 2 "strub" } } */
51 void
52 apply_args (int i, int j, double d)
54 var++;
55 __builtin_apply_args ();
58 /* { dg-final { scan-ipa-dump "\n(void )?\[^ \]*apply_args\[^ \]*.strub.\[0-9\]* \[(\]int i, int j, double d, void \\*\[^&,\]*.strub.apply_args, void \\* &\[^&,\]*.strub.watermark_ptr\[)\]" "strub" } } */
59 /* { dg-final { scan-ipa-dump " \[^ \]*apply_args\[^ \]*.strub.\[0-9\]* \[(\]\[^&\]*.strub.apply_args.\[0-9\]*_\[0-9\]*, &.strub.watermark.\[0-9\]*\[)\]" "strub" } } */