diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C new file mode 100644 index 000000000..48cf0afb5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C @@ -0,0 +1,70 @@ +// PR target/60648 +// { dg-do compile } +// { dg-additional-options "-fPIC" { target fpic } } + +enum component +{ + Ex, + Ez, + Hy, + Permeability +}; +enum derived_component +{}; +enum direction +{ + X, + Y, + Z, + R, + P, + NO_DIRECTION +}; +derived_component a; +component *b; +component c; +direction d; +inline direction fn1 (component p1) +{ + switch (p1) + { + case 0: + return Y; + case 1: + return Z; + case Permeability: + return NO_DIRECTION; + } + return X; +} + +inline component fn2 (direction p1) +{ + switch (p1) + { + case 0: + case 1: + return component (); + case Z: + case R: + return component (1); + case P: + return component (3); + } +} + +void fn3 () +{ + direction e; + switch (0) + case 0: + switch (a) + { + case 0: + c = Ex; + b[1] = Hy; + } + e = fn1 (b[1]); + b[1] = fn2 (e); + d = fn1 (c); +} |