Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/localalias.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* This test checks that local aliases behave sanely. This is necessary for code correctness | |
2 of aliases introduced by ipa-visibility pass. | |
3 | |
4 If this test fails either aliases needs to be disabled on given target on aliases with | |
5 proper semantic needs to be implemented. This is problem with e.g. AIX .set pseudo-op | |
6 that implementes alias syntactically (by substituting in assembler) rather as alternative | |
7 symbol defined on a target's location. */ | |
8 | |
9 /* { dg-do run } | |
10 { dg-options "-Wstrict-aliasing=2 -fstrict-aliasing" } | |
11 { dg-require-alias "" } | |
12 { dg-additional-sources "localalias-2.c" } */ | |
13 extern void abort (void); | |
14 extern void tt (void); | |
15 extern int test2count; | |
16 int testcount; | |
17 __attribute__ ((weak,noinline)) | |
18 void test(void) | |
19 { | |
20 testcount++; | |
21 } | |
22 __attribute ((alias("test"))) | |
23 static void test2(void); | |
24 | |
25 int main() | |
26 { | |
27 test2(); | |
28 /* This call must bind locally. */ | |
29 if (!testcount) | |
30 abort (); | |
31 test(); | |
32 /* Depending on linker choice, this one may bind locally | |
33 or to the other unit. */ | |
34 if (!testcount && !test2count) | |
35 abort(); | |
36 tt(); | |
37 | |
38 if ((testcount != 1 || test2count != 3) | |
39 && (testcount != 3 || test2count != 1)) | |
40 abort (); | |
41 return 0; | |
42 } |