Test -fbranch-probabilities with computed gotos.
From-SVN: r45528
This commit is contained in:
parent
c1189efc4d
commit
b210ec460e
1 changed files with 42 additions and 0 deletions
42
gcc/testsuite/gcc.misc-tests/bprob-2.c
Normal file
42
gcc/testsuite/gcc.misc-tests/bprob-2.c
Normal file
|
@ -0,0 +1,42 @@
|
|||
/* Test profile-directed block ordering with computed gotos.
|
||||
*
|
||||
This is the same as test gcc.c-torture/execute/980526-1.c and
|
||||
gcc.misc-tests/gcov-3.c */
|
||||
|
||||
int expect_do1 = 1, expect_do2 = 2;
|
||||
|
||||
static int doit(int x){
|
||||
__label__ lbl1;
|
||||
__label__ lbl2;
|
||||
static int jtab_init = 0;
|
||||
static void *jtab[2];
|
||||
|
||||
if(!jtab_init) {
|
||||
jtab[0] = &&lbl1;
|
||||
jtab[1] = &&lbl2;
|
||||
jtab_init = 1;
|
||||
}
|
||||
goto *jtab[x];
|
||||
lbl1:
|
||||
return 1;
|
||||
lbl2:
|
||||
return 2;
|
||||
}
|
||||
|
||||
static void do1(void) {
|
||||
if (doit(0) != expect_do1)
|
||||
abort ();
|
||||
}
|
||||
|
||||
static void do2(void){
|
||||
if (doit(1) != expect_do2)
|
||||
abort ();
|
||||
}
|
||||
|
||||
int main(void){
|
||||
#ifndef NO_LABEL_VALUES
|
||||
do1();
|
||||
do2();
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
Loading…
Add table
Reference in a new issue