diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-11 17:38:53 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-11 17:38:53 +0000 |
commit | 6c070c7d5f3d7d3c964af58f6d26611bd25ee95a (patch) | |
tree | 00c358633f7ef118e5b34bb52aec2e6ed394dc28 /gcc/testsuite/gcc.misc-tests | |
parent | 84870dc8a012158d57cf5089efae237d7c1a04cc (diff) | |
download | gcc-6c070c7d5f3d7d3c964af58f6d26611bd25ee95a.tar.gz |
* gcc.misc-tests/gcov-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43943 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.misc-tests')
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov-3.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-3.c b/gcc/testsuite/gcc.misc-tests/gcov-3.c new file mode 100644 index 00000000000..36fe64f802b --- /dev/null +++ b/gcc/testsuite/gcc.misc-tests/gcov-3.c @@ -0,0 +1,45 @@ +/* Test Gcov with computed gotos. + This is the same as test gcc.c-torture/execute/980526-1.c */ + +/* { dg-options "-fprofile-arcs -ftest-coverage" } */ +/* { dg-do run { target native } } */ + +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){ /* count(1) */ +#ifndef NO_LABEL_VALUES + do1(); + do2(); +#endif + exit(0); /* count(1) */ +} + +/* { dg-final { run-gcov gcov-3.c } } */ |