Forbid arrays of function-type and structures with function-typed fields.
[llvm/avr.git] / test / Transforms / GVNPRE / 2007-07-05-AvailabilityUpdating.ll
bloba173d4b77cdb83d682c6a07ef639dfa1d934c51e
1 ; RUN: opt < %s -gvnpre -S | grep tmp114115.gvnpre
3         %struct.AV = type { %struct.XPVAV*, i32, i32 }
4         %struct.CLONE_PARAMS = type { %struct.AV*, i32, %struct.PerlInterpreter* }
5         %struct.HE = type { %struct.HE*, %struct.HEK*, %struct.SV* }
6         %struct.HEK = type { i32, i32, [1 x i8] }
7         %struct.HV = type { %struct.XPVHV*, i32, i32 }
8         %struct.MAGIC = type { %struct.MAGIC*, %struct.MGVTBL*, i16, i8, i8, %struct.SV*, i8*, i32 }
9         %struct.MGVTBL = type { i32 (%struct.SV*, %struct.MAGIC*)*, i32 (%struct.SV*, %struct.MAGIC*)*, i32 (%struct.SV*, %struct.MAGIC*)*, i32 (%struct.SV*, %struct.MAGIC*)*, i32 (%struct.SV*, %struct.MAGIC*)*, i32 (%struct.SV*, %struct.MAGIC*, %struct.SV*, i8*, i32)*, i32 (%struct.MAGIC*, %struct.CLONE_PARAMS*)* }
10         %struct.OP = type { %struct.OP*, %struct.OP*, %struct.OP* ()*, i32, i16, i16, i8, i8 }
11         %struct.PMOP = type { %struct.OP*, %struct.OP*, %struct.OP* ()*, i32, i16, i16, i8, i8, %struct.OP*, %struct.OP*, %struct.OP*, %struct.OP*, %struct.PMOP*, %struct.REGEXP*, i32, i32, i8, %struct.HV* }
12         %struct.PerlInterpreter = type { i8 }
13         %struct.REGEXP = type { i32*, i32*, %struct.regnode*, %struct.reg_substr_data*, i8*, %struct.reg_data*, i8*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, [1 x %struct.regnode] }
14         %struct.SV = type { i8*, i32, i32 }
15         %struct.XPVAV = type { i8*, i32, i32, i32, double, %struct.MAGIC*, %struct.HV*, %struct.SV**, %struct.SV*, i8 }
16         %struct.XPVHV = type { i8*, i32, i32, i32, double, %struct.MAGIC*, %struct.HV*, i32, %struct.HE*, %struct.PMOP*, i8* }
17         %struct.reg_data = type { i32, i8*, [1 x i8*] }
18         %struct.reg_substr_data = type { [3 x %struct.reg_substr_datum] }
19         %struct.reg_substr_datum = type { i32, i32, %struct.SV*, %struct.SV* }
20         %struct.regnode = type { i8, i8, i16 }
22 define void @Perl_op_clear(%struct.OP* %o) {
23 entry:
24         switch i32 0, label %bb106 [
25                  i32 13, label %bb106
26                  i32 31, label %clear_pmop
27                  i32 32, label %clear_pmop
28                  i32 33, label %bb101
29         ]
31 bb101:          ; preds = %entry
32         %tmp102103 = bitcast %struct.OP* %o to %struct.PMOP*            ; <%struct.PMOP*> [#uses=1]
33         %tmp104 = getelementptr %struct.PMOP* %tmp102103, i32 0, i32 10         ; <%struct.OP**> [#uses=0]
34         br i1 false, label %cond_next174, label %cond_true122
36 bb106:          ; preds = %entry, %entry
37         %tmp107108 = bitcast %struct.OP* %o to %struct.PMOP*            ; <%struct.PMOP*> [#uses=0]
38         br label %clear_pmop
40 clear_pmop:             ; preds = %bb106, %entry, %entry
41         %tmp114115 = bitcast %struct.OP* %o to %struct.PMOP*            ; <%struct.PMOP*> [#uses=0]
42         br label %cond_true122
44 cond_true122:           ; preds = %clear_pmop, %bb101
45         br i1 false, label %cond_next174, label %cond_true129
47 cond_true129:           ; preds = %cond_true122
48         ret void
50 cond_next174:           ; preds = %cond_true122, %bb101
51         %tmp175176 = bitcast %struct.OP* %o to %struct.PMOP*            ; <%struct.PMOP*> [#uses=1]
52         %tmp177 = getelementptr %struct.PMOP* %tmp175176, i32 0, i32 10         ; <%struct.OP**> [#uses=0]
53         ret void