diff options
author | Dan Albert <danalbert@google.com> | 2015-09-09 23:36:31 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-09-09 23:36:31 +0000 |
commit | 7b05d0f6a17397063a19232936eee7bbb53cd0dd (patch) | |
tree | 111942606d6f12c7aa3dc294d0040d9a3c134ae2 /gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c | |
parent | a981e4500a6364a7af778544cbcbc22bffc4cb58 (diff) | |
parent | 65f8bbbcc74a4777f0629190ea9121fc94a79257 (diff) | |
download | toolchain_gcc-7b05d0f6a17397063a19232936eee7bbb53cd0dd.zip toolchain_gcc-7b05d0f6a17397063a19232936eee7bbb53cd0dd.tar.gz toolchain_gcc-7b05d0f6a17397063a19232936eee7bbb53cd0dd.tar.bz2 |
Merge changes I65f8bbbc,Iaa65e2d1,Ifa0139c9,Ic39d2a2b,I78cf0a23
* changes:
backport fix for PR65735
backport patch to fix PR65177
backport patch to fix PR65048
backport patch for PR 64878: do not jump thread across more than one back-edge
port revision 219584 from linaro/gcc-4_9-branch
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c new file mode 100644 index 0000000..21474f0 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c @@ -0,0 +1,127 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-dom1-details" } */ +/* { dg-final { scan-tree-dump-times "FSM" 19 "dom1" } } */ +/* { dg-final { cleanup-tree-dump "dom1" } } */ + +enum STATE { + S0=0, + SI, + S1, + S2, + S3, + S4, + S5, + S6 +}; + +int bar (enum STATE s); + +enum STATE foo (unsigned char **y, unsigned *c) +{ + unsigned char *x = *y; + unsigned char n; + enum STATE s = S0; + + for( ; *x && s != SI; x++ ) + { + n = *x; + if (n == 'x') + { + x++; + break; + } + switch(s) + { + case S0: + if(bar(n)) + s = S3; + else if( n == 'a' || n == 'b' ) + s = S1; + else if( n == 'c' ) + s = S4; + else + { + s = SI; + c[SI]++; + } + c[S0]++; + break; + case S1: + if(bar(n)) + { + s = S3; + c[S1]++; + } + else if( n == 'c' ) + { + s = S4; + c[S1]++; + } + else + { + s = SI; + c[S1]++; + } + break; + case S3: + if( n == 'c' ) + { + s = S4; + c[S3]++; + } + else if(!bar(n)) + { + s = SI; + c[S3]++; + } + break; + case S4: + if( n == 'E' || n == 'e' ) + { + s = S2; + c[S4]++; + } + else if(!bar(n)) + { + s = SI; + c[S4]++; + } + break; + case S2: + if( n == 'a' || n == 'b' ) + { + s = S5; + c[S2]++; + } + else + { + s = SI; + c[S2]++; + } + break; + case S5: + if(bar(n)) + { + s = S6; + c[S5]++; + } + else + { + s = SI; + c[S5]++; + } + break; + case S6: + if(!bar(n)) + { + s = SI; + c[SI]++; + } + break; + default: + break; + } + } + *y=x; + return s; +} |