annotate gcc/testsuite/g++.dg/ext/mv14.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test case to check if Multiversioning works. */
kono
parents:
diff changeset
2 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
kono
parents:
diff changeset
3 /* { dg-require-ifunc "" } */
kono
parents:
diff changeset
4 /* { dg-options "-O2 -fPIC -march=x86-64" } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #include <assert.h>
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 /* Default version. */
kono
parents:
diff changeset
9 int foo (); // Extra declaration that is merged with the second one.
kono
parents:
diff changeset
10 int foo () __attribute__ ((target("default")));
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 int foo () __attribute__ ((target("arch=corei7")));
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 int (*p)() = &foo;
kono
parents:
diff changeset
15 int main ()
kono
parents:
diff changeset
16 {
kono
parents:
diff changeset
17 int val = foo ();
kono
parents:
diff changeset
18 assert (val == (*p)());
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 /* Check in the exact same order in which the dispatching
kono
parents:
diff changeset
21 is expected to happen. */
kono
parents:
diff changeset
22 if (__builtin_cpu_is ("corei7"))
kono
parents:
diff changeset
23 assert (val == 5);
kono
parents:
diff changeset
24 else
kono
parents:
diff changeset
25 assert (val == 0);
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 return 0;
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int __attribute__ ((target("default")))
kono
parents:
diff changeset
31 foo ()
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 return 0;
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 int __attribute__ ((target("arch=corei7")))
kono
parents:
diff changeset
37 foo ()
kono
parents:
diff changeset
38 {
kono
parents:
diff changeset
39 return 5;
kono
parents:
diff changeset
40 }