summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/vect/pr46126.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/vect/pr46126.c')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr46126.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr46126.c b/gcc/testsuite/gcc.dg/vect/pr46126.c
new file mode 100644
index 000000000..6eb178aab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr46126.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+typedef struct TypHeader {
+ struct TypHeader * * ptr;
+ unsigned char type;
+ } * TypHandle;
+ extern TypHandle (* EvTab[81]) ( TypHandle hd );
+ TypHandle FunApplyRel ( TypHandle hdCall )
+ {
+ TypHandle hdApp;
+ TypHandle * ptApp;
+ long lp;
+ long lc;
+ hdApp = ((long)(((TypHandle*)((hdCall)->ptr))[1])&1 ?
+(((TypHandle*)((hdCall)->ptr))[1]) : (*
+EvTab[(((long)(((TypHandle*)((hdCall)->ptr))[1]) & 1) ? 1 :
+((((TypHandle*)((hdCall)->ptr))[1])->type))])((((TypHandle*)((hdCall)->ptr))[1])));
+ ptApp = ((TypHandle*)((hdApp)->ptr));
+ ptApp[1] = ((TypHandle) (((long)(lp) << 2) + 1));
+ ptApp[2] = ((TypHandle) (((long)(lc) << 2) + 1));
+ }
+
+/* { dg-final { cleanup-tree-dump "vect" } } */