llvm.org GIT mirror llvm / 26b0000
manually upgrade a bunch of tests to modern syntax, and remove some that are either unreduced or only test old syntax. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133228 91177308-0d34-0410-b5e6-96231b3b80d8 Chris Lattner 8 years ago
130 changed file(s) with 263 addition(s) and 5811 deletion(s). Raw diff Collapse all Expand all
+0
-15
test/Analysis/BasicAA/2005-03-09-BrokenBasicAA.ll less more
None ; RUN: opt < %s -basicaa -gvn -instcombine |\
1 ; RUN: llvm-dis | grep {load i32\\* %A}
2
3 declare double* @useit(i32*)
4
5 define i32 @foo(i32 %Amt) {
6 %A = malloc i32, i32 %Amt
7 %P = call double* @useit(i32* %A)
8
9 %X = load i32* %A
10 store double 0.0, double* %P
11 %Y = load i32* %A
12 %Z = sub i32 %X, %Y
13 ret i32 %Z
14 }
22
33 @G = internal global i32* null ; [#uses=3]
44
5
6 declare i8* @malloc(i32)
57 define void @test() {
6 %A = malloc i32 ; [#uses=1]
8 %a = call i8* @malloc(i32 4)
9 %A = bitcast i8* %a to i32*
710 store i32* %A, i32** @G
811 ret void
912 }
+0
-14
test/Assembler/2005-02-09-AsmWriterStoreBug.ll less more
None ; RUN: llvm-as < %s | llvm-dis | llvm-as
1
2 ; Ensure that the asm writer emits types before both operands of the
3 ; store, even though they can be the same.
4
5 %RecTy = type %RecTy*
6
7 define void @foo() {
8 %A = malloc %RecTy ; <%RecTy> [#uses=1]
9 %B = malloc %RecTy ; <%RecTy> [#uses=1]
10 store %RecTy %B, %RecTy %A
11 ret void
12 }
13
+0
-8
test/Assembler/2006-05-26-VarargsCallEncode.ll less more
None ; RUN: llvm-as < %s | llvm-dis | grep {tail call void.*sret null}
1
2 declare void @foo({ }* sret , ...)
3
4 define void @bar() {
5 tail call void ({ }* sret , ...)* @foo( { }* null sret , i32 0 )
6 ret void
7 }
+0
-12
test/Assembler/2007-07-30-AutoUpgradeZextSext.ll less more
None ; Test that upgrading zext/sext attributes to zeroext and signext
1 ; works correctly.
2 ; PR1553
3 ; RUN: llvm-as < %s > /dev/null
4
5 define i32 @bar() {
6 %t = call i8 @foo( i8 10 sext ) zext
7 %x = zext i8 %t to i32
8 ret i32 %x
9 }
10
11 declare i8 @foo(i8 signext ) zeroext
+0
-3
test/Assembler/2007-11-27-AutoUpgradeAttributes.ll less more
None ; RUN: llvm-as < %s
1
2 @FP = weak global i8 (...) signext * null
+0
-947
test/CodeGen/ARM/2007-03-26-RegScavengerAssert.ll less more
None ; RUN: llc < %s -march=arm
1 ; PR1266
2
3 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64"
4 target triple = "arm-unknown-linux-gnueabi"
5 %struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32 }
6 %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i32, [52 x i8] }
7 %struct.VEC_edge = type { i32, i32, [1 x %struct.edge_def*] }
8 %struct.VEC_tree = type { i32, i32, [1 x %struct.tree_node*] }
9 %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
10 %struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] }
11 %struct.addr_diff_vec_flags = type { i8, i8, i8, i8 }
12 %struct.arm_stack_offsets = type { i32, i32, i32, i32, i32 }
13 %struct.attribute_spec = type { i8*, i32, i32, i8, i8, i8, %struct.tree_node* (%struct.tree_node**, %struct.tree_node*, %struct.tree_node*, i32, i8*)* }
14 %struct.basic_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.tree_node*, %struct.VEC_edge*, %struct.VEC_edge*, %struct.bitmap_head_def*, %struct.bitmap_head_def*, i8*, %struct.loop*, [2 x %struct.et_node*], %struct.basic_block_def*, %struct.basic_block_def*, %struct.reorder_block_def*, %struct.bb_ann_d*, i64, i32, i32, i32, i32 }
15 %struct.bb_ann_d = type { %struct.tree_node*, i8, %struct.edge_prediction* }
16 %struct.bitmap_element_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, [4 x i32] }
17 %struct.bitmap_head_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, %struct.bitmap_obstack* }
18 %struct.bitmap_obstack = type { %struct.bitmap_element_def*, %struct.bitmap_head_def*, %struct.obstack }
19 %struct.cgraph_edge = type { %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_edge*, %struct.cgraph_edge*, %struct.cgraph_edge*, %struct.cgraph_edge*, %struct.tree_node*, i8*, i8* }
20 %struct.cgraph_global_info = type { %struct.cgraph_node*, i32, i8 }
21 %struct.cgraph_local_info = type { i32, i8, i8, i8, i8, i8, i8, i8 }
22 %struct.cgraph_node = type { %struct.tree_node*, %struct.cgraph_edge*, %struct.cgraph_edge*, %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_node*, %struct.cgraph_node*, i8*, %struct.cgraph_local_info, %struct.cgraph_global_info, %struct.cgraph_rtl_info, i32, i8, i8, i8, i8, i8 }
23 %struct.cgraph_rtl_info = type { i32, i8, i8 }
24 %struct.cl_perfunc_opts = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
25 %struct.cselib_val_struct = type opaque
26 %struct.dataflow_d = type { %struct.varray_head_tag*, [2 x %struct.tree_node*] }
27 %struct.def_operand_ptr = type { %struct.tree_node** }
28 %struct.def_optype_d = type { i32, [1 x %struct.def_operand_ptr] }
29 %struct.diagnostic_context = type { %struct.pretty_printer*, [8 x i32], i8, i8, i8, void (%struct.diagnostic_context*, %struct.diagnostic_info*)*, void (%struct.diagnostic_context*, %struct.diagnostic_info*)*, void (i8*, i8**)*, %struct.tree_node*, i32, i32 }
30 %struct.diagnostic_info = type { %struct.text_info, %struct.location_t, i32 }
31 %struct.die_struct = type opaque
32 %struct.edge_def = type { %struct.basic_block_def*, %struct.basic_block_def*, %struct.edge_def_insns, i8*, %struct.location_t*, i32, i32, i64, i32 }
33 %struct.edge_def_insns = type { %struct.rtx_def* }
34 %struct.edge_prediction = type { %struct.edge_prediction*, %struct.edge_def*, i32, i32 }
35 %struct.eh_status = type opaque
36 %struct.elt_list = type opaque
37 %struct.elt_t = type { %struct.tree_node*, %struct.tree_node* }
38 %struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** }
39 %struct.et_node = type opaque
40 %struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* }
41 %struct.function = type { %struct.eh_status*, %struct.expr_status*, %struct.emit_status*, %struct.varasm_status*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.function*, i32, i32, i32, i32, %struct.rtx_def*, %struct.CUMULATIVE_ARGS, %struct.rtx_def*, %struct.rtx_def*, %struct.initial_value_struct*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i8, i32, i64, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, i32, %struct.var_refs_queue*, i32, i32, %struct.rtvec_def*, %struct.tree_node*, i32, i32, i32, %struct.machine_function*, i32, i32, i8, i8, %struct.language_function*, %struct.rtx_def*, i32, i32, i32, i32, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, i8, i8, i8 }
42 %struct.ggc_root_tab = type { i8*, i32, i32, void (i8*)*, void (i8*)* }
43 %struct.gimplify_ctx = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.varray_head_tag*, %struct.htab*, i32, i8, i8 }
44 %struct.gimplify_init_ctor_preeval_data = type { %struct.tree_node*, i32 }
45 %struct.ht_identifier = type { i8*, i32, i32 }
46 %struct.htab = type { i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*, i8**, i32, i32, i32, i32, i32, i8* (i32, i32)*, void (i8*)*, i8*, i8* (i8*, i32, i32)*, void (i8*, i8*)*, i32 }
47 %struct.initial_value_struct = type opaque
48 %struct.lang_decl = type opaque
49 %struct.lang_hooks = type { i8*, i32, i32 (i32)*, i32 (i32, i8**)*, void (%struct.diagnostic_context*)*, i32 (i32, i8*, i32)*, i8 (i8*, i32) zeroext *, i8 (i8**) zeroext *, i8 () zeroext *, void ()*, void ()*, void (i32)*, void ()*, i64 (%struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, %struct.rtx_def* (%struct.tree_node*, %struct.rtx_def*, i32, i32, %struct.rtx_def**)*, i32 (%struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, i32 (%struct.rtx_def*, %struct.tree_node*)*, void (%struct.tree_node*)*, i8 (%struct.tree_node*) zeroext *, %struct.tree_node* (%struct.tree_node*)*, void (%struct.tree_node*)*, void (%struct.tree_node*)*, i8 () zeroext *, i8, i8, void ()*, void (%struct.FILE*, %struct.tree_node*, i32)*, void (%struct.FILE*, %struct.tree_node*, i32)*, void (%struct.FILE*, %struct.tree_node*, i32)*, void (%struct.FILE*, %struct.tree_node*, i32)*, i8* (%struct.tree_node*, i32)*, i32 (%struct.tree_node*, %struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, void (%struct.diagnostic_context*, i8*)*, %struct.tree_node* (%struct.tree_node*)*, i64 (i64)*, %struct.attribute_spec*, %struct.attribute_spec*, %struct.attribute_spec*, i32 (%struct.tree_node*)*, %struct.lang_hooks_for_functions, %struct.lang_hooks_for_tree_inlining, %struct.lang_hooks_for_callgraph, %struct.lang_hooks_for_tree_dump, %struct.lang_hooks_for_decls, %struct.lang_hooks_for_types, i32 (%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)*, %struct.tree_node* (%struct.tree_node*, %struct.tree_node*)*, %struct.tree_node* (i8*, %struct.tree_node*, i32, i32, i8*, %struct.tree_node*)* }
50 %struct.lang_hooks_for_callgraph = type { %struct.tree_node* (%struct.tree_node**, i32*, %struct.tree_node*)*, void (%struct.tree_node*)* }
51 %struct.lang_hooks_for_decls = type { i32 ()*, void (%struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, %struct.tree_node* ()*, i8 (%struct.tree_node*) zeroext *, void ()*, void (%struct.tree_node*)*, i8 (%struct.tree_node*) zeroext *, i8* (%struct.tree_node*)* }
52 %struct.lang_hooks_for_functions = type { void (%struct.function*)*, void (%struct.function*)*, void (%struct.function*)*, void (%struct.function*)*, i8 (%struct.tree_node*) zeroext * }
53 %struct.lang_hooks_for_tree_dump = type { i8 (i8*, %struct.tree_node*) zeroext *, i32 (%struct.tree_node*)* }
54 %struct.lang_hooks_for_tree_inlining = type { %struct.tree_node* (%struct.tree_node**, i32*, %struct.tree_node* (%struct.tree_node**, i32*, i8*)*, i8*, %struct.pointer_set_t*)*, i32 (%struct.tree_node**)*, i32 (%struct.tree_node*)*, %struct.tree_node* (i8*, %struct.tree_node*)*, i32 (%struct.tree_node*, %struct.tree_node*)*, i32 (%struct.tree_node*)*, i8 (%struct.tree_node*, %struct.tree_node*) zeroext *, i32 (%struct.tree_node*)*, void (%struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32)* }
55 %struct.lang_hooks_for_types = type { %struct.tree_node* (i32)*, %struct.tree_node* (i32, i32)*, %struct.tree_node* (i32, i32)*, %struct.tree_node* (%struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, %struct.tree_node* (i32, %struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, void (%struct.tree_node*, i8*)*, void (%struct.tree_node*, %struct.tree_node*)*, %struct.tree_node* (%struct.tree_node*)*, i8 }
56 %struct.lang_type = type opaque
57 %struct.language_function = type opaque
58 %struct.location_t = type { i8*, i32 }
59 %struct.loop = type opaque
60 %struct.machine_function = type { %struct.rtx_def*, i32, i32, i32, %struct.arm_stack_offsets, i32, i32, i32, [14 x %struct.rtx_def*] }
61 %struct.mem_attrs = type { i64, %struct.tree_node*, %struct.rtx_def*, %struct.rtx_def*, i32 }
62 %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (i8*, i32)*, void (i8*, %struct._obstack_chunk*)*, i8*, i8 }
63 %struct.output_buffer = type { %struct.obstack, %struct.FILE*, i32, [128 x i8] }
64 %struct.phi_arg_d = type { %struct.tree_node*, i8 }
65 %struct.pointer_set_t = type opaque
66 %struct.pretty_printer = type { %struct.output_buffer*, i8*, i32, i32, i32, i32, i32, i8 (%struct.pretty_printer*, %struct.text_info*) zeroext *, i8, i8 }
67 %struct.ptr_info_def = type { i8, %struct.bitmap_head_def*, %struct.tree_node* }
68 %struct.real_value = type { i8, [3 x i8], [5 x i32] }
69 %struct.reg_attrs = type { %struct.tree_node*, i64 }
70 %struct.reg_info_def = type opaque
71 %struct.reorder_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, i32, i32, i32 }
72 %struct.rtunion = type { i32 }
73 %struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
74 %struct.rtx_def = type { i16, i8, i8, %struct.u }
75 %struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* }
76 %struct.stmt_ann_d = type { %struct.tree_ann_common_d, i8, %struct.basic_block_def*, %struct.stmt_operands_d, %struct.dataflow_d*, %struct.bitmap_head_def*, i32 }
77 %struct.stmt_operands_d = type { %struct.def_optype_d*, %struct.def_optype_d*, %struct.v_may_def_optype_d*, %struct.vuse_optype_d*, %struct.v_may_def_optype_d* }
78 %struct.temp_slot = type opaque
79 %struct.text_info = type { i8*, i8**, i32 }
80 %struct.tree_ann_common_d = type { i32, i8*, %struct.tree_node* }
81 %struct.tree_ann_d = type { %struct.stmt_ann_d }
82 %struct.tree_binfo = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.VEC_tree*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.VEC_tree }
83 %struct.tree_block = type { %struct.tree_common, i8, [3 x i8], %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node* }
84 %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_ann_d*, i8, i8, i8, i8, i8 }
85 %struct.tree_complex = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node* }
86 %struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, i32, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* }
87 %struct.tree_decl_u1 = type { i64 }
88 %struct.tree_decl_u1_a = type { i32 }
89 %struct.tree_decl_u2 = type { %struct.function* }
90 %struct.tree_exp = type { %struct.tree_common, %struct.location_t*, i32, %struct.tree_node*, [1 x %struct.tree_node*] }
91 %struct.tree_identifier = type { %struct.tree_common, %struct.ht_identifier }
92 %struct.tree_int_cst = type { %struct.tree_common, %struct.tree_int_cst_lowhi }
93 %struct.tree_int_cst_lowhi = type { i64, i64 }
94 %struct.tree_list = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node* }
95 %struct.tree_node = type { %struct.tree_decl }
96 %struct.tree_phi_node = type { %struct.tree_common, %struct.tree_node*, i32, i32, i32, %struct.basic_block_def*, %struct.dataflow_d*, [1 x %struct.phi_arg_d] }
97 %struct.tree_real_cst = type { %struct.tree_common, %struct.real_value* }
98 %struct.tree_ssa_name = type { %struct.tree_common, %struct.tree_node*, i32, %struct.ptr_info_def*, %struct.tree_node*, i8* }
99 %struct.tree_statement_list = type { %struct.tree_common, %struct.tree_statement_list_node*, %struct.tree_statement_list_node* }
100 %struct.tree_statement_list_node = type { %struct.tree_statement_list_node*, %struct.tree_statement_list_node*, %struct.tree_node* }
101 %struct.tree_stmt_iterator = type { %struct.tree_statement_list_node*, %struct.tree_node* }
102 %struct.tree_string = type { %struct.tree_common, i32, [1 x i8] }
103 %struct.tree_type = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i16, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.rtunion, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_type* }
104 %struct.tree_type_symtab = type { i32 }
105 %struct.tree_value_handle = type { %struct.tree_common, %struct.value_set*, i32 }
106 %struct.tree_vec = type { %struct.tree_common, i32, [1 x %struct.tree_node*] }
107 %struct.tree_vector = type { %struct.tree_common, %struct.tree_node* }
108 %struct.u = type { [1 x i64] }
109 %struct.use_operand_ptr = type { %struct.tree_node** }
110 %struct.use_optype_d = type { i32, [1 x %struct.def_operand_ptr] }
111 %struct.v_def_use_operand_type_t = type { %struct.tree_node*, %struct.tree_node* }
112 %struct.v_may_def_optype_d = type { i32, [1 x %struct.elt_t] }
113 %struct.v_must_def_optype_d = type { i32, [1 x %struct.elt_t] }
114 %struct.value_set = type opaque
115 %struct.var_ann_d = type { %struct.tree_ann_common_d, i8, i8, %struct.tree_node*, %struct.varray_head_tag*, i32, i32, i32, %struct.tree_node*, %struct.tree_node* }
116 %struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* }
117 %struct.varasm_status = type opaque
118 %struct.varray_data = type { [1 x i64] }
119 %struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u }
120 %struct.vuse_optype_d = type { i32, [1 x %struct.tree_node*] }
121 @gt_pch_rs_gt_gimplify_h = external global [2 x %struct.ggc_root_tab] ; <[2 x %struct.ggc_root_tab]*> [#uses=0]
122 @tmp_var_id_num = external global i32 ; [#uses=0]
123 @gt_ggc_r_gt_gimplify_h = external global [1 x %struct.ggc_root_tab] ; <[1 x %struct.ggc_root_tab]*> [#uses=0]
124 @__FUNCTION__.19956 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
125 @str = external global [42 x i8] ; <[42 x i8]*> [#uses=1]
126 @__FUNCTION__.19974 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
127 @gimplify_ctxp = external global %struct.gimplify_ctx* ; <%struct.gimplify_ctx**> [#uses=0]
128 @cl_pf_opts = external global %struct.cl_perfunc_opts ; <%struct.cl_perfunc_opts*> [#uses=0]
129 @__FUNCTION__.20030 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
130 @__FUNCTION__.20099 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
131 @global_trees = external global [47 x %struct.tree_node*] ; <[47 x %struct.tree_node*]*> [#uses=0]
132 @tree_code_type = external global [0 x i32] ; <[0 x i32]*> [#uses=2]
133 @current_function_decl = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=0]
134 @str1 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
135 @str2 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
136 @__FUNCTION__.20151 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
137 @__FUNCTION__.20221 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
138 @tree_code_length = external global [0 x i8] ; <[0 x i8]*> [#uses=0]
139 @__FUNCTION__.20435 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
140 @__FUNCTION__.20496 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
141 @cfun = external global %struct.function* ; <%struct.function**> [#uses=0]
142 @__FUNCTION__.20194 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
143 @__FUNCTION__.19987 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
144 @__FUNCTION__.20532 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
145 @__FUNCTION__.20583 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
146 @__FUNCTION__.20606 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
147 @__FUNCTION__.20644 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
148 @__FUNCTION__.20681 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
149 @__FUNCTION__.20700 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
150 @__FUNCTION__.21426 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
151 @__FUNCTION__.21471 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
152 @__FUNCTION__.21962 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
153 @__FUNCTION__.22992 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
154 @__FUNCTION__.23735 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
155 @lang_hooks = external global %struct.lang_hooks ; <%struct.lang_hooks*> [#uses=0]
156 @__FUNCTION__.27383 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
157 @__FUNCTION__.20776 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
158 @__FUNCTION__.10672 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
159 @str3 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
160 @str4 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
161 @__FUNCTION__.20065 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
162 @__FUNCTION__.23256 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
163 @__FUNCTION__.23393 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
164 @__FUNCTION__.20043 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
165 @__FUNCTION__.20729 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
166 @__FUNCTION__.20563 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
167 @__FUNCTION__.10663 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
168 @__FUNCTION__.20367 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
169 @__FUNCTION__.20342 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
170 @input_location = external global %struct.location_t ; <%struct.location_t*> [#uses=0]
171 @__FUNCTION__.24510 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
172 @__FUNCTION__.25097 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
173 @__FUNCTION__.24705 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
174 @str5 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
175 @__FUNCTION__.25136 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
176 @__FUNCTION__.24450 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
177 @implicit_built_in_decls = external global [471 x %struct.tree_node*] ; <[471 x %struct.tree_node*]*> [#uses=0]
178 @__FUNCTION__.24398 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
179 @__FUNCTION__.26156 = external global [14 x i8] ; <[14 x i8]*> [#uses=1]
180 @unknown_location = external global %struct.location_t ; <%struct.location_t*> [#uses=0]
181 @__FUNCTION__.23038 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
182 @str6 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
183 @__FUNCTION__.25476 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
184 @__FUNCTION__.22136 = external global [20 x i8] ; <[20 x i8]*> [#uses=1]
185 @__FUNCTION__.21997 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
186 @__FUNCTION__.21247 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
187 @built_in_decls = external global [471 x %struct.tree_node*] ; <[471 x %struct.tree_node*]*> [#uses=0]
188 @__FUNCTION__.21924 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
189 @__FUNCTION__.21861 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
190 @global_dc = external global %struct.diagnostic_context* ; <%struct.diagnostic_context**> [#uses=0]
191 @__FUNCTION__.25246 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
192 @str7 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
193 @stderr = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
194 @str8 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
195 @str9 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
196 @__FUNCTION__.27653 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
197 @__FUNCTION__.27322 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
198 @__FUNCTION__.27139 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
199 @__FUNCTION__.22462 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
200 @str10 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
201 @__FUNCTION__.25389 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
202 @__FUNCTION__.25650 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
203 @str11 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
204 @str12 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
205 @str13 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
206 @__FUNCTION__.27444 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
207 @timevar_enable = external global i8 ; [#uses=0]
208 @__FUNCTION__.27533 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
209 @flag_instrument_function_entry_exit = external global i32 ; [#uses=0]
210 @__FUNCTION__.25331 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
211 @__FUNCTION__.20965 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
212 @str14 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
213 @__FUNCTION__.26053 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
214 @__FUNCTION__.26004 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
215 @str15 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
216 @__FUNCTION__.21584 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
217 @str16 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
218 @__FUNCTION__.25903 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
219 @__FUNCTION__.22930 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
220 @__FUNCTION__.23832 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
221 @str17 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
222 @__FUNCTION__.24620 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
223 @__FUNCTION__.24582 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
224 @__FUNCTION__.21382 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
225 @__FUNCTION__.21117 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
226
227
228 declare void @push_gimplify_context()
229
230 declare i32 @gimple_tree_hash(i8*)
231
232 declare i32 @iterative_hash_expr(%struct.tree_node*, i32)
233
234 declare i32 @gimple_tree_eq(i8*, i8*)
235
236 declare i32 @operand_equal_p(%struct.tree_node*, %struct.tree_node*, i32)
237
238 declare void @fancy_abort(i8*, i32, i8*)
239
240 declare i8* @xcalloc(i32, i32)
241
242 declare %struct.htab* @htab_create(i32, i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*)
243
244 declare void @free(i8*)
245
246 declare void @gimple_push_bind_expr(%struct.tree_node*)
247
248 declare void @gimple_pop_bind_expr()
249
250 declare %struct.tree_node* @gimple_current_bind_expr()
251
252 declare fastcc void @gimple_push_condition()
253
254 declare %struct.tree_node* @create_artificial_label()
255
256 declare %struct.tree_node* @build_decl_stat(i32, %struct.tree_node*, %struct.tree_node*)
257
258 declare void @tree_class_check_failed(%struct.tree_node*, i32, i8*, i32, i8*)
259
260 declare %struct.tree_node* @create_tmp_var_name(i8*)
261
262 declare i32 @strlen(i8*)
263
264 declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
265
266 declare i32 @sprintf(i8*, i8*, ...)
267
268 declare %struct.tree_node* @get_identifier(i8*)
269
270 declare %struct.tree_node* @create_tmp_var_raw(%struct.tree_node*, i8*)
271
272 declare %struct.tree_node* @build_qualified_type(%struct.tree_node*, i32)
273
274 declare i8* @get_name(%struct.tree_node*)
275
276 declare void @tree_operand_check_failed(i32, i32, i8*, i32, i8*)
277
278 declare void @tree_check_failed(%struct.tree_node*, i8*, i32, i8*, ...)
279
280 declare void @declare_tmp_vars(%struct.tree_node*, %struct.tree_node*)
281
282 declare %struct.tree_node* @nreverse(%struct.tree_node*)
283
284 declare void @gimple_add_tmp_var(%struct.tree_node*)
285
286 declare void @record_vars(%struct.tree_node*)
287
288 declare %struct.tree_node* @create_tmp_var(%struct.tree_node*, i8*)
289
290 declare void @pop_gimplify_context(%struct.tree_node*)
291
292 declare void @htab_delete(%struct.htab*)
293
294 declare fastcc void @annotate_one_with_locus(%struct.tree_node*, i32, i32)
295
296 declare void @annotate_with_locus(%struct.tree_node*, i32, i32)
297
298 declare %struct.tree_node* @mostly_copy_tree_r(%struct.tree_node**, i32*, i8*)
299
300 declare %struct.tree_node* @copy_tree_r(%struct.tree_node**, i32*, i8*)
301
302 declare %struct.tree_node* @mark_decls_volatile_r(%struct.tree_node**, i32*, i8*)
303
304 declare %struct.tree_node* @copy_if_shared_r(%struct.tree_node**, i32*, i8*)
305
306 declare %struct.tree_node* @walk_tree(%struct.tree_node**, %struct.tree_node* (%struct.tree_node**, i32*, i8*)*, i8*, %struct.pointer_set_t*)
307
308 declare %struct.tree_node* @unmark_visited_r(%struct.tree_node**, i32*, i8*)
309
310 declare fastcc void @unshare_body(%struct.tree_node**, %struct.tree_node*)
311
312 declare %struct.cgraph_node* @cgraph_node(%struct.tree_node*)
313
314 declare fastcc void @unvisit_body(%struct.tree_node**, %struct.tree_node*)
315
316 declare void @unshare_all_trees(%struct.tree_node*)
317
318 declare %struct.tree_node* @unshare_expr(%struct.tree_node*)
319
320 declare %struct.tree_node* @build_and_jump(%struct.tree_node**)
321
322 declare %struct.tree_node* @build1_stat(i32, %struct.tree_node*, %struct.tree_node*)
323
324 declare i32 @compare_case_labels(i8*, i8*)
325
326 declare i32 @tree_int_cst_compare(%struct.tree_node*, %struct.tree_node*)
327
328 declare void @sort_case_labels(%struct.tree_node*)
329
330 declare void @tree_vec_elt_check_failed(i32, i32, i8*, i32, i8*)
331
332 declare void @qsort(i8*, i32, i32, i32 (i8*, i8*)*)
333
334 declare %struct.tree_node* @force_labels_r(%struct.tree_node**, i32*, i8*)
335
336 declare fastcc void @canonicalize_component_ref(%struct.tree_node**)
337
338 declare %struct.tree_node* @get_unwidened(%struct.tree_node*, %struct.tree_node*)
339
340 declare fastcc void @maybe_with_size_expr(%struct.tree_node**)
341
342 declare %struct.tree_node* @substitute_placeholder_in_expr(%struct.tree_node*, %struct.tree_node*)
343
344 declare %struct.tree_node* @build2_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
345
346 declare fastcc %struct.tree_node* @gimple_boolify(%struct.tree_node*)
347
348 declare %struct.tree_node* @convert(%struct.tree_node*, %struct.tree_node*)
349
350 declare %struct.tree_node* @gimplify_init_ctor_preeval_1(%struct.tree_node**, i32*, i8*)
351
352 declare i64 @get_alias_set(%struct.tree_node*)
353
354 declare i32 @alias_sets_conflict_p(i64, i64)
355
356 declare fastcc i8 @cpt_same_type(%struct.tree_node*, %struct.tree_node*) zeroext
357
358 declare %struct.tree_node* @check_pointer_types_r(%struct.tree_node**, i32*, i8*)
359
360 declare %struct.tree_node* @voidify_wrapper_expr(%struct.tree_node*, %struct.tree_node*)
361
362 declare i32 @integer_zerop(%struct.tree_node*)
363
364 declare fastcc void @append_to_statement_list_1(%struct.tree_node*, %struct.tree_node**)
365
366 declare %struct.tree_node* @alloc_stmt_list()
367
368 declare void @tsi_link_after(%struct.tree_stmt_iterator*, %struct.tree_node*, i32)
369
370 declare void @append_to_statement_list_force(%struct.tree_node*, %struct.tree_node**)
371
372 declare void @append_to_statement_list(%struct.tree_node*, %struct.tree_node**)
373
374 declare fastcc %struct.tree_node* @shortcut_cond_r(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**)
375
376 declare %struct.tree_node* @build3_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
377
378 declare fastcc %struct.tree_node* @shortcut_cond_expr(%struct.tree_node*)
379
380 declare %struct.tree_node* @expr_last(%struct.tree_node*)
381
382 declare i8 @block_may_fallthru(%struct.tree_node*) zeroext
383
384 declare fastcc void @gimple_pop_condition(%struct.tree_node**)
385
386 declare %struct.tree_node* @gimple_build_eh_filter(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
387
388 declare void @annotate_all_with_locus(%struct.tree_node**, i32, i32)
389
390 declare fastcc %struct.tree_node* @internal_get_tmp_var(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
391
392 define i32 @gimplify_expr(%struct.tree_node** %expr_p, %struct.tree_node** %pre_p, %struct.tree_node** %post_p, i8 (%struct.tree_node*) zeroext * %gimple_test_f, i32 %fallback) {
393 entry:
394 %internal_post = alloca %struct.tree_node*, align 4 ; <%struct.tree_node**> [#uses=2]
395 %pre_p_addr.0 = select i1 false, %struct.tree_node** null, %struct.tree_node** %pre_p ; <%struct.tree_node**> [#uses=7]
396 %post_p_addr.0 = select i1 false, %struct.tree_node** %internal_post, %struct.tree_node** %post_p ; <%struct.tree_node**> [#uses=7]
397 br i1 false, label %bb277, label %bb191
398
399 bb191: ; preds = %entry
400 ret i32 0
401
402 bb277: ; preds = %entry
403 %tmp283 = call i32 null( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0 ) ; [#uses=1]
404 switch i32 %tmp283, label %bb7478 [
405 i32 0, label %cond_next289
406 i32 -1, label %cond_next298
407 ]
408
409 cond_next289: ; preds = %bb277
410 ret i32 0
411
412 cond_next298: ; preds = %bb277
413 switch i32 0, label %bb7444 [
414 i32 24, label %bb7463
415 i32 25, label %bb7463
416 i32 26, label %bb7463
417 i32 27, label %bb7463
418 i32 28, label %bb7463
419 i32 33, label %bb4503
420 i32 39, label %bb397
421 i32 40, label %bb5650
422 i32 41, label %bb4339
423 i32 42, label %bb4350
424 i32 43, label %bb4350
425 i32 44, label %bb319
426 i32 45, label %bb397
427 i32 46, label %bb6124
428 i32 47, label %bb7463
429 i32 49, label %bb5524
430 i32 50, label %bb1283
431 i32 51, label %bb1289
432 i32 52, label %bb1289
433 i32 53, label %bb5969
434 i32 54, label %bb408
435 i32 56, label %bb5079
436 i32 57, label %bb428
437 i32 59, label %bb5965
438 i32 74, label %bb4275
439 i32 75, label %bb4275
440 i32 76, label %bb4275
441 i32 77, label %bb4275
442 i32 91, label %bb1296
443 i32 92, label %bb1296
444 i32 96, label %bb1322
445 i32 112, label %bb2548
446 i32 113, label %bb2548
447 i32 115, label %bb397
448 i32 116, label %bb5645
449 i32 117, label %bb1504
450 i32 121, label %bb397
451 i32 122, label %bb397
452 i32 123, label %bb313
453 i32 124, label %bb313
454 i32 125, label %bb313
455 i32 126, label %bb313
456 i32 127, label %bb2141
457 i32 128, label %cond_next5873
458 i32 129, label %cond_next5873
459 i32 130, label %bb4536
460 i32 131, label %bb5300
461 i32 132, label %bb5170
462 i32 133, label %bb5519
463 i32 134, label %bb5091
464 i32 135, label %bb5083
465 i32 136, label %bb5087
466 i32 137, label %bb5382
467 i32 139, label %bb7463
468 i32 140, label %bb7463
469 i32 142, label %bb5974
470 i32 143, label %bb6049
471 i32 147, label %bb6296
472 i32 151, label %cond_next6474
473 ]
474
475 bb313: ; preds = %cond_next298, %cond_next298, %cond_next298, %cond_next298
476 ret i32 0
477
478 bb319: ; preds = %cond_next298
479 ret i32 0
480
481 bb397: ; preds = %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298
482 ret i32 0
483
484 bb408: ; preds = %cond_next298
485 %tmp413 = call fastcc i32 @gimplify_cond_expr( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0, %struct.tree_node* null, i32 %fallback ) ; [#uses=0]
486 ret i32 0
487
488 bb428: ; preds = %cond_next298
489 ret i32 0
490
491 bb1283: ; preds = %cond_next298
492 ret i32 0
493
494 bb1289: ; preds = %cond_next298, %cond_next298
495 ret i32 0
496
497 bb1296: ; preds = %cond_next298, %cond_next298
498 ret i32 0
499
500 bb1322: ; preds = %cond_next298
501 ret i32 0
502
503 bb1504: ; preds = %cond_next298
504 ret i32 0
505
506 bb2141: ; preds = %cond_next298
507 ret i32 0
508
509 bb2548: ; preds = %cond_next298, %cond_next298
510 %tmp2554 = load %struct.tree_node** %expr_p ; <%struct.tree_node*> [#uses=2]
511 %tmp2562 = and i32 0, 255 ; [#uses=1]
512 %tmp2569 = add i8 0, -4 ; [#uses=1]
513 icmp ugt i8 %tmp2569, 5 ; :0 [#uses=2]
514 %tmp2587 = load i8* null ; [#uses=1]
515 icmp eq i8 %tmp2587, 0 ; :1 [#uses=2]
516 %tmp2607 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=2]
517 br i1 false, label %bb2754, label %cond_next2617
518
519 cond_next2617: ; preds = %bb2548
520 ret i32 0
521
522 bb2754: ; preds = %bb2548
523 br i1 %0, label %cond_true2780, label %cond_next2783
524
525 cond_true2780: ; preds = %bb2754
526 call void @tree_class_check_failed( %struct.tree_node* %tmp2554, i32 9, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 1415, i8* getelementptr ([20 x i8]* @__FUNCTION__.22136, i32 0, i32 0) )
527 unreachable
528
529 cond_next2783: ; preds = %bb2754
530 %tmp2825 = and i32 0, 255 ; [#uses=1]
531 %tmp2829 = load i32* null ; [#uses=1]
532 %tmp28292830 = trunc i32 %tmp2829 to i8 ; [#uses=1]
533 %tmp2832 = add i8 %tmp28292830, -4 ; [#uses=1]
534 icmp ugt i8 %tmp2832, 5 ; :2 [#uses=1]
535 icmp eq i8 0, 0 ; :3 [#uses=1]
536 %tmp28652866 = bitcast %struct.tree_node* %tmp2607 to %struct.tree_exp* ; <%struct.tree_exp*> [#uses=1]
537 %tmp2868 = getelementptr %struct.tree_exp* %tmp28652866, i32 0, i32 4, i32 0 ; <%struct.tree_node**> [#uses=1]
538 %tmp2870 = load %struct.tree_node** %tmp2868 ; <%struct.tree_node*> [#uses=1]
539 br i1 %1, label %cond_true2915, label %cond_next2927
540
541 cond_true2915: ; preds = %cond_next2783
542 unreachable
543
544 cond_next2927: ; preds = %cond_next2783
545 %tmp2938 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=1]
546 %tmp2944 = load i32* null ; [#uses=1]
547 %tmp2946 = and i32 %tmp2944, 255 ; [#uses=1]
548 %tmp2949 = getelementptr [0 x i32]* @tree_code_type, i32 0, i32 %tmp2946 ; [#uses=1]
549 %tmp2950 = load i32* %tmp2949 ; [#uses=1]
550 icmp eq i32 %tmp2950, 2 ; :4 [#uses=1]
551 br i1 %4, label %cond_next2954, label %cond_true2951
552
553 cond_true2951: ; preds = %cond_next2927
554 call void @tree_class_check_failed( %struct.tree_node* %tmp2938, i32 2, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 1415, i8* getelementptr ([20 x i8]* @__FUNCTION__.22136, i32 0, i32 0) )
555 unreachable
556
557 cond_next2954: ; preds = %cond_next2927
558 br i1 %0, label %cond_true2991, label %cond_next2994
559
560 cond_true2991: ; preds = %cond_next2954
561 unreachable
562
563 cond_next2994: ; preds = %cond_next2954
564 br i1 %1, label %cond_true3009, label %cond_next3021
565
566 cond_true3009: ; preds = %cond_next2994
567 call void @tree_operand_check_failed( i32 0, i32 %tmp2562, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 1415, i8* getelementptr ([20 x i8]* @__FUNCTION__.22136, i32 0, i32 0) )
568 unreachable
569
570 cond_next3021: ; preds = %cond_next2994
571 br i1 %2, label %cond_true3044, label %cond_next3047
572
573 cond_true3044: ; preds = %cond_next3021
574 call void @tree_class_check_failed( %struct.tree_node* %tmp2607, i32 9, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 1415, i8* getelementptr ([20 x i8]* @__FUNCTION__.22136, i32 0, i32 0) )
575 unreachable
576
577 cond_next3047: ; preds = %cond_next3021
578 br i1 %3, label %cond_true3062, label %cond_next3074
579
580 cond_true3062: ; preds = %cond_next3047
581 call void @tree_operand_check_failed( i32 0, i32 %tmp2825, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 1415, i8* getelementptr ([20 x i8]* @__FUNCTION__.22136, i32 0, i32 0) )
582 unreachable
583
584 cond_next3074: ; preds = %cond_next3047
585 %tmp3084 = getelementptr %struct.tree_node* %tmp2870, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1]
586 %tmp3085 = load %struct.tree_node** %tmp3084 ; <%struct.tree_node*> [#uses=1]
587 %tmp31043105 = bitcast %struct.tree_node* %tmp3085 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
588 %tmp3106 = getelementptr %struct.tree_type* %tmp31043105, i32 0, i32 6 ; [#uses=1]
589 %tmp31063107 = bitcast i16* %tmp3106 to i32* ; [#uses=1]
590 %tmp3108 = load i32* %tmp31063107 ; [#uses=1]
591 xor i32 %tmp3108, 0 ; :5 [#uses=1]
592 %tmp81008368 = and i32 %5, 65024 ; [#uses=1]
593 icmp eq i32 %tmp81008368, 0 ; :6 [#uses=1]
594 br i1 %6, label %cond_next3113, label %bb3351
595
596 cond_next3113: ; preds = %cond_next3074
597 ret i32 0
598
599 bb3351: ; preds = %cond_next3074
600 %tmp3354 = call i8 @tree_ssa_useless_type_conversion( %struct.tree_node* %tmp2554 ) zeroext ; [#uses=1]
601 icmp eq i8 %tmp3354, 0 ; :7 [#uses=1]
602 %tmp3424 = load i32* null ; [#uses=1]
603 br i1 %7, label %cond_next3417, label %cond_true3356
604
605 cond_true3356: ; preds = %bb3351
606 ret i32 0
607
608 cond_next3417: ; preds = %bb3351
609 br i1 false, label %cond_true3429, label %cond_next4266
610
611 cond_true3429: ; preds = %cond_next3417
612 %tmp3443 = and i32 %tmp3424, 255 ; [#uses=0]
613 ret i32 0
614
615 cond_next4266: ; preds = %cond_next3417
616 %tmp4268 = load %struct.tree_node** %expr_p ; <%struct.tree_node*> [#uses=1]
617 icmp eq %struct.tree_node* %tmp4268, null ; :8 [#uses=1]
618 br i1 %8, label %bb4275, label %bb7463
619
620 bb4275: ; preds = %cond_next4266, %cond_next298, %cond_next298, %cond_next298, %cond_next298
621 %tmp4289 = and i32 0, 255 ; [#uses=2]
622 %tmp4292 = getelementptr [0 x i32]* @tree_code_type, i32 0, i32 %tmp4289 ; [#uses=1]
623 %tmp4293 = load i32* %tmp4292 ; [#uses=1]
624 %tmp42934294 = trunc i32 %tmp4293 to i8 ; [#uses=1]
625 %tmp4296 = add i8 %tmp42934294, -4 ; [#uses=1]
626 icmp ugt i8 %tmp4296, 5 ; :9 [#uses=1]
627 br i1 %9, label %cond_true4297, label %cond_next4300
628
629 cond_true4297: ; preds = %bb4275
630 unreachable
631
632 cond_next4300: ; preds = %bb4275
633 %tmp4314 = load i8* null ; [#uses=1]
634 icmp eq i8 %tmp4314, 0 ; :10 [#uses=1]
635 br i1 %10, label %cond_true4315, label %cond_next4327
636
637 cond_true4315: ; preds = %cond_next4300
638 call void @tree_operand_check_failed( i32 0, i32 %tmp4289, i8* getelementptr ([42 x i8]* @str, i32 0, i32 0), i32 3997, i8* getelementptr ([14 x i8]* @__FUNCTION__.26156, i32 0, i32 0) )
639 unreachable
640
641 cond_next4327: ; preds = %cond_next4300
642 %tmp4336 = call i32 @gimplify_expr( %struct.tree_node** null, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0, i8 (%struct.tree_node*) zeroext * @is_gimple_val, i32 1 ) ; [#uses=0]
643 ret i32 0
644
645 bb4339: ; preds = %cond_next298
646 ret i32 0
647
648 bb4350: ; preds = %cond_next298, %cond_next298
649 ret i32 0
650
651 bb4503: ; preds = %cond_next298
652 ret i32 0
653
654 bb4536: ; preds = %cond_next298
655 ret i32 0
656
657 bb5079: ; preds = %cond_next298
658 ret i32 0
659
660 bb5083: ; preds = %cond_next298
661 ret i32 0
662
663 bb5087: ; preds = %cond_next298
664 ret i32 0
665
666 bb5091: ; preds = %cond_next298
667 ret i32 0
668
669 bb5170: ; preds = %cond_next298
670 ret i32 0
671
672 bb5300: ; preds = %cond_next298
673 ret i32 0
674
675 bb5382: ; preds = %cond_next298
676 ret i32 0
677
678 bb5519: ; preds = %cond_next298
679 ret i32 0
680
681 bb5524: ; preds = %cond_next298
682 ret i32 0
683
684 bb5645: ; preds = %cond_next298
685 ret i32 0
686
687 bb5650: ; preds = %cond_next298
688 ret i32 0
689
690 cond_next5873: ; preds = %cond_next298, %cond_next298
691 ret i32 0
692
693 bb5965: ; preds = %cond_next298
694 %tmp5968 = call fastcc i32 @gimplify_cleanup_point_expr( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0 ) ; [#uses=0]
695 ret i32 0
696
697 bb5969: ; preds = %cond_next298
698 %tmp5973 = call fastcc i32 @gimplify_target_expr( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0 ) ; [#uses=0]
699 ret i32 0
700
701 bb5974: ; preds = %cond_next298
702 ret i32 0
703
704 bb6049: ; preds = %cond_next298
705 ret i32 0
706
707 bb6124: ; preds = %cond_next298
708 ret i32 0
709
710 bb6296: ; preds = %cond_next298
711 ret i32 0
712
713 cond_next6474: ; preds = %cond_next298
714 icmp eq %struct.tree_node** %internal_post, %post_p_addr.0 ; :11 [#uses=1]
715 %iftmp.381.0 = select i1 %11, %struct.tree_node** null, %struct.tree_node** %post_p_addr.0 ; <%struct.tree_node**> [#uses=1]
716 %tmp6490 = call i32 @gimplify_expr( %struct.tree_node** null, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %iftmp.381.0, i8 (%struct.tree_node*) zeroext * %gimple_test_f, i32 %fallback ) ; [#uses=0]
717 %tmp6551 = call i32 @gimplify_expr( %struct.tree_node** null, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0, i8 (%struct.tree_node*) zeroext * @is_gimple_val, i32 1 ) ; [#uses=0]
718 ret i32 0
719
720 bb7444: ; preds = %cond_next298
721 ret i32 0
722
723 bb7463: ; preds = %cond_next4266, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298
724 ret i32 0
725
726 bb7478: ; preds = %bb277
727 ret i32 0
728 }
729
730 declare i8 @is_gimple_formal_tmp_rhs(%struct.tree_node*) zeroext
731
732 declare void @gimplify_and_add(%struct.tree_node*, %struct.tree_node**)
733
734 declare %struct.tree_node* @get_initialized_tmp_var(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**)
735
736 declare %struct.tree_node* @get_formal_tmp_var(%struct.tree_node*, %struct.tree_node**)
737
738 declare fastcc void @gimplify_init_ctor_preeval(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.gimplify_init_ctor_preeval_data*)
739
740 declare i8 @type_contains_placeholder_p(%struct.tree_node*) zeroext
741
742 declare i8 @is_gimple_mem_rhs(%struct.tree_node*) zeroext
743
744 declare fastcc i32 @gimplify_modify_expr_rhs(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
745
746 declare %struct.tree_node* @fold_indirect_ref(%struct.tree_node*)
747
748 declare fastcc i32 @gimplify_compound_expr(%struct.tree_node**, %struct.tree_node**, i8 zeroext )
749
750 declare i8 @is_gimple_lvalue(%struct.tree_node*) zeroext
751
752 declare void @categorize_ctor_elements(%struct.tree_node*, i64*, i64*, i64*, i8*)
753
754 declare void @lhd_set_decl_assembler_name(%struct.tree_node*)
755
756 declare i64 @int_size_in_bytes(%struct.tree_node*)
757
758 declare i32 @can_move_by_pieces(i64, i32)
759
760 declare i64 @count_type_elements(%struct.tree_node*)
761
762 declare void @gimplify_stmt(%struct.tree_node**)
763
764 declare %struct.tree_node* @get_base_address(%struct.tree_node*)
765
766 declare fastcc void @gimplify_init_ctor_eval(%struct.tree_node*, %struct.tree_node*, %struct.tree_node**, i8 zeroext )
767
768 declare %struct.tree_node* @build_complex(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
769
770 declare i8 (%struct.tree_node*) zeroext * @rhs_predicate_for(%struct.tree_node*)
771
772 declare %struct.tree_node* @build_vector(%struct.tree_node*, %struct.tree_node*)
773
774 declare i8 @is_gimple_val(%struct.tree_node*) zeroext
775
776 declare i8 @is_gimple_reg_type(%struct.tree_node*) zeroext
777
778 declare fastcc i32 @gimplify_cond_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node*, i32)
779
780 declare fastcc i32 @gimplify_modify_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
781
782 declare %struct.tree_node* @tree_cons_stat(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
783
784 declare %struct.tree_node* @build_fold_addr_expr(%struct.tree_node*)
785
786 declare %struct.tree_node* @build_function_call_expr(%struct.tree_node*, %struct.tree_node*)
787
788 declare i8 @is_gimple_addressable(%struct.tree_node*) zeroext
789
790 declare i8 @is_gimple_reg(%struct.tree_node*) zeroext
791
792 declare %struct.tree_node* @make_ssa_name(%struct.tree_node*, %struct.tree_node*)
793
794 declare i8 @tree_ssa_useless_type_conversion(%struct.tree_node*) zeroext
795
796 declare fastcc i32 @gimplify_self_mod_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
797
798 declare fastcc i32 @gimplify_compound_lval(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i32)
799
800 declare %struct.tree_node* @get_callee_fndecl(%struct.tree_node*)
801
802 declare %struct.tree_node* @fold_builtin(%struct.tree_node*, i8 zeroext )
803
804 declare void @error(i8*, ...)
805
806 declare %struct.tree_node* @build_empty_stmt()
807
808 declare i8 @fold_builtin_next_arg(%struct.tree_node*) zeroext
809
810 declare fastcc i32 @gimplify_arg(%struct.tree_node**, %struct.tree_node**)
811
812 declare i8 @is_gimple_call_addr(%struct.tree_node*) zeroext
813
814 declare i32 @call_expr_flags(%struct.tree_node*)
815
816 declare void @recalculate_side_effects(%struct.tree_node*)
817
818 declare %struct.tree_node* @fold_convert(%struct.tree_node*, %struct.tree_node*)
819
820 declare void @recompute_tree_invarant_for_addr_expr(%struct.tree_node*)
821
822 declare i32 @gimplify_va_arg_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
823
824 declare %struct.tree_node* @size_int_kind(i64, i32)
825
826 declare %struct.tree_node* @size_binop(i32, %struct.tree_node*, %struct.tree_node*)
827
828 declare %struct.tree_node* @build4_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
829
830 declare void @gimplify_type_sizes(%struct.tree_node*, %struct.tree_node**)
831
832 declare void @gimplify_one_sizepos(%struct.tree_node**, %struct.tree_node**)
833
834 declare %struct.tree_node* @build_pointer_type(%struct.tree_node*)
835
836 declare %struct.tree_node* @build_fold_indirect_ref(%struct.tree_node*)
837
838 declare fastcc i32 @gimplify_bind_expr(%struct.tree_node**, %struct.tree_node*, %struct.tree_node**)
839
840 declare fastcc void @gimplify_loop_expr(%struct.tree_node**, %struct.tree_node**)
841
842 declare fastcc i32 @gimplify_switch_expr(%struct.tree_node**, %struct.tree_node**)
843
844 declare %struct.tree_node* @decl_function_context(%struct.tree_node*)
845
846 declare %struct.varray_head_tag* @varray_grow(%struct.varray_head_tag*, i32)
847
848 declare fastcc void @gimplify_return_expr(%struct.tree_node*, %struct.tree_node**)
849
850 declare fastcc i32 @gimplify_save_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
851
852 declare fastcc i32 @gimplify_asm_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
853
854 declare void @gimplify_to_stmt_list(%struct.tree_node**)
855
856 declare fastcc i32 @gimplify_cleanup_point_expr(%struct.tree_node**, %struct.tree_node**)
857
858 declare fastcc i32 @gimplify_target_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
859
860 declare void @tsi_delink(%struct.tree_stmt_iterator*)
861
862 declare void @tsi_link_before(%struct.tree_stmt_iterator*, %struct.tree_node*, i32)
863
864 declare i8 @is_gimple_stmt(%struct.tree_node*) zeroext
865
866 declare void @print_generic_expr(%struct.FILE*, %struct.tree_node*, i32)
867
868 declare void @debug_tree(%struct.tree_node*)
869
870 declare void @internal_error(i8*, ...)
871
872 declare %struct.tree_node* @force_gimple_operand(%struct.tree_node*, %struct.tree_node**, i8 zeroext , %struct.tree_node*)
873
874 declare i8 @is_gimple_reg_rhs(%struct.tree_node*) zeroext
875
876 declare void @add_referenced_tmp_var(%struct.tree_node*)
877
878 declare i8 @contains_placeholder_p(%struct.tree_node*) zeroext
879
880 declare %struct.varray_head_tag* @varray_init(i32, i32, i8*)
881
882 declare i32 @handled_component_p(%struct.tree_node*)
883
884 declare void @varray_check_failed(%struct.varray_head_tag*, i32, i8*, i32, i8*)
885
886 declare %struct.tree_node* @array_ref_low_bound(%struct.tree_node*)
887
888 declare i8 @is_gimple_min_invariant(%struct.tree_node*) zeroext
889
890 declare i8 @is_gimple_formal_tmp_reg(%struct.tree_node*) zeroext
891
892 declare %struct.tree_node* @array_ref_element_size(%struct.tree_node*)
893
894 declare %struct.tree_node* @component_ref_field_offset(%struct.tree_node*)
895
896 declare i8 @is_gimple_min_lval(%struct.tree_node*) zeroext
897
898 declare void @varray_underflow(%struct.varray_head_tag*, i8*, i32, i8*)
899
900 declare i32 @list_length(%struct.tree_node*)
901
902 declare i8 @parse_output_constraint(i8**, i32, i32, i32, i8*, i8*, i8*) zeroext
903
904 declare i8* @xstrdup(i8*)
905
906 declare %struct.tree_node* @build_string(i32, i8*)
907
908 declare i8* @strchr(i8*, i32)
909
910 declare %struct.tree_node* @build_tree_list_stat(%struct.tree_node*, %struct.tree_node*)
911
912 declare %struct.tree_node* @chainon(%struct.tree_node*, %struct.tree_node*)
913
914 declare i8 @parse_input_constraint(i8**, i32, i32, i32, i32, i8**, i8*, i8*) zeroext
915
916 declare i8 @is_gimple_asm_val(%struct.tree_node*) zeroext
917
918 declare void @gimplify_body(%struct.tree_node**, %struct.tree_node*, i8 zeroext )
919
920 declare void @timevar_push_1(i32)
921
922 declare %struct.tree_node* @gimplify_parameters()
923
924 declare %struct.tree_node* @expr_only(%struct.tree_node*)
925
926 declare void @timevar_pop_1(i32)
927
928 declare void @gimplify_function_tree(%struct.tree_node*)
929
930 declare void @allocate_struct_function(%struct.tree_node*)
931
932 declare %struct.tree_node* @make_tree_vec_stat(i32)
933
934 declare %struct.tree_node* @tsi_split_statement_list_after(%struct.tree_stmt_iterator*)
935
936 declare i8 @is_gimple_condexpr(%struct.tree_node*) zeroext
937
938 declare %struct.tree_node* @invert_truthvalue(%struct.tree_node*)
939
940 declare i8 @initializer_zerop(%struct.tree_node*) zeroext
941
942 declare i32 @simple_cst_equal(%struct.tree_node*, %struct.tree_node*)
943
944 declare i32 @aggregate_value_p(%struct.tree_node*, %struct.tree_node*)
945
946 declare i32 @fwrite(i8*, i32, i32, %struct.FILE*)
11
22 %struct.Connection = type { i32, [10 x i8], i32 }
33 %struct.IntChunk = type { %struct.cppobjtype, i32, i32*, i32 }
4 %struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) signext *, i16 (%struct.Point*) signext *, double (%struct.Point*)*, double (%struct.Point*)* }
4 %struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) *, i16 (%struct.Point*) *, double (%struct.Point*)*, double (%struct.Point*)* }
55 %struct.RefPoint = type { %struct.Point*, %struct.cppobjtype }
66 %struct.ShortArray = type { %struct.cppobjtype, i32, i16* }
77 %struct.TestObj = type { i8*, %struct.cppobjtype, i8, [32 x i8], i8*, i8**, i16, i16, i32, i32, i32, i32, float, double, %struct.cppobjtype, i32, i16*, i16**, i8**, i32, %struct.XyPoint, [3 x %struct.Connection], %struct.Point*, %struct.XyPoint*, i32, i8*, i8*, i16*, %struct.ShortArray, %struct.IntChunk, %struct.cppobjtype, %struct.cppobjtype, %struct.RefPoint, i32, %struct.cppobjtype, %struct.cppobjtype }
4545 cond_true53.i: ; preds = %bb17.i
4646 ret { i16, %struct.rnode* }* null
4747 cond_false99.i: ; preds = %bb17.i
48 %tmp106.i = malloc %struct.ch_set ; <%struct.ch_set*> [#uses=1]
48 %malloccall = tail call i8* @malloc(i32 trunc (i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1** null, i32 1) to i64), i64 2) to i32))
49 %tmp106.i = bitcast i8* %malloccall to %struct.ch_set*
4950 br i1 false, label %bb126.i, label %cond_next119.i
5051 cond_next119.i: ; preds = %cond_false99.i, %bb42
5152 %curr_ptr.0.reg2mem.0.i = phi %struct.ch_set* [ %tmp106.i, %cond_false99.i ], [ null, %bb42 ] ; <%struct.ch_set*> [#uses=2]
5758 bb78: ; preds = %entry
5859 ret { i16, %struct.rnode* }* null
5960 }
61
62 declare noalias i8* @malloc(i32)
+0
-29
test/CodeGen/ARM/2008-09-14-CoalescerBug.ll less more
None ; RUN: llc < %s -mtriple=arm-apple-darwin
1
2 @"\01LC1" = external constant [288 x i8] ; <[288 x i8]*> [#uses=1]
3
4 declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) nounwind
5
6 define i32 @main(i32 %argc, i8** %argv) nounwind {
7 entry:
8 br label %bb.i
9
10 bb.i: ; preds = %bb.i, %entry
11 %i.01.i = phi i32 [ 0, %entry ], [ %indvar.next52, %bb.i ] ; [#uses=1]
12 %indvar.next52 = add i32 %i.01.i, 1 ; [#uses=2]
13 %exitcond53 = icmp eq i32 %indvar.next52, 15 ; [#uses=1]
14 br i1 %exitcond53, label %bb.i33.loopexit, label %bb.i
15
16 bb.i33.loopexit: ; preds = %bb.i
17 %0 = malloc [347 x i8] ; <[347 x i8]*> [#uses=2]
18 %.sub = getelementptr [347 x i8]* %0, i32 0, i32 0 ; [#uses=1]
19 call void @llvm.memcpy.i32( i8* %.sub, i8* getelementptr ([288 x i8]* @"\01LC1", i32 0, i32 0), i32 287, i32 1 ) nounwind
20 br label %bb.i28
21
22 bb.i28: ; preds = %bb.i28, %bb.i33.loopexit
23 br i1 false, label %repeat_fasta.exit, label %bb.i28
24
25 repeat_fasta.exit: ; preds = %bb.i28
26 free [347 x i8]* %0
27 unreachable
28 }
1313 br i1 %p, label %bb8, label %bb1
1414
1515 bb1: ; preds = %entry
16 %0 = malloc %struct.Village ; <%struct.Village*> [#uses=3]
16 %malloccall = tail call i8* @malloc(i32 ptrtoint (%struct.Village* getelementptr (%struct.Village* null, i32 1) to i32))
17 %0 = bitcast i8* %malloccall to %struct.Village*
1718 %exp2 = call double @ldexp(double 1.000000e+00, i32 %level) nounwind ; [#uses=1]
1819 %.c = fptosi double %exp2 to i32 ; [#uses=1]
1920 store i32 %.c, i32* null
2829 }
2930
3031 declare double @ldexp(double, i32)
32 declare noalias i8* @malloc(i32)
3030 ret i32 %.0, !dbg !29
3131 }
3232
33 define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 {
33 define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 {
3434 entry:
3535 %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
3636 call void @llvm.dbg.value(metadata !{%struct.SVal* %this}, i64 0, metadata !31), !dbg !34
99 ret i32 %B
1010 }
1111
12 define i8 @test1(i32 %A) signext {
12 define signext i8 @test1(i32 %A) {
1313 %B = lshr i32 %A, 8
1414 %C = shl i32 %A, 24
1515 %D = or i32 %B, %C
1717 ret i8 %E
1818 }
1919
20 define i32 @test2(i32 %A, i32 %X) signext {
20 define signext i32 @test2(i32 %A, i32 %X) {
2121 %B = lshr i32 %A, 8
2222 %C = shl i32 %A, 24
2323 %D = or i32 %B, %C
11 ; RUN: llc < %s -march=arm -mattr=+v6 | grep uxtab | count 1
22 ; RUN: llc < %s -march=arm -mattr=+v6 | grep uxth | count 1
33
4 define i8 @test1(i32 %A.u) zeroext {
4 define zeroext i8 @test1(i32 %A.u) {
55 %B.u = trunc i32 %A.u to i8
66 ret i8 %B.u
77 }
88
9 define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
9 define zeroext i32 @test2(i32 %A.u, i32 %B.u) {
1010 %C.u = trunc i32 %B.u to i8
1111 %D.u = zext i8 %C.u to i32
1212 %E.u = add i32 %A.u, %D.u
1313 ret i32 %E.u
1414 }
1515
16 define i32 @test3(i32 %A.u) zeroext {
16 define zeroext i32 @test3(i32 %A.u) {
1717 %B.u = lshr i32 %A.u, 8
1818 %C.u = shl i32 %A.u, 24
1919 %D.u = or i32 %B.u, %C.u
+0
-17
test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll less more
None ; There should be exactly two calls here (memset and malloc), no more.
1 ; RUN: llc < %s -march=alpha | grep jsr | count 2
2
3 %typedef.bc_struct = type opaque
4 declare void @llvm.memset.i64(i8*, i8, i64, i32)
5
6 define i1 @l12_l94_bc_divide_endif_2E_3_2E_ce(i32* %tmp.71.reload, i32 %scale2.1.3, i32 %extra.0, %typedef.bc_struct* %n1, %typedef.bc_struct* %n2, i32* %tmp.92.reload, i32 %tmp.94.reload, i32* %tmp.98.reload, i32 %tmp.100.reload, i8** %tmp.112.out, i32* %tmp.157.out, i8** %tmp.158.out) {
7 newFuncRoot:
8 %tmp.120 = add i32 %extra.0, 2 ; [#uses=1]
9 %tmp.122 = add i32 %tmp.120, %tmp.94.reload ; [#uses=1]
10 %tmp.123 = add i32 %tmp.122, %tmp.100.reload ; [#uses=2]
11 %tmp.112 = malloc i8, i32 %tmp.123 ; [#uses=1]
12 %tmp.137 = zext i32 %tmp.123 to i64 ; [#uses=1]
13 tail call void @llvm.memset.i64( i8* %tmp.112, i8 0, i64 %tmp.137, i32 0 )
14 ret i1 true
15 }
16
1616 ; RUN: grep {s8subq} %t.s | count 2
1717
1818
19 define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
19 define signext i32 @al(i32 signext %x.s, i32 signext %y.s) {
2020 entry:
2121 %tmp.3.s = add i32 %y.s, %x.s ; [#uses=1]
2222 ret i32 %tmp.3.s
2323 }
2424
25 define i32 @ali(i32 signext %x.s) signext {
25 define signext i32 @ali(i32 signext %x.s) {
2626 entry:
2727 %tmp.3.s = add i32 100, %x.s ; [#uses=1]
2828 ret i32 %tmp.3.s
2929 }
3030
31 define i64 @aq(i64 signext %x.s, i64 signext %y.s) signext {
31 define signext i64 @aq(i64 signext %x.s, i64 signext %y.s) {
3232 entry:
3333 %tmp.3.s = add i64 %y.s, %x.s ; [#uses=1]
3434 ret i64 %tmp.3.s
4040 ret i64 %tmp.3.s
4141 }
4242
43 define i32 @sl(i32 signext %x.s, i32 signext %y.s) signext {
43 define signext i32 @sl(i32 signext %x.s, i32 signext %y.s) {
4444 entry:
4545 %tmp.3.s = sub i32 %y.s, %x.s ; [#uses=1]
4646 ret i32 %tmp.3.s
4747 }
4848
49 define i32 @sli(i32 signext %x.s) signext {
49 define signext i32 @sli(i32 signext %x.s) {
5050 entry:
5151 %tmp.3.s = sub i32 %x.s, 100 ; [#uses=1]
5252 ret i32 %tmp.3.s
6464 ret i64 %tmp.3.s
6565 }
6666
67 define i32 @a4l(i32 signext %x.s, i32 signext %y.s) signext {
67 define signext i32 @a4l(i32 signext %x.s, i32 signext %y.s) {
6868 entry:
6969 %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1]
7070 %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1]
7171 ret i32 %tmp.3.s
7272 }
7373
74 define i32 @a8l(i32 signext %x.s, i32 signext %y.s) signext {
74 define signext i32 @a8l(i32 signext %x.s, i32 signext %y.s) {
7575 entry:
7676 %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1]
7777 %tmp.3.s = add i32 %tmp.1.s, %x.s ; [#uses=1]
9292 ret i64 %tmp.3.s
9393 }
9494
95 define i32 @a4li(i32 signext %y.s) signext {
95 define signext i32 @a4li(i32 signext %y.s) {
9696 entry:
9797 %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1]
9898 %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1]
9999 ret i32 %tmp.3.s
100100 }
101101
102 define i32 @a8li(i32 signext %y.s) signext {
102 define signext i32 @a8li(i32 signext %y.s) {
103103 entry:
104104 %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1]
105105 %tmp.3.s = add i32 100, %tmp.1.s ; [#uses=1]
120120 ret i64 %tmp.3.s
121121 }
122122
123 define i32 @s4l(i32 signext %x.s, i32 signext %y.s) signext {
123 define signext i32 @s4l(i32 signext %x.s, i32 signext %y.s) {
124124 entry:
125125 %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1]
126126 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1]
127127 ret i32 %tmp.3.s
128128 }
129129
130 define i32 @s8l(i32 signext %x.s, i32 signext %y.s) signext {
130 define signext i32 @s8l(i32 signext %x.s, i32 signext %y.s) {
131131 entry:
132132 %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1]
133133 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; [#uses=1]
148148 ret i64 %tmp.3.s
149149 }
150150
151 define i32 @s4li(i32 signext %y.s) signext {
151 define signext i32 @s4li(i32 signext %y.s) {
152152 entry:
153153 %tmp.1.s = shl i32 %y.s, 2 ; [#uses=1]
154154 %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1]
155155 ret i32 %tmp.3.s
156156 }
157157
158 define i32 @s8li(i32 signext %y.s) signext {
158 define signext i32 @s8li(i32 signext %y.s) {
159159 entry:
160160 %tmp.1.s = shl i32 %y.s, 3 ; [#uses=1]
161161 %tmp.3.s = sub i32 %tmp.1.s, 100 ; [#uses=1]
11 ; RUN: llc < %s -march=alpha | grep -i {subl \$16,1,\$0}
22
33
4 define i32 @foo(i32 signext %x) signext {
4 define signext i32 @foo(i32 signext %x) {
55 entry:
66 %tmp.1 = add i32 %x, -1 ; [#uses=1]
77 ret i32 %tmp.1
11 ; RUN: llc < %s -march=alpha | grep zapnot
22
33
4 define i16 @foo(i64 %y) zeroext {
4 define zeroext i16 @foo(i64 %y) {
55 entry:
66 %tmp.1 = trunc i64 %y to i16 ; [#uses=1]
77 ret i16 %tmp.1
+0
-756
test/CodeGen/CPP/llvm2cpp.ll less more
None ; RUN: llvm-as < %s | llvm-dis > /dev/null
1 ; RUN: llc < %s -march=cpp -cppgen=program -o -
2
3 @X = global i32 4, align 16 ; [#uses=0]
4
5 define i32* @test1012() align 32 {
6 %X = alloca i32, align 4 ; [#uses=1]
7 %Y = alloca i32, i32 42, align 16 ; [#uses=0]
8 %Z = alloca i32 ; [#uses=0]
9 ret i32* %X
10 }
11
12 define i32* @test1013() {
13 %X = malloc i32, align 4 ; [#uses=1]
14 %Y = malloc i32, i32 42, align 16 ; [#uses=0]
15 %Z = malloc i32 ; [#uses=0]
16 ret i32* %X
17 }
18
19 define void @void(i32, i32) {
20 add i32 0, 0 ; :3 [#uses=2]
21 sub i32 0, 4 ; :4 [#uses=2]
22 br label %5
23
24 ;
25 add i32 %0, %1 ; :6 [#uses=2]
26 sub i32 %6, %4 ; :7 [#uses=1]
27 icmp sle i32 %7, %3 ; :8 [#uses=1]
28 br i1 %8, label %9, label %5
29
30 ;
31 add i32 %0, %1 ; :10 [#uses=0]
32 sub i32 %6, %4 ; :11 [#uses=1]
33 icmp sle i32 %11, %3 ; :12 [#uses=0]
34 ret void
35 }
36
37 define i32 @zarro() {
38 Startup:
39 ret i32 0
40 }
41
42 define fastcc void @foo() {
43 ret void
44 }
45
46 define coldcc void @bar() {
47 call fastcc void @foo( )
48 ret void
49 }
50
51 define void @structret({ i8 }* sret %P) {
52 call void @structret( { i8 }* %P sret )
53 ret void
54 }
55
56 define void @foo4() {
57 ret void
58 }
59
60 define coldcc void @bar2() {
61 call fastcc void @foo( )
62 ret void
63 }
64
65 define cc42 void @bar3() {
66 invoke fastcc void @foo( )
67 to label %Ok unwind label %U
68
69 Ok: ; preds = %0
70 ret void
71
72 U: ; preds = %0
73 unwind
74 }
75
76 define void @bar4() {
77 call cc42 void @bar( )
78 invoke cc42 void @bar3( )
79 to label %Ok unwind label %U
80
81 Ok: ; preds = %0
82 ret void
83
84 U: ; preds = %0
85 unwind
86 }
87 ; ModuleID = 'calltest.ll'
88 %FunTy = type i32 (i32)
89
90 define i32 @test1000(i32 %i0) {
91 ret i32 %i0
92 }
93
94 define void @invoke(%FunTy* %x) {
95 %foo = call i32 %x( i32 123 ) ; [#uses=0]
96 %foo2 = tail call i32 %x( i32 123 ) ; [#uses=0]
97 ret void
98 }
99
100 define i32 @main(i32 %argc) {
101 %retval = call i32 @test1000( i32 %argc ) ; [#uses=2]
102 %two = add i32 %retval, %retval ; [#uses=1]
103 %retval2 = invoke i32 @test1000( i32 %argc )
104 to label %Next unwind label %Error ; [#uses=1]
105
106 Next: ; preds = %0
107 %two2 = add i32 %two, %retval2 ; [#uses=1]
108 call void @invoke( %FunTy* @test1000 )
109 ret i32 %two2
110
111 Error: ; preds = %0
112 ret i32 -1
113 }
114 ; ModuleID = 'casttest.ll'
115
116 define i16 @FunFunc(i64 %x, i8 %z) {
117 bb0:
118 %cast110 = sext i8 %z to i16 ; [#uses=1]
119 %cast10 = trunc i64 %x to i16 ; [#uses=1]
120 %reg109 = add i16 %cast110, %cast10 ; [#uses=1]
121 ret i16 %reg109
122 }
123 ; ModuleID = 'cfgstructures.ll'
124
125 define void @irreducible(i1 %cond) {
126 br i1 %cond, label %X, label %Y
127
128 X: ; preds = %Y, %0
129 br label %Y
130
131 Y: ; preds = %X, %0
132 br label %X
133 }
134
135 define void @sharedheader(i1 %cond) {
136 br label %A
137
138 A: ; preds = %Y, %X, %0
139 br i1 %cond, label %X, label %Y
140
141 X: ; preds = %A
142 br label %A
143
144 Y: ; preds = %A
145 br label %A
146 }
147
148 define void @nested(i1 %cond1, i1 %cond2, i1 %cond3) {
149 br label %Loop1
150
151 Loop1: ; preds = %L2Exit, %0
152 br label %Loop2
153
154 Loop2: ; preds = %L3Exit, %Loop1
155 br label %Loop3
156
157 Loop3: ; preds = %Loop3, %Loop2
158 br i1 %cond3, label %Loop3, label %L3Exit
159
160 L3Exit: ; preds = %Loop3
161 br i1 %cond2, label %Loop2, label %L2Exit
162
163 L2Exit: ; preds = %L3Exit
164 br i1 %cond1, label %Loop1, label %L1Exit
165
166 L1Exit: ; preds = %L2Exit
167 ret void
168 }
169 ; ModuleID = 'constexpr.ll'
170 %SAType = type { i32, { [2 x float], i64 } }
171 %SType = type { i32, { float, { i8 } }, i64 }
172 global i64 1 ; :0 [#uses=0]
173 global i64 74514 ; :1 [#uses=0]
174 @t2 = global i32* @t1 ; [#uses=0]
175 @t3 = global i32* @t1 ; [#uses=2]
176 @t1 = global i32 4 ; [#uses=2]
177 @t4 = global i32** @t3 ; [#uses=1]
178 @t5 = global i32** @t3 ; [#uses=0]
179 @t6 = global i32*** @t4 ; [#uses=0]
180 @t7 = global float* inttoptr (i32 12345678 to float*) ; [#uses=0]
181 @t9 = global i32 8 ; [#uses=0]
182 global i32* bitcast (float* @4 to i32*) ; :2 [#uses=0]
183 global float* @4 ; :3 [#uses=0]
184 global float 0.000000e+00 ; :4 [#uses=2]
185 @array = constant [2 x i32] [ i32 12, i32 52 ] ; <[2 x i32]*> [#uses=1]
186 @arrayPtr = global i32* getelementptr ([2 x i32]* @array, i64 0, i64 0) ; [#uses=1]
187 @arrayPtr5 = global i32** getelementptr (i32** @arrayPtr, i64 5) ; [#uses=0]
188 @somestr = constant [11 x i8] c"hello world" ; <[11 x i8]*> [#uses=2]
189 @char5 = global i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 5) ; [#uses=0]
190 @char8a = global i32* bitcast (i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 8) to i32*) ; [#uses=0]
191 @char8b = global i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 8) ; [#uses=0]
192 @S1 = global %SType* null ; <%SType**> [#uses=1]
193 @S2c = constant %SType {
194 i32 1,
195 { float, { i8 } } { float 2.000000e+00, { i8 } { i8 3 } },
196 i64 4 } ; <%SType*> [#uses=3]
197 @S3c = constant %SAType { i32 1, { [2 x float], i64 } { [2 x float] [ float 2.000000e+00, float 3.000000e+00 ], i64 4 } } ; <%SAType*> [#uses=1]
198 @S1ptr = global %SType** @S1 ; <%SType***> [#uses=0]
199 @S2 = global %SType* @S2c ; <%SType**> [#uses=0]
200 @S3 = global %SAType* @S3c ; <%SAType**> [#uses=0]
201 @S1fld1a = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) ; [#uses=0]
202 @S1fld1b = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) ; [#uses=1]
203 @S1fld1bptr = global float** @S1fld1b ; [#uses=0]
204 @S2fld3 = global i8* getelementptr (%SType* @S2c, i64 0, i32 1, i32 1, i32 0) ; [#uses=0]
205
206 ; ModuleID = 'constpointer.ll'
207 @cpt3 = global i32* @cpt1 ; [#uses=1]
208 @cpt1 = global i32 4 ; [#uses=2]
209 @cpt4 = global i32** @cpt3 ; [#uses=0]
210 @cpt2 = global i32* @cpt1 ; [#uses=0]
211 global float* @7 ; :0 [#uses=0]
212 global float* @7 ; :1 [#uses=0]
213 global float 0.000000e+00 ; :2 [#uses=3]
214 global float* @7 ; :3 [#uses=0]
215 @fptr = global void ()* @f ; [#uses=0]
216 @sptr1 = global [11 x i8]* @somestr ; <[11 x i8]**> [#uses=0]
217 @somestr2 = constant [11 x i8] c"hello world" ; <[11 x i8]*> [#uses=2]
218 @sptr2 = global [11 x i8]* @somestr2 ; <[11 x i8]**> [#uses=0]
219
220 declare void @f()
221 ; ModuleID = 'escaped_label.ll'
222
223 define i32 @foo3() {
224 br label "foo`~!@#$%^&*()-_=+{}[]\\|;:',<.>/?"
225
226 "foo`~!@#$%^&*()-_=+{}[]\\|;:',<.>/?": ; preds = %0
227 ret i32 17
228 }
229 ; ModuleID = 'float.ll'
230 @F1 = global float 4.000000e+00 ; [#uses=0]
231 @D1 = global double 4.000000e+00 ; [#uses=0]
232 ; ModuleID = 'fold-fpcast.ll'
233
234 define i32 @test1() {
235 ret i32 1080872141
236 }
237
238 define float @test1002() {
239 ret float 0x36E1000000000000
240 }
241
242 define i64 @test3() {
243 ret i64 4614256656431372362
244 }
245
246 define double @test4() {
247 ret double 2.075076e-322
248 }
249 ; ModuleID = 'forwardreftest.ll'
250 %myfn = type float (i32, double, i32, i16)
251 %myty = type i32
252 %thisfuncty = type i32 (i32)*
253
254 declare void @F(%thisfuncty, %thisfuncty, %thisfuncty)
255
256 define i32 @zarro2(i32 %Func) {
257 Startup:
258 add i32 0, 10 ; :0 [#uses=0]
259 ret i32 0
260 }
261
262 define i32 @test1004(i32) {
263 call void @F( %thisfuncty @zarro2, %thisfuncty @test1004, %thisfuncty @foozball )
264 ret i32 0
265 }
266
267 define i32 @foozball(i32) {
268 ret i32 0
269 }
270
271 ; ModuleID = 'globalredefinition.ll'
272 @A = global i32* @B ; [#uses=0]
273 @B = global i32 7 ; [#uses=1]
274
275 define void @test12312() {
276 ret void
277 }
278 ; ModuleID = 'global_section.ll'
279 @GlobSec = global i32 4, section "foo", align 16
280
281 define void @test1005() section "bar" {
282 ret void
283 }
284
285 ; ModuleID = 'globalvars.ll'
286 @MyVar = external global i32 ; [#uses=1]
287 @MyIntList = external global { \2*, i32 } ; <{ \2*, i32 }*> [#uses=1]
288 external global i32 ; :0 [#uses=0]
289 @AConst = constant i32 123 ; [#uses=0]
290 @AString = constant [4 x i8] c"test" ; <[4 x i8]*> [#uses=0]
291 @ZeroInit = global { [100 x i32], [40 x float] } zeroinitializer ; <{ [100 x i32], [40 x float] }*> [#uses=0]
292
293 define i32 @foo10015(i32 %blah) {
294 store i32 5, i32* @MyVar
295 %idx = getelementptr { \2*, i32 }* @MyIntList, i64 0, i32 1 ; [#uses=1]
296 store i32 12, i32* %idx
297 ret i32 %blah
298 }
299 ; ModuleID = 'indirectcall2.ll'
300
301 define i64 @test1006(i64 %X) {
302 ret i64 %X
303 }
304
305 define i64 @fib(i64 %n) {
306 ;
307 %T = icmp ult i64 %n, 2 ; [#uses=1]
308 br i1 %T, label %BaseCase, label %RecurseCase
309
310 RecurseCase: ; preds = %0
311 %result = call i64 @test1006( i64 %n ) ; [#uses=0]
312 br label %BaseCase
313
314 BaseCase: ; preds = %RecurseCase, %0
315 %X = phi i64 [ 1, %0 ], [ 2, %RecurseCase ] ; [#uses=1]
316 ret i64 %X
317 }
318 ; ModuleID = 'indirectcall.ll'
319
320 declare i32 @atoi(i8*)
321
322 define i64 @fibonacc(i64 %n) {
323 icmp ult i64 %n, 2 ; :1 [#uses=1]
324 br i1 %1, label %BaseCase, label %RecurseCase
325
326 BaseCase: ; preds = %0
327 ret i64 1
328
329 RecurseCase: ; preds = %0
330 %n2 = sub i64 %n, 2 ; [#uses=1]
331 %n1 = sub i64 %n, 1 ; [#uses=1]
332 %f2 = call i64 @fibonacc( i64 %n2 ) ; [#uses=1]
333 %f1 = call i64 @fibonacc( i64 %n1 ) ; [#uses=1]
334 %result = add i64 %f2, %f1 ; [#uses=1]
335 ret i64 %result
336 }
337
338 define i64 @realmain(i32 %argc, i8** %argv) {
339 ;
340 icmp eq i32 %argc, 2 ; :1 [#uses=1]
341 br i1 %1, label %HasArg, label %Continue
342
343 HasArg: ; preds = %0
344 %n1 = add i32 1, 1 ; [#uses=1]
345 br label %Continue
346
347 Continue: ; preds = %HasArg, %0
348 %n = phi i32 [ %n1, %HasArg ], [ 1, %0 ] ; [#uses=1]
349 %N = sext i32 %n to i64 ; [#uses=1]
350 %F = call i64 @fib( i64 %N ) ; [#uses=1]
351 ret i64 %F
352 }
353
354 define i64 @trampoline(i64 %n, i64 (i64)* %fibfunc) {
355 %F = call i64 %fibfunc( i64 %n ) ; [#uses=1]
356 ret i64 %F
357 }
358
359 define i32 @main2() {
360 %Result = call i64 @trampoline( i64 10, i64 (i64)* @fib ) ; [#uses=1]
361 %Result.upgrd.1 = trunc i64 %Result to i32 ; [#uses=1]
362 ret i32 %Result.upgrd.1
363 }
364 ; ModuleID = 'inlineasm.ll'
365 module asm "this is an inline asm block"
366 module asm "this is another inline asm block"
367
368 define i32 @test1007() {
369 %X = call i32 asm "tricky here $0, $1", "=r,r"( i32 4 ) ; [#uses=1]
370 call void asm sideeffect "eieio", ""( )
371 ret i32 %X
372 }
373 ; ModuleID = 'instructions.ll'
374
375 define i32 @test_extractelement(<4 x i32> %V) {
376 %R = extractelement <4 x i32> %V, i32 1 ; [#uses=1]
377 ret i32 %R
378 }
379
380 define <4 x i32> @test_insertelement(<4 x i32> %V) {
381 %R = insertelement <4 x i32> %V, i32 0, i32 0 ; <<4 x i32>> [#uses=1]
382 ret <4 x i32> %R
383 }
384
385 define <4 x i32> @test_shufflevector_u(<4 x i32> %V) {
386 %R = shufflevector <4 x i32> %V, <4 x i32> %V, <4 x i32> < i32 1, i32 undef, i32 7, i32 2 > ; <<4 x i32>> [#uses=1]
387 ret <4 x i32> %R
388 }
389
390 define <4 x float> @test_shufflevector_f(<4 x float> %V) {
391 %R = shufflevector <4 x float> %V, <4 x float> undef, <4 x i32> < i32 1, i32 undef, i32 7, i32 2 > ; <<4 x float>> [#uses=1]
392 ret <4 x float> %R
393 }
394 ; ModuleID = 'intrinsics.ll'
395
396 declare i1 @llvm.isunordered.f32(float, float)
397
398 declare i1 @llvm.isunordered.f64(double, double)
399
400 declare void @llvm.prefetch(i8*, i32, i32)
401
402 declare float @llvm.sqrt.f32(float)
403
404 declare double @llvm.sqrt.f64(double)
405
406 define void @libm() {
407 fcmp uno float 1.000000e+00, 2.000000e+00 ; :1 [#uses=0]
408 fcmp uno double 3.000000e+00, 4.000000e+00 ; :2 [#uses=0]
409 call void @llvm.prefetch( i8* null, i32 1, i32 3 )
410 call float @llvm.sqrt.f32( float 5.000000e+00 ) ; :3 [#uses=0]
411 call double @llvm.sqrt.f64( double 6.000000e+00 ) ; :4 [#uses=0]
412 call i8 @llvm.ctpop.i8( i8 10 ) ; :5 [#uses=1]
413 call i16 @llvm.ctpop.i16( i16 11 ) ; :7 [#uses=1]
414 call i32 @llvm.ctpop.i32( i32 12 ) ; :9 [#uses=1]
415 call i64 @llvm.ctpop.i64( i64 13 ) ; :11 [#uses=1]
416 call i8 @llvm.ctlz.i8( i8 14 ) ; :13 [#uses=1]
417 call i16 @llvm.ctlz.i16( i16 15 ) ; :15 [#uses=1]
418 call i32 @llvm.ctlz.i32( i32 16 ) ; :17 [#uses=1]
419 call i64 @llvm.ctlz.i64( i64 17 ) ; :19 [#uses=1]
420 call i8 @llvm.cttz.i8( i8 18 ) ; :21 [#uses=1]
421 call i16 @llvm.cttz.i16( i16 19 ) ; :23 [#uses=1]
422 call i32 @llvm.cttz.i32( i32 20 ) ; :25 [#uses=1]
423 call i64 @llvm.cttz.i64( i64 21 ) ; :27 [#uses=1]
424 ret void
425 }
426
427 declare i8 @llvm.ctpop.i8(i8)
428
429 declare i16 @llvm.ctpop.i16(i16)
430
431 declare i32 @llvm.ctpop.i32(i32)
432
433 declare i64 @llvm.ctpop.i64(i64)
434
435 declare i8 @llvm.ctlz.i8(i8)
436
437 declare i16 @llvm.ctlz.i16(i16)
438
439 declare i32 @llvm.ctlz.i32(i32)
440
441 declare i64 @llvm.ctlz.i64(i64)
442
443 declare i8 @llvm.cttz.i8(i8)
444
445 declare i16 @llvm.cttz.i16(i16)
446
447 declare i32 @llvm.cttz.i32(i32)
448
449 declare i64 @llvm.cttz.i64(i64)
450
451 ; ModuleID = 'packed.ll'
452 @foo1 = external global <4 x float> ; <<4 x float>*> [#uses=2]
453 @foo102 = external global <2 x i32> ; <<2 x i32>*> [#uses=2]
454
455 define void @main3() {
456 store <4 x float> < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >, <4 x float>* @foo1
457 store <2 x i32> < i32 4, i32 4 >, <2 x i32>* @foo102
458 %l1 = load <4 x float>* @foo1 ; <<4 x float>> [#uses=0]
459 %l2 = load <2 x i32>* @foo102 ; <<2 x i32>> [#uses=0]
460 ret void
461 }
462
463 ; ModuleID = 'properties.ll'
464 target datalayout = "e-p:32:32"
465 target triple = "proc-vend-sys"
466 deplibs = [ "m", "c" ]
467 ; ModuleID = 'prototype.ll'
468
469 declare i32 @bar1017(i32 %in)
470
471 define i32 @foo1016(i32 %blah) {
472 %xx = call i32 @bar1017( i32 %blah ) ; [#uses=1]
473 ret i32 %xx
474 }
475
476 ; ModuleID = 'recursivetype.ll'
477 %list = type { %list*, i32 }
478
479 declare i8* @malloc(i32)
480
481 define void @InsertIntoListTail(%list** %L, i32 %Data) {
482 bb1:
483 %reg116 = load %list** %L ; <%list*> [#uses=1]
484 %cast1004 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
485 %cond1000 = icmp eq %list* %reg116, %cast1004 ; [#uses=1]
486 br i1 %cond1000, label %bb3, label %bb2
487
488 bb2: ; preds = %bb2, %bb1
489 %reg117 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ] ; <%list**> [#uses=1]
490 %cast1010 = bitcast %list** %reg117 to %list*** ; <%list***> [#uses=1]
491 %reg118 = load %list*** %cast1010 ; <%list**> [#uses=3]
492 %reg109 = load %list** %reg118 ; <%list*> [#uses=1]
493 %cast1005 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
494 %cond1001 = icmp ne %list* %reg109, %cast1005 ; [#uses=1]
495 br i1 %cond1001, label %bb2, label %bb3
496
497 bb3: ; preds = %bb2, %bb1
498 %reg119 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ] ; <%list**> [#uses=1]
499 %cast1006 = bitcast %list** %reg119 to i8** ; [#uses=1]
500 %reg111 = call i8* @malloc( i32 16 ) ; [#uses=3]
501 store i8* %reg111, i8** %cast1006
502 %reg111.upgrd.1 = ptrtoint i8* %reg111 to i64 ; [#uses=1]
503 %reg1002 = add i64 %reg111.upgrd.1, 8 ; [#uses=1]
504 %reg1002.upgrd.2 = inttoptr i64 %reg1002 to i8* ; [#uses=1]
505 %cast1008 = bitcast i8* %reg1002.upgrd.2 to i32* ; [#uses=1]
506 store i32 %Data, i32* %cast1008
507 %cast1003 = inttoptr i64 0 to i64* ; [#uses=1]
508 %cast1009 = bitcast i8* %reg111 to i64** ; [#uses=1]
509 store i64* %cast1003, i64** %cast1009
510 ret void
511 }
512
513 define %list* @FindData(%list* %L, i32 %Data) {
514 bb1:
515 br label %bb2
516
517 bb2: ; preds = %bb6, %bb1
518 %reg115 = phi %list* [ %reg116, %bb6 ], [ %L, %bb1 ] ; <%list*> [#uses=4]
519 %cast1014 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
520 %cond1011 = icmp ne %list* %reg115, %cast1014 ; [#uses=1]
521 br i1 %cond1011, label %bb4, label %bb3
522
523 bb3: ; preds = %bb2
524 ret %list* null
525
526 bb4: ; preds = %bb2
527 %idx = getelementptr %list* %reg115, i64 0, i32 1 ; [#uses=1]
528 %reg111 = load i32* %idx ; [#uses=1]
529 %cond1013 = icmp ne i32 %reg111, %Data ; [#uses=1]
530 br i1 %cond1013, label %bb6, label %bb5
531
532 bb5: ; preds = %bb4
533 ret %list* %reg115
534
535 bb6: ; preds = %bb4
536 %idx2 = getelementptr %list* %reg115, i64 0, i32 0 ; <%list**> [#uses=1]
537 %reg116 = load %list** %idx2 ; <%list*> [#uses=1]
538 br label %bb2
539 }
540 ; ModuleID = 'simplecalltest.ll'
541 %FunTy = type i32 (i32)
542
543 define void @invoke1019(%FunTy* %x) {
544 %foo = call i32 %x( i32 123 ) ; [#uses=0]
545 ret void
546 }
547
548 define i32 @main4(i32 %argc, i8** %argv, i8** %envp) {
549 %retval = call i32 @test1008( i32 %argc ) ; [#uses=2]
550 %two = add i32 %retval, %retval ; [#uses=1]
551 %retval2 = call i32 @test1008( i32 %argc ) ; [#uses=1]
552 %two2 = add i32 %two, %retval2 ; [#uses=1]
553 call void @invoke1019( %FunTy* @test1008 )
554 ret i32 %two2
555 }
556
557 define i32 @test1008(i32 %i0) {
558 ret i32 %i0
559 }
560 ; ModuleID = 'smallest.ll'
561 ; ModuleID = 'small.ll'
562 %x = type i32
563
564 define i32 @foo1020(i32 %in) {
565 label:
566 ret i32 2
567 }
568 ; ModuleID = 'testalloca.ll'
569 %inners = type { float, { i8 } }
570 %struct = type { i32, %inners, i64 }
571
572 define i32 @testfunction(i32 %i0, i32 %j0) {
573 alloca i8, i32 5 ; :1 [#uses=0]
574 %ptr = alloca i32 ; [#uses=2]
575 store i32 3, i32* %ptr
576 %val = load i32* %ptr ; [#uses=0]
577 %sptr = alloca %struct ; <%struct*> [#uses=2]
578 %nsptr = getelementptr %struct* %sptr, i64 0, i32 1 ; <%inners*> [#uses=1]
579 %ubsptr = getelementptr %inners* %nsptr, i64 0, i32 1 ; <{ i8 }*> [#uses=1]
580 %idx = getelementptr { i8 }* %ubsptr, i64 0, i32 0 ; [#uses=1]
581 store i8 4, i8* %idx
582 %fptr = getelementptr %struct* %sptr, i64 0, i32 1, i32 0 ; [#uses=1]
583 store float 4.000000e+00, float* %fptr
584 ret i32 3
585 }
586 ; ModuleID = 'testconstants.ll'
587 @somestr3 = constant [11 x i8] c"hello world"
588 @array99 = constant [2 x i32] [ i32 12, i32 52 ]
589 constant { i32, i32 } { i32 4, i32 3 } ; <{ i32, i32 }*>:0 [#uses=0]
590
591 define [2 x i32]* @testfunction99(i32 %i0, i32 %j0) {
592 ret [2 x i32]* @array
593 }
594
595 define i8* @otherfunc(i32, double) {
596 %somestr = getelementptr [11 x i8]* @somestr3, i64 0, i64 0 ; [#uses=1]
597 ret i8* %somestr
598 }
599
600 define i8* @yetanotherfunc(i32, double) {
601 ret i8* null
602 }
603
604 define i32 @negativeUnsigned() {
605 ret i32 -1
606 }
607
608 define i32 @largeSigned() {
609 ret i32 -394967296
610 }
611 ; ModuleID = 'testlogical.ll'
612
613 define i32 @simpleAdd(i32 %i0, i32 %j0) {
614 %t1 = xor i32 %i0, %j0 ; [#uses=1]
615 %t2 = or i32 %i0, %j0 ; [#uses=1]
616 %t3 = and i32 %t1, %t2 ; [#uses=1]
617 ret i32 %t3
618 }
619 ; ModuleID = 'testmemory.ll'
620 %complexty = type { i32, { [4 x i8*], float }, double }
621 %struct = type { i32, { float, { i8 } }, i64 }
622
623 define i32 @main6() {
624 call i32 @testfunction98( i64 0, i64 1 )
625 ret i32 0
626 }
627
628 define i32 @testfunction98(i64 %i0, i64 %j0) {
629 %array0 = malloc [4 x i8] ; <[4 x i8]*> [#uses=2]
630 %size = add i32 2, 2 ; [#uses=1]
631 %array1 = malloc i8, i32 4 ; [#uses=1]
632 %array2 = malloc i8, i32 %size ; [#uses=1]
633 %idx = getelementptr [4 x i8]* %array0, i64 0, i64 2 ; [#uses=1]
634 store i8 123, i8* %idx
635 free [4 x i8]* %array0
636 free i8* %array1
637 free i8* %array2
638 %aa = alloca %complexty, i32 5 ; <%complexty*> [#uses=1]
639 %idx2 = getelementptr %complexty* %aa, i64 %i0, i32 1, i32 0, i64 %j0 ; [#uses=1]
640 store i8* null, i8** %idx2
641 %ptr = alloca i32 ; [#uses=2]
642 store i32 3, i32* %ptr
643 %val = load i32* %ptr ; [#uses=0]
644 %sptr = alloca %struct ; <%struct*> [#uses=1]
645 %ubsptr = getelementptr %struct* %sptr, i64 0, i32 1, i32 1 ; <{ i8 }*> [#uses=1]
646 %idx3 = getelementptr { i8 }* %ubsptr, i64 0, i32 0 ; [#uses=1]
647 store i8 4, i8* %idx3
648 ret i32 3
649 }
650 ; ModuleID = 'testswitch.ll'
651 %int = type i32
652
653 define i32 @squared(i32 %i0) {
654 switch i32 %i0, label %Default [
655 i32 1, label %Case1
656 i32 2, label %Case2
657 i32 4, label %Case4
658 ]
659
660 Default: ; preds = %0
661 ret i32 -1
662
663 Case1: ; preds = %0
664 ret i32 1
665
666 Case2: ; preds = %0
667 ret i32 4
668
669 Case4: ; preds = %0
670 ret i32 16
671 }
672 ; ModuleID = 'testvarargs.ll'
673
674 declare i32 @printf(i8*, ...)
675
676 define i32 @testvarar() {
677 call i32 (i8*, ...)* @printf( i8* null, i32 12, i8 42 ) ; :1 [#uses=1]
678 ret i32 %1
679 }
680 ; ModuleID = 'undefined.ll'
681 @X2 = global i32 undef ; [#uses=0]
682
683 declare i32 @atoi(i8*)
684
685 define i32 @test1009() {
686 ret i32 undef
687 }
688
689 define i32 @test1003() {
690 %X = add i32 undef, 1 ; [#uses=1]
691 ret i32 %X
692 }
693 ; ModuleID = 'unreachable.ll'
694
695 declare void @bar()
696
697 define i32 @foo1021() {
698 unreachable
699 }
700
701 define double @xyz() {
702 call void @bar( )
703 unreachable
704 }
705 ; ModuleID = 'varargs.ll'
706
707 declare void @llvm.va_start(i8* %ap)
708
709 declare void @llvm.va_copy(i8* %aq, i8* %ap)
710
711 declare void @llvm.va_end(i8* %ap)
712
713 define i32 @test1010(i32 %X, ...) {
714 %ap = alloca i8* ; [#uses=4]
715 %va.upgrd.1 = bitcast i8** %ap to i8* ; [#uses=1]
716 call void @llvm.va_start( i8* %va.upgrd.1 )
717 %tmp = va_arg i8** %ap, i32 ; [#uses=1]
718 %aq = alloca i8* ; [#uses=2]
719 %va0.upgrd.2 = bitcast i8** %aq to i8* ; [#uses=1]
720 %va1.upgrd.3 = bitcast i8** %ap to i8* ; [#uses=1]
721 call void @llvm.va_copy( i8* %va0.upgrd.2, i8* %va1.upgrd.3 )
722 %va.upgrd.4 = bitcast i8** %aq to i8* ; [#uses=1]
723 call void @llvm.va_end( i8* %va.upgrd.4 )
724 %va.upgrd.5 = bitcast i8** %ap to i8* ; [#uses=1]
725 call void @llvm.va_end( i8* %va.upgrd.5 )
726 ret i32 %tmp
727 }
728 ; ModuleID = 'varargs_new.ll'
729
730 declare void @llvm.va_start(i8*)
731
732 declare void @llvm.va_copy(i8*, i8*)
733
734 declare void @llvm.va_end(i8*)
735
736 define i32 @test1011(i32 %X, ...) {
737 %ap = alloca i8* ; [#uses=4]
738 %aq = alloca i8* ; [#uses=2]
739 %va.upgrd.1 = bitcast i8** %ap to i8* ; [#uses=1]
740 call void @llvm.va_start( i8* %va.upgrd.1 )
741 %tmp = va_arg i8** %ap, i32 ; [#uses=1]
742 %apv = load i8** %ap ; [#uses=1]
743 %va0.upgrd.2 = bitcast i8** %aq to i8* ; [#uses=1]
744 %va1.upgrd.3 = bitcast i8* %apv to i8* ; [#uses=1]
745 call void @llvm.va_copy( i8* %va0.upgrd.2, i8* %va1.upgrd.3 )
746 %va.upgrd.4 = bitcast i8** %aq to i8* ; [#uses=1]
747 call void @llvm.va_end( i8* %va.upgrd.4 )
748 %va.upgrd.5 = bitcast i8** %ap to i8* ; [#uses=1]
749 call void @llvm.va_end( i8* %va.upgrd.5 )
750 ret i32 %tmp
751 }
752 ; ModuleID = 'weirdnames.ll'
753 "&^ " = type { i32 }
754 @"%.*+ foo" = global "&^ " { i32 5 } ; <"&^ "*> [#uses=0]
755 @"0" = global float 0.000000e+00 ; [#uses=0]
200200 ret <4 x i32> %tmp2
201201 }
202202
203 define i32 @andi_u32(i32 zeroext %in) zeroext {
203 define zeroext i32 @andi_u32(i32 zeroext %in) {
204204 %tmp37 = and i32 %in, 37
205205 ret i32 %tmp37
206206 }
207207
208 define i32 @andi_i32(i32 signext %in) signext {
208 define signext i32 @andi_i32(i32 signext %in) {
209209 %tmp38 = and i32 %in, 37
210210 ret i32 %tmp38
211211 }
240240 ret <8 x i16> %tmp2
241241 }
242242
243 define i16 @andhi_u16(i16 zeroext %in) zeroext {
243 define zeroext i16 @andhi_u16(i16 zeroext %in) {
244244 %tmp37 = and i16 %in, 37 ; [#uses=1]
245245 ret i16 %tmp37
246246 }
247247
248 define i16 @andhi_i16(i16 signext %in) signext {
248 define signext i16 @andhi_i16(i16 signext %in) {
249249 %tmp38 = and i16 %in, 37 ; [#uses=1]
250250 ret i16 %tmp38
251251 }
259259 ret <16 x i8> %tmp2
260260 }
261261
262 define i8 @and_u8(i8 zeroext %in) zeroext {
262 define zeroext i8 @and_u8(i8 zeroext %in) {
263263 ; ANDBI generated:
264264 %tmp37 = and i8 %in, 37
265265 ret i8 %tmp37
266266 }
267267
268 define i8 @and_sext8(i8 signext %in) signext {
268 define signext i8 @and_sext8(i8 signext %in) {
269269 ; ANDBI generated
270270 %tmp38 = and i8 %in, 37
271271 ret i8 %tmp38
7878 ret i32 %C
7979 }
8080
81 define i16 @equiv_i16_1(i16 signext %arg1, i16 signext %arg2) signext {
81 define signext i16 @equiv_i16_1(i16 signext %arg1, i16 signext %arg2) {
8282 %A = and i16 %arg1, %arg2 ; [#uses=1]
8383 %B = or i16 %arg1, %arg2 ; [#uses=1]
8484 %Bnot = xor i16 %B, -1 ; [#uses=1]
8686 ret i16 %C
8787 }
8888
89 define i16 @equiv_i16_2(i16 signext %arg1, i16 signext %arg2) signext {
89 define signext i16 @equiv_i16_2(i16 signext %arg1, i16 signext %arg2) {
9090 %B = or i16 %arg1, %arg2 ; [#uses=1]
9191 %Bnot = xor i16 %B, -1 ; [#uses=1]
9292 %A = and i16 %arg1, %arg2 ; [#uses=1]
9494 ret i16 %C
9595 }
9696
97 define i16 @equiv_i16_3(i16 signext %arg1, i16 signext %arg2) signext {
97 define signext i16 @equiv_i16_3(i16 signext %arg1, i16 signext %arg2) {
9898 %B = or i16 %arg1, %arg2 ; [#uses=1]
9999 %A = and i16 %arg1, %arg2 ; [#uses=1]
100100 %Bnot = xor i16 %B, -1 ; [#uses=1]
102102 ret i16 %C
103103 }
104104
105 define i8 @equiv_i8_1(i8 signext %arg1, i8 signext %arg2) signext {
105 define signext i8 @equiv_i8_1(i8 signext %arg1, i8 signext %arg2) {
106106 %A = and i8 %arg1, %arg2 ; [#uses=1]
107107 %B = or i8 %arg1, %arg2 ; [#uses=1]
108108 %Bnot = xor i8 %B, -1 ; [#uses=1]
110110 ret i8 %C
111111 }
112112
113 define i8 @equiv_i8_2(i8 signext %arg1, i8 signext %arg2) signext {
113 define signext i8 @equiv_i8_2(i8 signext %arg1, i8 signext %arg2) {
114114 %B = or i8 %arg1, %arg2 ; [#uses=1]
115115 %Bnot = xor i8 %B, -1 ; [#uses=1]
116116 %A = and i8 %arg1, %arg2 ; [#uses=1]
118118 ret i8 %C
119119 }
120120
121 define i8 @equiv_i8_3(i8 signext %arg1, i8 signext %arg2) signext {
121 define signext i8 @equiv_i8_3(i8 signext %arg1, i8 signext %arg2) {
122122 %B = or i8 %arg1, %arg2 ; [#uses=1]
123123 %A = and i8 %arg1, %arg2 ; [#uses=1]
124124 %Bnot = xor i8 %B, -1 ; [#uses=1]
126126 ret i8 %C
127127 }
128128
129 define i8 @equiv_u8_1(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
129 define zeroext i8 @equiv_u8_1(i8 zeroext %arg1, i8 zeroext %arg2) {
130130 %A = and i8 %arg1, %arg2 ; [#uses=1]
131131 %B = or i8 %arg1, %arg2 ; [#uses=1]
132132 %Bnot = xor i8 %B, -1 ; [#uses=1]
134134 ret i8 %C
135135 }
136136
137 define i8 @equiv_u8_2(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
137 define zeroext i8 @equiv_u8_2(i8 zeroext %arg1, i8 zeroext %arg2) {
138138 %B = or i8 %arg1, %arg2 ; [#uses=1]
139139 %Bnot = xor i8 %B, -1 ; [#uses=1]
140140 %A = and i8 %arg1, %arg2 ; [#uses=1]
142142 ret i8 %C
143143 }
144144
145 define i8 @equiv_u8_3(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
145 define zeroext i8 @equiv_u8_3(i8 zeroext %arg1, i8 zeroext %arg2) {
146146 %B = or i8 %arg1, %arg2 ; [#uses=1]
147147 %A = and i8 %arg1, %arg2 ; [#uses=1]
148148 %Bnot = xor i8 %B, -1 ; [#uses=1]
0 ; RUN: llc < %s -march=cellspu
11
22 declare {i16, i1} @llvm.smul.with.overflow.i16(i16 %a, i16 %b)
3 define i1 @a(i16 %x) zeroext nounwind {
3 define zeroext i1 @a(i16 %x) nounwind {
44 %res = call {i16, i1} @llvm.smul.with.overflow.i16(i16 %x, i16 3)
55 %obil = extractvalue {i16, i1} %res, 1
66 ret i1 %obil
77 }
88
99 declare {i16, i1} @llvm.umul.with.overflow.i16(i16 %a, i16 %b)
10 define i1 @b(i16 %x) zeroext nounwind {
10 define zeroext i1 @b(i16 %x) nounwind {
1111 %res = call {i16, i1} @llvm.umul.with.overflow.i16(i16 %x, i16 3)
1212 %obil = extractvalue {i16, i1} %res, 1
1313 ret i1 %obil
5959 ret i32 %B
6060 }
6161
62 define i16 @nand_i16_1(i16 signext %arg1, i16 signext %arg2) signext {
62 define signext i16 @nand_i16_1(i16 signext %arg1, i16 signext %arg2) {
6363 %A = and i16 %arg2, %arg1 ; [#uses=1]
6464 %B = xor i16 %A, -1 ; [#uses=1]
6565 ret i16 %B
6666 }
6767
68 define i16 @nand_i16_2(i16 signext %arg1, i16 signext %arg2) signext {
68 define signext i16 @nand_i16_2(i16 signext %arg1, i16 signext %arg2) {
6969 %A = and i16 %arg1, %arg2 ; [#uses=1]
7070 %B = xor i16 %A, -1 ; [#uses=1]
7171 ret i16 %B
7272 }
7373
74 define i16 @nand_i16u_1(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
74 define zeroext i16 @nand_i16u_1(i16 zeroext %arg1, i16 zeroext %arg2) {
7575 %A = and i16 %arg2, %arg1 ; [#uses=1]
7676 %B = xor i16 %A, -1 ; [#uses=1]
7777 ret i16 %B
7878 }
7979
80 define i16 @nand_i16u_2(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
80 define zeroext i16 @nand_i16u_2(i16 zeroext %arg1, i16 zeroext %arg2) {
8181 %A = and i16 %arg1, %arg2 ; [#uses=1]
8282 %B = xor i16 %A, -1 ; [#uses=1]
8383 ret i16 %B
8484 }
8585
86 define i8 @nand_i8u_1(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
86 define zeroext i8 @nand_i8u_1(i8 zeroext %arg1, i8 zeroext %arg2) {
8787 %A = and i8 %arg2, %arg1 ; [#uses=1]
8888 %B = xor i8 %A, -1 ; [#uses=1]
8989 ret i8 %B
9090 }
9191
92 define i8 @nand_i8u_2(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
92 define zeroext i8 @nand_i8u_2(i8 zeroext %arg1, i8 zeroext %arg2) {
9393 %A = and i8 %arg1, %arg2 ; [#uses=1]
9494 %B = xor i8 %A, -1 ; [#uses=1]
9595 ret i8 %B
9696 }
9797
98 define i8 @nand_i8_1(i8 signext %arg1, i8 signext %arg2) signext {
98 define signext i8 @nand_i8_1(i8 signext %arg1, i8 signext %arg2) {
9999 %A = and i8 %arg2, %arg1 ; [#uses=1]
100100 %B = xor i8 %A, -1 ; [#uses=1]
101101 ret i8 %B
102102 }
103103
104 define i8 @nand_i8_2(i8 signext %arg1, i8 signext %arg2) signext {
104 define signext i8 @nand_i8_2(i8 signext %arg1, i8 signext %arg2) {
105105 %A = and i8 %arg1, %arg2 ; [#uses=1]
106106 %B = xor i8 %A, -1 ; [#uses=1]
107107 ret i8 %B
199199 ret <4 x i32> %tmp2
200200 }
201201
202 define i32 @ori_u32(i32 zeroext %in) zeroext {
202 define zeroext i32 @ori_u32(i32 zeroext %in) {
203203 %tmp37 = or i32 %in, 37 ; [#uses=1]
204204 ret i32 %tmp37
205205 }
206206
207 define i32 @ori_i32(i32 signext %in) signext {
207 define signext i32 @ori_i32(i32 signext %in) {
208208 %tmp38 = or i32 %in, 37 ; [#uses=1]
209209 ret i32 %tmp38
210210 }
234234 ret <8 x i16> %tmp2
235235 }
236236
237 define i16 @orhi_u16(i16 zeroext %in) zeroext {
237 define zeroext i16 @orhi_u16(i16 zeroext %in) {
238238 %tmp37 = or i16 %in, 37 ; [#uses=1]
239239 ret i16 %tmp37
240240 }
241241
242 define i16 @orhi_i16(i16 signext %in) signext {
242 define signext i16 @orhi_i16(i16 signext %in) {
243243 %tmp38 = or i16 %in, 37 ; [#uses=1]
244244 ret i16 %tmp38
245245 }
252252 ret <16 x i8> %tmp2
253253 }
254254
255 define i8 @orbi_u8(i8 zeroext %in) zeroext {
255 define zeroext i8 @orbi_u8(i8 zeroext %in) {
256256 %tmp37 = or i8 %in, 37 ; [#uses=1]
257257 ret i8 %tmp37
258258 }
259259
260 define i8 @orbi_i8(i8 signext %in) signext {
260 define signext i8 @orbi_i8(i8 signext %in) {
261261 %tmp38 = or i8 %in, 37 ; [#uses=1]
262262 ret i8 %tmp38
263263 }
3232 ret i16 %A
3333 }
3434
35 define i16 @shlh_i16_3(i16 signext %arg1, i16 signext %arg2) signext {
35 define signext i16 @shlh_i16_3(i16 signext %arg1, i16 signext %arg2) {
3636 %A = shl i16 %arg1, %arg2
3737 ret i16 %A
3838 }
3939
40 define i16 @shlh_i16_4(i16 signext %arg1, i16 signext %arg2) signext {
40 define signext i16 @shlh_i16_4(i16 signext %arg1, i16 signext %arg2) {
4141 %A = shl i16 %arg2, %arg1
4242 ret i16 %A
4343 }
4444
45 define i16 @shlh_i16_5(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
45 define zeroext i16 @shlh_i16_5(i16 zeroext %arg1, i16 zeroext %arg2) {
4646 %A = shl i16 %arg1, %arg2
4747 ret i16 %A
4848 }
4949
50 define i16 @shlh_i16_6(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
50 define zeroext i16 @shlh_i16_6(i16 zeroext %arg1, i16 zeroext %arg2) {
5151 %A = shl i16 %arg2, %arg1
5252 ret i16 %A
5353 }
7575 ret i16 %A
7676 }
7777
78 define i16 @shlhi_i16_5(i16 signext %arg1) signext {
78 define signext i16 @shlhi_i16_5(i16 signext %arg1) {
7979 %A = shl i16 %arg1, 12
8080 ret i16 %A
8181 }
8282
8383 ; Should not generate anything other than the return, arg1 << 0 = arg1
84 define i16 @shlhi_i16_6(i16 signext %arg1) signext {
84 define signext i16 @shlhi_i16_6(i16 signext %arg1) {
8585 %A = shl i16 %arg1, 0
8686 ret i16 %A
8787 }
8888
89 define i16 @shlhi_i16_7(i16 signext %arg1) signext {
89 define signext i16 @shlhi_i16_7(i16 signext %arg1) {
9090 %A = shl i16 16383, %arg1
9191 ret i16 %A
9292 }
9393
9494 ; Should generate 0, 0 << arg1 = 0
95 define i16 @shlhi_i16_8(i16 signext %arg1) signext {
95 define signext i16 @shlhi_i16_8(i16 signext %arg1) {
9696 %A = shl i16 0, %arg1
9797 ret i16 %A
9898 }
9999
100 define i16 @shlhi_i16_9(i16 zeroext %arg1) zeroext {
100 define zeroext i16 @shlhi_i16_9(i16 zeroext %arg1) {
101101 %A = shl i16 %arg1, 12
102102 ret i16 %A
103103 }
104104
105105 ; Should not generate anything other than the return, arg1 << 0 = arg1
106 define i16 @shlhi_i16_10(i16 zeroext %arg1) zeroext {
106 define zeroext i16 @shlhi_i16_10(i16 zeroext %arg1) {
107107 %A = shl i16 %arg1, 0
108108 ret i16 %A
109109 }
110110
111 define i16 @shlhi_i16_11(i16 zeroext %arg1) zeroext {
111 define zeroext i16 @shlhi_i16_11(i16 zeroext %arg1) {
112112 %A = shl i16 16383, %arg1
113113 ret i16 %A
114114 }
115115
116116 ; Should generate 0, 0 << arg1 = 0
117 define i16 @shlhi_i16_12(i16 zeroext %arg1) zeroext {
117 define zeroext i16 @shlhi_i16_12(i16 zeroext %arg1) {
118118 %A = shl i16 0, %arg1
119119 ret i16 %A
120120 }
132132 ret i32 %A
133133 }
134134
135 define i32 @shl_i32_3(i32 signext %arg1, i32 signext %arg2) signext {
135 define signext i32 @shl_i32_3(i32 signext %arg1, i32 signext %arg2) {
136136 %A = shl i32 %arg1, %arg2
137137 ret i32 %A
138138 }
139139
140 define i32 @shl_i32_4(i32 signext %arg1, i32 signext %arg2) signext {
140 define signext i32 @shl_i32_4(i32 signext %arg1, i32 signext %arg2) {
141141 %A = shl i32 %arg2, %arg1
142142 ret i32 %A
143143 }
144144
145 define i32 @shl_i32_5(i32 zeroext %arg1, i32 zeroext %arg2) zeroext {
145 define zeroext i32 @shl_i32_5(i32 zeroext %arg1, i32 zeroext %arg2) {
146146 %A = shl i32 %arg1, %arg2
147147 ret i32 %A
148148 }
149149
150 define i32 @shl_i32_6(i32 zeroext %arg1, i32 zeroext %arg2) zeroext {
150 define zeroext i32 @shl_i32_6(i32 zeroext %arg1, i32 zeroext %arg2) {
151151 %A = shl i32 %arg2, %arg1
152152 ret i32 %A
153153 }
175175 ret i32 %A
176176 }
177177
178 define i32 @shli_i32_5(i32 signext %arg1) signext {
178 define signext i32 @shli_i32_5(i32 signext %arg1) {
179179 %A = shl i32 %arg1, 12
180180 ret i32 %A
181181 }
182182
183183 ; Should not generate anything other than the return, arg1 << 0 = arg1
184 define i32 @shli_i32_6(i32 signext %arg1) signext {
184 define signext i32 @shli_i32_6(i32 signext %arg1) {
185185 %A = shl i32 %arg1, 0
186186 ret i32 %A
187187 }
188188
189 define i32 @shli_i32_7(i32 signext %arg1) signext {
189 define signext i32 @shli_i32_7(i32 signext %arg1) {
190190 %A = shl i32 16383, %arg1
191191 ret i32 %A
192192 }
193193
194194 ; Should generate 0, 0 << arg1 = 0
195 define i32 @shli_i32_8(i32 signext %arg1) signext {
195 define signext i32 @shli_i32_8(i32 signext %arg1) {
196196 %A = shl i32 0, %arg1
197197 ret i32 %A
198198 }
199199
200 define i32 @shli_i32_9(i32 zeroext %arg1) zeroext {
200 define zeroext i32 @shli_i32_9(i32 zeroext %arg1) {
201201 %A = shl i32 %arg1, 12
202202 ret i32 %A
203203 }
204204
205205 ; Should not generate anything other than the return, arg1 << 0 = arg1
206 define i32 @shli_i32_10(i32 zeroext %arg1) zeroext {
206 define zeroext i32 @shli_i32_10(i32 zeroext %arg1) {
207207 %A = shl i32 %arg1, 0
208208 ret i32 %A
209209 }
210210
211 define i32 @shli_i32_11(i32 zeroext %arg1) zeroext {
211 define zeroext i32 @shli_i32_11(i32 zeroext %arg1) {
212212 %A = shl i32 16383, %arg1
213213 ret i32 %A
214214 }
215215
216216 ; Should generate 0, 0 << arg1 = 0
217 define i32 @shli_i32_12(i32 zeroext %arg1) zeroext {
217 define zeroext i32 @shli_i32_12(i32 zeroext %arg1) {
218218 %A = shl i32 0, %arg1
219219 ret i32 %A
220220 }
4646 ; struct hackstate state = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
4747 @state = global %struct.hackstate zeroinitializer, align 16
4848
49 define i8 @get_hackstate_c1() zeroext nounwind {
49 define zeroext i8 @get_hackstate_c1() nounwind {
5050 entry:
5151 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 0), align 16
5252 ret i8 %tmp2
5353 }
5454
55 define i8 @get_hackstate_c2() zeroext nounwind {
55 define zeroext i8 @get_hackstate_c2() nounwind {
5656 entry:
5757 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 1), align 16
5858 ret i8 %tmp2
5959 }
6060
61 define i8 @get_hackstate_c3() zeroext nounwind {
61 define zeroext i8 @get_hackstate_c3() nounwind {
6262 entry:
6363 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 2), align 16
6464 ret i8 %tmp2
7070 ret i32 %tmp2
7171 }
7272
73 define i16 @get_hackstate_s1() signext nounwind {
73 define signext i16 @get_hackstate_s1() nounwind {
7474 entry:
7575 %tmp2 = load i16* getelementptr (%struct.hackstate* @state, i32 0, i32 4), align 16
7676 ret i16 %tmp2
7777 }
7878
79 define i8 @get_hackstate_c6() zeroext nounwind {
79 define zeroext i8 @get_hackstate_c6() nounwind {
8080 entry:
8181 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 8), align 16
8282 ret i8 %tmp2
8383 }
8484
85 define i8 @get_hackstate_c7() zeroext nounwind {
85 define zeroext i8 @get_hackstate_c7() nounwind {
8686 entry:
8787 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 9), align 16
8888 ret i8 %tmp2
+0
-28
test/CodeGen/Generic/badlive.ll less more
None ; RUN: llc < %s
1
2 define i32 @main() {
3 bb0:
4 %reg109 = malloc i32, i32 100 ; [#uses=2]
5 br label %bb2
6
7 bb2: ; preds = %bb2, %bb0
8 %cann-indvar1 = phi i32 [ 0, %bb0 ], [ %add1-indvar1, %bb2 ] ; [#uses=2]
9 %reg127 = mul i32 %cann-indvar1, 2 ; [#uses=1]
10 %add1-indvar1 = add i32 %cann-indvar1, 1 ; [#uses=1]
11 store i32 999, i32* %reg109
12 %cond1015 = icmp sle i32 1, 99 ; [#uses=1]
13 %reg128 = add i32 %reg127, 2 ; [#uses=0]
14 br i1 %cond1015, label %bb2, label %bb4
15
16 bb4: ; preds = %bb4, %bb2
17 %cann-indvar = phi i32 [ %add1-indvar, %bb4 ], [ 0, %bb2 ] ; [#uses=1]
18 %add1-indvar = add i32 %cann-indvar, 1 ; [#uses=2]
19 store i32 333, i32* %reg109
20 %reg131 = add i32 %add1-indvar, 3 ; [#uses=1]
21 %cond1017 = icmp ule i32 %reg131, 99 ; [#uses=1]
22 br i1 %cond1017, label %bb4, label %bb5
23
24 bb5: ; preds = %bb4
25 ret i32 0
26 }
27
44 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64"
55 target triple = "mipsallegrexel-unknown-psp-elf"
66
7 define i8 @A(i8 %e.0, i8 signext %sum) signext nounwind {
7 define signext i8 @A(i8 %e.0, i8 signext %sum) nounwind {
88 entry:
99 add i8 %sum, %e.0 ; :0 [#uses=1]
1010 ret i8 %0
1111 }
1212
13 define i16 @B(i16 %e.0, i16 signext %sum) signext nounwind {
13 define signext i16 @B(i16 %e.0, i16 signext %sum) nounwind {
1414 entry:
1515 add i16 %sum, %e.0 ; :0 [#uses=1]
1616 ret i16 %0
33 ; RUN: llc < %s -march=ppc32 | grep {rlwinm r3, r3, 23, 30, 30}
44 ; PR1473
55
6 define i8 @foo(i16 zeroext %a) zeroext {
6 define zeroext i8 @foo(i16 zeroext %a) {
77 %tmp2 = lshr i16 %a, 10 ; [#uses=1]
88 %tmp23 = trunc i16 %tmp2 to i8 ; [#uses=1]
99 %tmp4 = shl i8 %tmp23, 1 ; [#uses=1]
1717 entry:
1818 br i1 false, label %bb12, label %bb21
1919 bb12: ; preds = %entry
20 %tmp17 = tail call i8 inttoptr (i64 4294901504 to i8 (%struct..0objc_object*, %struct.objc_selector*, %struct.NSArray*)*)( %struct..0objc_object* null, %struct.objc_selector* null, %struct.NSArray* bitcast (%struct.__builtin_CFString* @0 to %struct.NSArray*) ) signext nounwind ; [#uses=0]
20 %tmp17 = tail call signext i8 inttoptr (i64 4294901504 to i8 (%struct..0objc_object*, %struct.objc_selector*, %struct.NSArray*)*)( %struct..0objc_object* null, %struct.objc_selector* null, %struct.NSArray* bitcast (%struct.__builtin_CFString* @0 to %struct.NSArray*) ) nounwind ; [#uses=0]
2121 br i1 false, label %bb25, label %bb21
2222 bb21: ; preds = %bb12, %entry
2323 %tmp24 = or i64 %flags, 4 ; [#uses=1]
11 target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128"
22 target triple = "powerpc-apple-darwin9"
33
4 define i16 @t(i16* %dct) signext nounwind {
4 define signext i16 @t(i16* %dct) nounwind {
55 entry:
66 load i16* null, align 2 ; :0 [#uses=2]
77 lshr i16 %0, 11 ; :1 [#uses=0]
88 ret void
99 }
1010
11 define i16 @test2(i16 zeroext %crc) zeroext {
11 define zeroext i16 @test2(i16 zeroext %crc) {
1212 ; No and's should be needed for the i16s here.
1313 %tmp.1 = lshr i16 %crc, 1
1414 %tmp.7 = xor i16 %tmp.1, 40961
88 ret i32 %tmp.81
99 }
1010
11 define i16 @test2(i16 signext %X, i16 signext %x) signext {
11 define signext i16 @test2(i16 signext %X, i16 signext %x) {
1212 %tmp = sext i16 %X to i32
1313 %tmp1 = sext i16 %x to i32
1414 %tmp2 = add i32 %tmp, %tmp1
1919 ret i16 %retval
2020 }
2121
22 define i16 @test3(i32 zeroext %X) signext {
22 define signext i16 @test3(i32 zeroext %X) {
2323 %tmp1 = lshr i32 %X, 16
2424 %tmp2 = trunc i32 %tmp1 to i16
2525 ret i16 %tmp2
0 ; Test various forms of calls.
11
22 ; RUN: llc < %s -march=ppc32 | \
3 ; RUN: grep {bl } | count 2
3 ; RUN: grep {bl } | count 1
44 ; RUN: llc < %s -march=ppc32 | \
55 ; RUN: grep {bctrl} | count 1
66 ; RUN: llc < %s -march=ppc32 | \
1010
1111 define void @test_direct() {
1212 call void @foo( )
13 ret void
14 }
15
16 define void @test_extsym(i8* %P) {
17 free i8* %P
1813 ret void
1914 }
2015
0 ; RUN: llc < %s -march=ppc32
11
22 declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
3 define i1 @a(i32 %x) zeroext nounwind {
3 define zeroext i1 @a(i32 %x) nounwind {
44 %res = call {i32, i1} @llvm.umul.with.overflow.i32(i32 %x, i32 3)
55 %obil = extractvalue {i32, i1} %res, 1
66 ret i1 %obil
77 }
88
99 declare {i32, i1} @llvm.smul.with.overflow.i32(i32 %a, i32 %b)
10 define i1 @b(i32 %x) zeroext nounwind {
10 define zeroext i1 @b(i32 %x) nounwind {
1111 %res = call {i32, i1} @llvm.smul.with.overflow.i32(i32 %x, i32 3)
1212 %obil = extractvalue {i32, i1} %res, 1
1313 ret i1 %obil
0 ; RUN: llc < %s -march=ppc32 | not grep {extsh\\|rlwinm}
11
2 declare i16 @foo() signext
2 declare signext i16 @foo()
33
44 define i32 @test1(i16 signext %X) {
55 %Y = sext i16 %X to i32 ;; dead
1313 }
1414
1515 define void @test3() {
16 %tmp.0 = call i16 @foo() signext ;; no extsh!
16 %tmp.0 = call signext i16 @foo() ;; no extsh!
1717 %tmp.1 = icmp slt i16 %tmp.0, 1234
1818 br i1 %tmp.1, label %then, label %UnifiedReturnBlock
1919
2020 then:
21 call i32 @test1(i16 0 signext)
21 call i32 @test1(i16 signext 0)
2222 ret void
2323 UnifiedReturnBlock:
2424 ret void
4545 ret i32 %tmp.2
4646 }
4747
48 define i16 @test7(float %a) zeroext {
48 define zeroext i16 @test7(float %a) {
4949 %tmp.1 = fptoui float %a to i16
5050 ret i16 %tmp.1
5151 }
0 ; RUN: llc < %s -march=systemz | FileCheck %s
11
2 define i32 @foo1(i32 %a, i32 *%b, i64 %idx) signext {
2 define signext i32 @foo1(i32 %a, i32 *%b, i64 %idx) {
33 ; CHECK: foo1:
44 ; CHECK: a %r2, 4(%r1,%r3)
55 entry:
1010 ret i32 %d
1111 }
1212
13 define i32 @foo2(i32 %a, i32 *%b, i64 %idx) signext {
13 define signext i32 @foo2(i32 %a, i32 *%b, i64 %idx) {
1414 ; CHECK: foo2:
1515 ; CHECK: ay %r2, -4(%r1,%r3)
1616 entry:
2121 ret i32 %d
2222 }
2323
24 define i64 @foo3(i64 %a, i64 *%b, i64 %idx) signext {
24 define signext i64 @foo3(i64 %a, i64 *%b, i64 %idx) {
2525 ; CHECK: foo3:
2626 ; CHECK: ag %r2, 8(%r1,%r3)
2727 entry:
3232 ret i64 %d
3333 }
3434
35 define i32 @foo4(i32 %a, i32 *%b, i64 %idx) signext {
35 define signext i32 @foo4(i32 %a, i32 *%b, i64 %idx) {
3636 ; CHECK: foo4:
3737 ; CHECK: n %r2, 4(%r1,%r3)
3838 entry:
4343 ret i32 %d
4444 }
4545
46 define i32 @foo5(i32 %a, i32 *%b, i64 %idx) signext {
46 define signext i32 @foo5(i32 %a, i32 *%b, i64 %idx) {
4747 ; CHECK: foo5:
4848 ; CHECK: ny %r2, -4(%r1,%r3)
4949 entry:
5454 ret i32 %d
5555 }
5656
57 define i64 @foo6(i64 %a, i64 *%b, i64 %idx) signext {
57 define signext i64 @foo6(i64 %a, i64 *%b, i64 %idx) {
5858 ; CHECK: foo6:
5959 ; CHECK: ng %r2, 8(%r1,%r3)
6060 entry:
6565 ret i64 %d
6666 }
6767
68 define i32 @foo7(i32 %a, i32 *%b, i64 %idx) signext {
68 define signext i32 @foo7(i32 %a, i32 *%b, i64 %idx) {
6969 ; CHECK: foo7:
7070 ; CHECK: o %r2, 4(%r1,%r3)
7171 entry:
7676 ret i32 %d
7777 }
7878
79 define i32 @foo8(i32 %a, i32 *%b, i64 %idx) signext {
79 define signext i32 @foo8(i32 %a, i32 *%b, i64 %idx) {
8080 ; CHECK: foo8:
8181 ; CHECK: oy %r2, -4(%r1,%r3)
8282 entry:
8787 ret i32 %d
8888 }
8989
90 define i64 @foo9(i64 %a, i64 *%b, i64 %idx) signext {
90 define signext i64 @foo9(i64 %a, i64 *%b, i64 %idx) {
9191 ; CHECK: foo9:
9292 ; CHECK: og %r2, 8(%r1,%r3)
9393 entry:
9898 ret i64 %d
9999 }
100100
101 define i32 @foo10(i32 %a, i32 *%b, i64 %idx) signext {
101 define signext i32 @foo10(i32 %a, i32 *%b, i64 %idx) {
102102 ; CHECK: foo10:
103103 ; CHECK: x %r2, 4(%r1,%r3)
104104 entry:
109109 ret i32 %d
110110 }
111111
112 define i32 @foo11(i32 %a, i32 *%b, i64 %idx) signext {
112 define signext i32 @foo11(i32 %a, i32 *%b, i64 %idx) {
113113 ; CHECK: foo11:
114114 ; CHECK: xy %r2, -4(%r1,%r3)
115115 entry:
120120 ret i32 %d
121121 }
122122
123 define i64 @foo12(i64 %a, i64 *%b, i64 %idx) signext {
123 define signext i64 @foo12(i64 %a, i64 *%b, i64 %idx) {
124124 ; CHECK: foo12:
125125 ; CHECK: xg %r2, 8(%r1,%r3)
126126 entry:
1515 ret i32 %c
1616 }
1717
18 define i32 @foo3(i32 %a, i32 %b) zeroext {
18 define zeroext i32 @foo3(i32 %a, i32 %b) {
1919 entry:
2020 %c = add i32 %a, 1
2121 ret i32 %c
2222 }
2323
24 define i32 @foo4(i32 %a, i32 %b) zeroext {
24 define zeroext i32 @foo4(i32 %a, i32 %b) {
2525 entry:
2626 %c = add i32 %a, 131072
2727 ret i32 %c
2828 }
2929
30 define i32 @foo5(i32 %a, i32 %b) signext {
30 define signext i32 @foo5(i32 %a, i32 %b) {
3131 entry:
3232 %c = add i32 %a, 1
3333 ret i32 %c
3434 }
3535
36 define i32 @foo6(i32 %a, i32 %b) signext {
36 define signext i32 @foo6(i32 %a, i32 %b) {
3737 entry:
3838 %c = add i32 %a, 131072
3939 ret i32 %c
77 ret i32 %c
88 }
99
10 define i32 @foo1(i32 %a, i32 %b) zeroext {
10 define zeroext i32 @foo1(i32 %a, i32 %b) {
1111 entry:
1212 %c = add i32 %a, %b
1313 ret i32 %c
1414 }
1515
16 define i32 @foo2(i32 %a, i32 %b) signext {
16 define signext i32 @foo2(i32 %a, i32 %b) {
1717 entry:
1818 %c = add i32 %a, %b
1919 ret i32 %c
1111 ret i32 %c
1212 }
1313
14 define i32 @foo3(i32 %a, i32 %b) zeroext {
14 define zeroext i32 @foo3(i32 %a, i32 %b) {
1515 entry:
1616 %c = and i32 %a, 1
1717 ret i32 %c
1818 }
1919
20 define i32 @foo4(i32 %a, i32 %b) signext {
20 define signext i32 @foo4(i32 %a, i32 %b) {
2121 entry:
2222 %c = and i32 %a, 131072
2323 ret i32 %c
2424 }
2525
26 define i32 @foo5(i32 %a, i32 %b) zeroext {
26 define zeroext i32 @foo5(i32 %a, i32 %b) {
2727 entry:
2828 %c = and i32 %a, 1
2929 ret i32 %c
3030 }
3131
32 define i32 @foo6(i32 %a, i32 %b) signext {
32 define signext i32 @foo6(i32 %a, i32 %b) {
3333 entry:
3434 %c = and i32 %a, 131072
3535 ret i32 %c
66 ret i32 %c
77 }
88
9 define i32 @foo1(i32 %a, i32 %b) zeroext {
9 define zeroext i32 @foo1(i32 %a, i32 %b) {
1010 entry:
1111 %c = and i32 %a, %b
1212 ret i32 %c
1313 }
1414
15 define i32 @foo2(i32 %a, i32 %b) signext {
15 define signext i32 @foo2(i32 %a, i32 %b) {
1616 entry:
1717 %c = and i32 %a, %b
1818 ret i32 %c
77 ret i32 %b
88 }
99
10 define i32 @foo1(i32 %a, i32 %b) zeroext {
10 define zeroext i32 @foo1(i32 %a, i32 %b) {
1111 entry:
1212 ret i32 %b
1313 }
1414
15 define i32 @foo2(i32 %a, i32 %b) signext {
15 define signext i32 @foo2(i32 %a, i32 %b) {
1616 entry:
1717 ret i32 %b
1818 }
2929 ret i32 4294967295
3030 }
3131
32 define i32 @foo6() zeroext {
32 define zeroext i32 @foo6() {
3333 entry:
3434 ret i32 4294967295
3535 }
3636
37 define i32 @foo7() signext {
37 define signext i32 @foo7() {
3838 entry:
3939 ret i32 4294967295
4040 }
2121 ret i32 %c
2222 }
2323
24 define i32 @foo3(i32 %a, i32 %b) zeroext {
24 define zeroext i32 @foo3(i32 %a, i32 %b) {
2525 entry:
2626 %c = or i32 %a, 1
2727 ret i32 %c
2828 }
2929
30 define i32 @foo8(i32 %a, i32 %b) zeroext {
30 define zeroext i32 @foo8(i32 %a, i32 %b) {
3131 entry:
3232 %c = or i32 %a, 123456
3333 ret i32 %c
3434 }
3535
36 define i32 @foo4(i32 %a, i32 %b) signext {
36 define signext i32 @foo4(i32 %a, i32 %b) {
3737 entry:
3838 %c = or i32 %a, 131072
3939 ret i32 %c
4040 }
4141
42 define i32 @foo5(i32 %a, i32 %b) zeroext {
42 define zeroext i32 @foo5(i32 %a, i32 %b) {
4343 entry:
4444 %c = or i32 %a, 1
4545 ret i32 %c
4646 }
4747
48 define i32 @foo6(i32 %a, i32 %b) signext {
48 define signext i32 @foo6(i32 %a, i32 %b) {
4949 entry:
5050 %c = or i32 %a, 131072
5151 ret i32 %c
5252 }
5353
54 define i32 @foo9(i32 %a, i32 %b) signext {
54 define signext i32 @foo9(i32 %a, i32 %b) {
5555 entry:
5656 %c = or i32 %a, 123456
5757 ret i32 %c
88 ret i32 %c
99 }
1010
11 define i32 @foo1(i32 %a, i32 %b) zeroext {
11 define zeroext i32 @foo1(i32 %a, i32 %b) {
1212 entry:
1313 %c = or i32 %a, %b
1414 ret i32 %c
1515 }
1616
17 define i32 @foo2(i32 %a, i32 %b) signext {
17 define signext i32 @foo2(i32 %a, i32 %b) {
1818 entry:
1919 %c = or i32 %a, %b
2020 ret i32 %c
1515 ret i32 %c
1616 }
1717
18 define i32 @foo3(i32 %a, i32 %b) zeroext {
18 define zeroext i32 @foo3(i32 %a, i32 %b) {
1919 entry:
2020 %c = sub i32 %a, 1
2121 ret i32 %c
2222 }
2323
24 define i32 @foo4(i32 %a, i32 %b) signext {
24 define signext i32 @foo4(i32 %a, i32 %b) {
2525 entry:
2626 %c = sub i32 %a, 131072
2727 ret i32 %c
2828 }
2929
30 define i32 @foo5(i32 %a, i32 %b) zeroext {
30 define zeroext i32 @foo5(i32 %a, i32 %b) {
3131 entry:
3232 %c = sub i32 %a, 1
3333 ret i32 %c
3434 }
3535
36 define i32 @foo6(i32 %a, i32 %b) signext {
36 define signext i32 @foo6(i32 %a, i32 %b) {
3737 entry:
3838 %c = sub i32 %a, 131072
3939 ret i32 %c
77 ret i32 %c
88 }
99
10 define i32 @foo1(i32 %a, i32 %b) zeroext {
10 define zeroext i32 @foo1(i32 %a, i32 %b) {
1111 entry:
1212 %c = sub i32 %a, %b
1313 ret i32 %c
1414 }
1515
16 define i32 @foo2(i32 %a, i32 %b) signext {
16 define signext i32 @foo2(i32 %a, i32 %b) {
1717 entry:
1818 %c = sub i32 %a, %b
1919 ret i32 %c
1919 ret i32 %c
2020 }
2121
22 define i32 @foo3(i32 %a, i32 %b) zeroext {
22 define zeroext i32 @foo3(i32 %a, i32 %b) {
2323 entry:
2424 %c = xor i32 %a, 1
2525 ret i32 %c
2626 }
2727
28 define i32 @foo8(i32 %a, i32 %b) zeroext {
28 define zeroext i32 @foo8(i32 %a, i32 %b) {
2929 entry:
3030 %c = xor i32 %a, 123456
3131 ret i32 %c
3232 }
3333
34 define i32 @foo4(i32 %a, i32 %b) signext {
34 define signext i32 @foo4(i32 %a, i32 %b) {
3535 entry:
3636 %c = xor i32 %a, 131072
3737 ret i32 %c
3838 }
3939
40 define i32 @foo5(i32 %a, i32 %b) zeroext {
40 define zeroext i32 @foo5(i32 %a, i32 %b) {
4141 entry:
4242 %c = xor i32 %a, 1
4343 ret i32 %c
4444 }
4545
46 define i32 @foo6(i32 %a, i32 %b) signext {
46 define signext i32 @foo6(i32 %a, i32 %b) {
4747 entry:
4848 %c = xor i32 %a, 131072
4949 ret i32 %c
5050 }
5151
52 define i32 @foo9(i32 %a, i32 %b) signext {
52 define signext i32 @foo9(i32 %a, i32 %b) {
5353 entry:
5454 %c = xor i32 %a, 123456
5555 ret i32 %c
88 ret i32 %c
99 }
1010
11 define i32 @foo1(i32 %a, i32 %b) zeroext {
11 define zeroext i32 @foo1(i32 %a, i32 %b) {
1212 entry:
1313 %c = xor i32 %a, %b
1414 ret i32 %c
1515 }
1616
17 define i32 @foo2(i32 %a, i32 %b) signext {
17 define signext i32 @foo2(i32 %a, i32 %b) {
1818 entry:
1919 %c = xor i32 %a, %b
2020 ret i32 %c
44 target triple = "s390x-ibm-linux"
55
66
7 define i16 @foo(i16 zeroext %a) zeroext {
7 define zeroext i16 @foo(i16 zeroext %a) {
88 %res = tail call i16 @llvm.bswap.i16(i16 %a)
99 ret i16 %res
1010 }
1111
12 define i32 @foo2(i32 zeroext %a) zeroext {
12 define zeroext i32 @foo2(i32 zeroext %a) {
1313 ; CHECK: foo2:
1414 ; CHECK: lrvr [[R1:%r.]], %r2
1515 %res = tail call i32 @llvm.bswap.i32(i32 %a)
1616 ret i32 %res
1717 }
1818
19 define i64 @foo3(i64 %a) zeroext {
19 define zeroext i64 @foo3(i64 %a) {
2020 ; CHECK: foo3:
2121 ; CHECK: lrvgr %r2, %r2
2222 %res = tail call i64 @llvm.bswap.i64(i64 %a)
2323 ret i64 %res
2424 }
2525
26 define i16 @foo4(i16* %b) zeroext {
26 define zeroext i16 @foo4(i16* %b) {
2727 %a = load i16* %b
2828 %res = tail call i16 @llvm.bswap.i16(i16 %a)
2929 ret i16 %res
3030 }
3131
32 define i32 @foo5(i32* %b) zeroext {
32 define zeroext i32 @foo5(i32* %b) {
3333 ; CHECK: foo5:
3434 ; CHECK: lrv [[R1:%r.]], 0(%r2)
3535 %a = load i32* %b
+0
-117
test/CodeGen/Thumb/2007-03-06-AddR7.ll less more
None ; RUN: llc < %s -march=thumb
1 ; RUN: llc < %s -mtriple=thumb-apple-darwin -relocation-model=pic \
2 ; RUN: -mattr=+v6,+vfp2 | not grep {add r., r7, #2 \\* 4}
3
4 %struct.__fooAllocator = type opaque
5 %struct.__fooY = type { %struct.fooXBase, %struct.__fooString*, %struct.__fooU*, %struct.__fooV*, i8** }
6 %struct.__fooZ = type opaque
7 %struct.__fooU = type opaque
8 %struct.__fooString = type opaque
9 %struct.__fooV = type opaque
10 %struct.fooXBase = type { i32, [4 x i8] }
11 %struct.fooXClass = type { i32, i8*, void (i8*)*, i8* (%struct.__fooAllocator*, i8*)*, void (i8*)*, i8 (i8*, i8*) zeroext *, i32 (i8*)*, %struct.__fooString* (i8*, %struct.__fooZ*)*, %struct.__fooString* (i8*)* }
12 %struct.aa_cache = type { i32, i32, [1 x %struct.aa_method*] }
13 %struct.aa_class = type { %struct.aa_class*, %struct.aa_class*, i8*, i32, i32, i32, %struct.aa_ivar_list*, %struct.aa_method_list**, %struct.aa_cache*, %struct.aa_protocol_list* }
14 %struct.aa_ivar = type { i8*, i8*, i32 }
15 %struct.aa_ivar_list = type { i32, [1 x %struct.aa_ivar] }
16 %struct.aa_method = type { %struct.aa_ss*, i8*, %struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* }
17 %struct.aa_method_list = type { %struct.aa_method_list*, i32, [1 x %struct.aa_method] }
18 %struct.aa_object = type { %struct.aa_class* }
19 %struct.aa_protocol_list = type { %struct.aa_protocol_list*, i32, [1 x %struct.aa_object*] }
20 %struct.aa_ss = type opaque
21 @__kfooYTypeID = external global i32 ; [#uses=3]
22 @__fooYClass = external constant %struct.fooXClass ; <%struct.fooXClass*> [#uses=1]
23 @__fooXClassTableSize = external global i32 ; [#uses=1]
24 @__fooXAaClassTable = external global i32* ; [#uses=1]
25 @s.10319 = external global %struct.aa_ss* ; <%struct.aa_ss**> [#uses=2]
26 @str15 = external constant [24 x i8] ; <[24 x i8]*> [#uses=1]
27
28
29 define i8 @test(%struct.__fooY* %calendar, double* %atp, i8* %componentDesc, ...) zeroext {
30 entry:
31 %args = alloca i8*, align 4 ; [#uses=5]
32 %args4 = bitcast i8** %args to i8* ; [#uses=2]
33 call void @llvm.va_start( i8* %args4 )
34 %tmp6 = load i32* @__kfooYTypeID ; [#uses=1]
35 icmp eq i32 %tmp6, 0 ; :0 [#uses=1]
36 br i1 %0, label %cond_true, label %cond_next
37
38 cond_true: ; preds = %entry
39 %tmp7 = call i32 @_fooXRegisterClass( %struct.fooXClass* @__fooYClass ) ; [#uses=1]
40 store i32 %tmp7, i32* @__kfooYTypeID
41 br label %cond_next
42
43 cond_next: ; preds = %cond_true, %entry
44 %tmp8 = load i32* @__kfooYTypeID ; [#uses=2]
45 %tmp15 = load i32* @__fooXClassTableSize ; [#uses=1]
46 icmp ugt i32 %tmp15, %tmp8 ; :1 [#uses=1]
47 br i1 %1, label %cond_next18, label %cond_true58
48
49 cond_next18: ; preds = %cond_next
50 %tmp21 = getelementptr %struct.__fooY* %calendar, i32 0, i32 0, i32 0 ; [#uses=1]
51 %tmp22 = load i32* %tmp21 ; [#uses=2]
52 %tmp29 = load i32** @__fooXAaClassTable ; [#uses=1]
53 %tmp31 = getelementptr i32* %tmp29, i32 %tmp8 ; [#uses=1]
54 %tmp32 = load i32* %tmp31 ; [#uses=1]
55 icmp eq i32 %tmp22, %tmp32 ; :2 [#uses=1]
56 %.not = xor i1 %2, true ; [#uses=1]
57 icmp ugt i32 %tmp22, 4095 ; :3 [#uses=1]
58 %bothcond = and i1 %.not, %3 ; [#uses=1]
59 br i1 %bothcond, label %cond_true58, label %bb48
60
61 bb48: ; preds = %cond_next18
62 %tmp78 = call i32 @strlen( i8* %componentDesc ) ; [#uses=4]
63 %tmp92 = alloca i32, i32 %tmp78 ; [#uses=2]
64 icmp sgt i32 %tmp78, 0 ; :4 [#uses=1]
65 br i1 %4, label %cond_true111, label %bb114
66
67 cond_true58: ; preds = %cond_next18, %cond_next
68 %tmp59 = load %struct.aa_ss** @s.10319 ; <%struct.aa_ss*> [#uses=2]
69 icmp eq %struct.aa_ss* %tmp59, null ; :5 [#uses=1]
70 %tmp6869 = bitcast %struct.__fooY* %calendar to i8* ; [#uses=2]
71 br i1 %5, label %cond_true60, label %cond_next64
72
73 cond_true60: ; preds = %cond_true58
74 %tmp63 = call %struct.aa_ss* @sel_registerName( i8* getelementptr ([24 x i8]* @str15, i32 0, i32 0) ) ; <%struct.aa_ss*> [#uses=2]
75 store %struct.aa_ss* %tmp63, %struct.aa_ss** @s.10319
76 %tmp66137 = volatile load i8** %args ; [#uses=1]
77 %tmp73138 = call i8 (i8*, %struct.aa_ss*, ...) zeroext * bitcast (%struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* @aa_mm to i8 (i8*, %struct.aa_ss*, ...) zeroext *)( i8* %tmp6869, %struct.aa_ss* %tmp63, double* %atp, i8* %componentDesc, i8* %tmp66137) zeroext ; [#uses=1]
78 ret i8 %tmp73138
79
80 cond_next64: ; preds = %cond_true58
81 %tmp66 = volatile load i8** %args ; [#uses=1]
82 %tmp73 = call i8 (i8*, %struct.aa_ss*, ...) zeroext * bitcast (%struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* @aa_mm to i8 (i8*, %struct.aa_ss*, ...) zeroext *)( i8* %tmp6869, %struct.aa_ss* %tmp59, double* %atp, i8* %componentDesc, i8* %tmp66 ) zeroext ; [#uses=1]
83 ret i8 %tmp73
84
85 cond_true111: ; preds = %cond_true111, %bb48
86 %idx.2132.0 = phi i32 [ 0, %bb48 ], [ %indvar.next, %cond_true111 ] ; [#uses=2]
87 %tmp95 = volatile load i8** %args ; [#uses=2]
88 %tmp97 = getelementptr i8* %tmp95, i32 4 ; [#uses=1]
89 volatile store i8* %tmp97, i8** %args
90 %tmp9899 = bitcast i8* %tmp95 to i32* ; [#uses=1]
91 %tmp100 = load i32* %tmp9899 ; [#uses=1]
92 %tmp104 = getelementptr i32* %tmp92, i32 %idx.2132.0 ; [#uses=1]
93 store i32 %tmp100, i32* %tmp104
94 %indvar.next = add i32 %idx.2132.0, 1 ; [#uses=2]
95 icmp eq i32 %indvar.next, %tmp78 ; :6 [#uses=1]
96 br i1 %6, label %bb114, label %cond_true111
97
98 bb114: ; preds = %cond_true111, %bb48
99 call void @llvm.va_end( i8* %args4 )
100 %tmp122 = call i8 @_fooYCCV( %struct.__fooY* %calendar, double* %atp, i8* %componentDesc, i32* %tmp92, i32 %tmp78 ) zeroext ; [#uses=1]
101 ret i8 %tmp122
102 }
103
104 declare i32 @_fooXRegisterClass(%struct.fooXClass*)
105
106 declare i8 @_fooYCCV(%struct.__fooY*, double*, i8*, i32*, i32) zeroext
107
108 declare %struct.aa_object* @aa_mm(%struct.aa_object*, %struct.aa_ss*, ...)
109
110 declare %struct.aa_ss* @sel_registerName(i8*)
111
112 declare void @llvm.va_start(i8*)
113
114 declare i32 @strlen(i8*)
115
116 declare void @llvm.va_end(i8*)
+0
-33
test/CodeGen/Thumb/2009-07-19-SPDecBug.ll less more
None ; RUN: llc < %s -mtriple=thumbv6-elf | not grep "subs sp"
1 ; PR4567
2
3 define i8* @__gets_chk(i8* %s, i32 %slen) nounwind {
4 entry:
5 br i1 undef, label %bb, label %bb1
6
7 bb: ; preds = %entry
8 ret i8* undef
9
10 bb1: ; preds = %entry
11 br i1 undef, label %bb3, label %bb2
12
13 bb2: ; preds = %bb1
14 %0 = alloca i8, i32 undef, align 4 ; [#uses=0]
15 br label %bb4
16
17 bb3: ; preds = %bb1
18 %1 = malloc i8, i32 undef ; [#uses=0]
19 br label %bb4
20
21 bb4: ; preds = %bb3, %bb2
22 br i1 undef, label %bb5, label %bb6
23
24 bb5: ; preds = %bb4
25 %2 = call i8* @gets(i8* %s) nounwind ; [#uses=1]
26 ret i8* %2
27
28 bb6: ; preds = %bb4
29 unreachable
30 }
31
32 declare i8* @gets(i8*) nounwind
66 ret i32 %B
77 }
88
9 define i8 @test1(i32 %A) signext {
9 define signext i8 @test1(i32 %A) {
1010 ; CHECK: test1
1111 ; CHECK: sxtb.w r0, r0, ror #8
1212 %B = lshr i32 %A, 8
1616 ret i8 %E
1717 }
1818
19 define i32 @test2(i32 %A, i32 %X) signext {
19 define signext i32 @test2(i32 %A, i32 %X) {
2020 ; CHECK: test2
2121 ; CHECK: lsrs r0, r0, #8
2222 ; CHECK: sxtab r0, r1, r0
0 ; RUN: llc < %s -march=thumb -mattr=+thumb2,+t2xtpk | FileCheck %s
11
2 define i8 @test1(i32 %A.u) zeroext {
2 define zeroext i8 @test1(i32 %A.u) {
33 ; CHECK: test1
44 ; CHECK: uxtb r0, r0
55 %B.u = trunc i32 %A.u to i8
66 ret i8 %B.u
77 }
88
9 define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
9 define zeroext i32 @test2(i32 %A.u, i32 %B.u) {
1010 ; CHECK: test2
1111 ; CHECK: uxtab r0, r0, r1
1212 %C.u = trunc i32 %B.u to i8
1515 ret i32 %E.u
1616 }
1717
18 define i32 @test3(i32 %A.u) zeroext {
18 define zeroext i32 @test3(i32 %A.u) {
1919 ; CHECK: test3
2020 ; CHECK: uxth.w r0, r0, ror #8
2121 %B.u = lshr i32 %A.u, 8
66
77 define void @invoker(%struct.S* %name.0.0) {
88 entry:
9 invoke void @invokee( %struct.S* %name.0.0 sret )
9 invoke void @invokee( %struct.S* sret %name.0.0 )
1010 to label %return unwind label %return
1111
1212 return: ; preds = %entry, %entry
22 %struct.XDesc = type <{ i32, %struct.OpaqueXDataStorageType** }>
33 %struct.OpaqueXDataStorageType = type opaque
44
5 declare i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*) signext
5 declare signext i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*)
66
77 declare void @r_raise(i64, i8*, ...)
88
1717 br i1 false, label %cond_next164, label %cond_true239
1818
1919 cond_next164: ; preds = %cond_true109
20 %tmp176 = call i16 @GetParamDesc( %struct.XDesc* null, i32 1701999219, i32 1413830740, %struct.XDesc* null ) signext ; [#uses=0]
20 %tmp176 = call signext i16 @GetParamDesc( %struct.XDesc* null, i32 1701999219, i32 1413830740, %struct.XDesc* null )
2121 call void (i64, i8*, ...)* @r_raise( i64 0, i8* null )
2222 unreachable
2323
+0
-454
test/CodeGen/X86/2007-06-04-tailmerge4.ll less more
None ; RUN: llc < %s -asm-verbose | grep invcont131
1 ; PR 1496: tail merge was incorrectly removing this block
2
3 ; ModuleID = 'report.1.bc'
4 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
5 target triple = "i686-pc-linux-gnu"
6 %struct.ALLOC = type { %struct.string___XUB, [2 x i8] }
7 %struct.RETURN = type { i32, i32, i32, i64 }
8 %struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
9 %struct.ada__tags__dispatch_table = type { [1 x i8*] }
10 %struct.ada__text_io__text_afcb = type { %struct.system__file_control_block__afcb, i32, i32, i32, i32, i32, %struct.ada__text_io__text_afcb*, i8, i8 }
11 %struct.string___XUB = type { i32, i32 }
12 %struct.string___XUP = type { i8*, %struct.string___XUB* }
13 %struct.system__file_control_block__afcb = type { %struct.ada__streams__root_stream_type, i32, %struct.string___XUP, i32, %struct.string___XUP, i8, i8, i8, i8, i8, i8, i8, %struct.system__file_control_block__afcb*, %struct.system__file_control_block__afcb* }
14 %struct.system__secondary_stack__mark_id = type { i8*, i32 }
15 %struct.wide_string___XUP = type { i16*, %struct.string___XUB* }
16 @report_E = global i8 0 ; [#uses=0]
17 @report__test_status = internal global i8 1 ; [#uses=8]
18 @report__test_name = internal global [15 x i8] zeroinitializer ; <[15 x i8]*> [#uses=10]
19 @report__test_name_len = internal global i32 0 ; [#uses=15]
20 @.str = internal constant [12 x i8] c"report.adb\00\00" ; <[12 x i8]*> [#uses=1]
21 @C.26.599 = internal constant %struct.string___XUB { i32 1, i32 1 } ; <%struct.string___XUB*> [#uses=1]
22 @.str1 = internal constant [1 x i8] c":" ; <[1 x i8]*> [#uses=1]
23 @.str2 = internal constant [1 x i8] c" " ; <[1 x i8]*> [#uses=1]
24 @.str3 = internal constant [1 x i8] c"-" ; <[1 x i8]*> [#uses=1]
25 @.str5 = internal constant [10 x i8] c"0123456789" ; <[10 x i8]*> [#uses=12]
26 @C.59.855 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
27 @C.69.876 = internal constant %struct.string___XUB { i32 1, i32 3 } ; <%struct.string___XUB*> [#uses=1]
28 @C.70.879 = internal constant %struct.string___XUB { i32 1, i32 6 } ; <%struct.string___XUB*> [#uses=1]
29 @C.81.900 = internal constant %struct.string___XUB { i32 1, i32 5 } ; <%struct.string___XUB*> [#uses=1]
30 @.str6 = internal constant [0 x i8] zeroinitializer ; <[0 x i8]*> [#uses=1]
31 @.str7 = internal constant [3 x i8] c"2.5" ; <[3 x i8]*> [#uses=1]
32 @.str8 = internal constant [6 x i8] c"ACATS " ; <[6 x i8]*> [#uses=1]
33 @.str9 = internal constant [5 x i8] c",.,. " ; <[5 x i8]*> [#uses=1]
34 @.str10 = internal constant [1 x i8] c"." ; <[1 x i8]*> [#uses=1]
35 @.str11 = internal constant [5 x i8] c"---- " ; <[5 x i8]*> [#uses=1]
36 @.str12 = internal constant [5 x i8] c" - " ; <[5 x i8]*> [#uses=1]
37 @.str13 = internal constant [5 x i8] c" * " ; <[5 x i8]*> [#uses=1]
38 @.str14 = internal constant [5 x i8] c" + " ; <[5 x i8]*> [#uses=1]
39 @.str15 = internal constant [5 x i8] c" ! " ; <[5 x i8]*> [#uses=1]
40 @C.209.1380 = internal constant %struct.string___XUB { i32 1, i32 37 } ; <%struct.string___XUB*> [#uses=1]
41 @.str16 = internal constant [37 x i8] c" PASSED ============================." ; <[37 x i8]*> [#uses=1]
42 @.str17 = internal constant [5 x i8] c"==== " ; <[5 x i8]*> [#uses=1]
43 @.str18 = internal constant [37 x i8] c" NOT-APPLICABLE ++++++++++++++++++++." ; <[37 x i8]*> [#uses=1]
44 @.str19 = internal constant [5 x i8] c"++++ " ; <[5 x i8]*> [#uses=1]
45 @.str20 = internal constant [37 x i8] c" TENTATIVELY PASSED !!!!!!!!!!!!!!!!." ; <[37 x i8]*> [#uses=1]
46 @.str21 = internal constant [5 x i8] c"!!!! " ; <[5 x i8]*> [#uses=1]
47 @.str22 = internal constant [37 x i8] c" SEE '!' COMMENTS FOR SPECIAL NOTES!!" ; <[37 x i8]*> [#uses=1]
48 @.str23 = internal constant [37 x i8] c" FAILED ****************************." ; <[37 x i8]*> [#uses=1]
49 @.str24 = internal constant [5 x i8] c"**** " ; <[5 x i8]*> [#uses=1]
50 @__gnat_others_value = external constant i32 ; [#uses=2]
51 @system__soft_links__abort_undefer = external global void ()* ; [#uses=1]
52 @C.320.1854 = internal constant %struct.string___XUB { i32 2, i32 6 } ; <%struct.string___XUB*> [#uses=1]
53
54 declare void @report__put_msg(i64 %msg.0.0)
55
56 declare void @__gnat_rcheck_05(i8*, i32)
57
58 declare void @__gnat_rcheck_12(i8*, i32)
59
60 declare %struct.ada__text_io__text_afcb* @ada__text_io__standard_output()
61
62 declare void @ada__text_io__set_col(%struct.ada__text_io__text_afcb*, i32)
63
64 declare void @ada__text_io__put_line(%struct.ada__text_io__text_afcb*, i64)
65
66 declare void @report__time_stamp(%struct.string___XUP* sret %agg.result)
67
68 declare i64 @ada__calendar__clock()
69
70 declare void @ada__calendar__split(%struct.RETURN* sret , i64)
71
72 declare void @system__string_ops_concat_5__str_concat_5(%struct.string___XUP* sret , i64, i64, i64, i64, i64)
73
74 declare void @system__string_ops_concat_3__str_concat_3(%struct.string___XUP* sret , i64, i64, i64)
75
76 declare i8* @system__secondary_stack__ss_allocate(i32)
77
78 declare void @report__test(i64 %name.0.0, i64 %descr.0.0)
79
80 declare void @system__secondary_stack__ss_mark(%struct.system__secondary_stack__mark_id* sret )
81 <