]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/localalias.c
replace ISL with isl
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / localalias.c
CommitLineData
b4897212
JH
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 "" }
b4897212
JH
12 { dg-additional-sources "localalias-2.c" } */
13extern void abort (void);
8ece1ab3 14extern void tt (void);
b4897212
JH
15extern int test2count;
16int testcount;
17__attribute__ ((weak,noinline))
18void test(void)
19{
20 testcount++;
21}
22__attribute ((alias("test")))
23static void test2(void);
24
4da27d0f 25int main()
b4897212
JH
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 ();
4da27d0f 41 return 0;
b4897212 42}