summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/941014-3.c
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.c-torture/compile/941014-3.c
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/941014-3.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/941014-3.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/941014-3.c b/gcc/testsuite/gcc.c-torture/compile/941014-3.c
new file mode 100644
index 000000000..6dcb89395
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/941014-3.c
@@ -0,0 +1,72 @@
+typedef unsigned char byte;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef ulong gs_char;
+typedef struct gs_show_enum_s gs_show_enum;
+typedef struct gs_font_s gs_font;
+typedef struct gx_font_stack_item_s {
+ gs_font *font;
+} gx_font_stack_item;
+typedef struct gx_font_stack_s {
+ gx_font_stack_item items[1 + 5 ];
+} gx_font_stack;
+struct gs_show_enum_s {
+ gx_font_stack fstack;
+};
+typedef enum {
+ ft_composite = 0,
+} font_type;
+struct gs_font_s {
+ font_type FontType;
+};
+typedef enum {
+ fmap_escape = 3,
+ fmap_shift = 8
+ } fmap_type;
+typedef struct gs_type0_data_s {
+ fmap_type FMapType;
+} gs_type0_data;
+gs_type0_next_char(register gs_show_enum *penum)
+{
+ const byte *p;
+ int fdepth;
+ gs_font *pfont;
+ gs_type0_data *pdata;
+ uint fidx;
+ gs_char chr;
+ for (; pfont->FontType == ft_composite; )
+ {
+ fmap_type fmt;
+ switch ( fmt )
+ {
+ do {} while (0);
+ rdown:
+ continue;
+ case fmap_shift:
+ p++;
+ do {} while (0);
+ goto rdown;
+ }
+ break;
+ }
+ up:
+ while ( fdepth > 0 )
+ {
+ switch ( pdata->FMapType )
+ {
+ default:
+ continue;
+ case fmap_escape:
+ fidx = *++p;
+ do {} while (0);
+ if ( fidx == chr && fdepth > 1 )
+ goto up;
+ down:
+ fdepth--;
+ do {} while (0);
+ }
+ break;
+ }
+ while ( (pfont = penum->fstack.items[fdepth].font)->FontType == ft_composite )
+ ;
+}