manually upgrade a bunch of tests to modern syntax, and remove some that

are either unreduced or only test old syntax.

llvm-svn: 133228
This commit is contained in:
Chris Lattner 2011-06-17 03:14:27 +00:00
parent 033026ffc0
commit b90ed2233c
130 changed files with 262 additions and 5810 deletions

View File

@ -1,15 +0,0 @@
; RUN: opt < %s -basicaa -gvn -instcombine |\
; RUN: llvm-dis | grep {load i32\\* %A}
declare double* @useit(i32*)
define i32 @foo(i32 %Amt) {
%A = malloc i32, i32 %Amt
%P = call double* @useit(i32* %A)
%X = load i32* %A
store double 0.0, double* %P
%Y = load i32* %A
%Z = sub i32 %X, %Y
ret i32 %Z
}

View File

@ -3,8 +3,11 @@
@G = internal global i32* null ; <i32**> [#uses=3]
declare i8* @malloc(i32)
define void @test() {
%A = malloc i32 ; <i32*> [#uses=1]
%a = call i8* @malloc(i32 4)
%A = bitcast i8* %a to i32*
store i32* %A, i32** @G
ret void
}

View File

@ -1,14 +0,0 @@
; RUN: llvm-as < %s | llvm-dis | llvm-as
; Ensure that the asm writer emits types before both operands of the
; store, even though they can be the same.
%RecTy = type %RecTy*
define void @foo() {
%A = malloc %RecTy ; <%RecTy> [#uses=1]
%B = malloc %RecTy ; <%RecTy> [#uses=1]
store %RecTy %B, %RecTy %A
ret void
}

View File

@ -1,8 +0,0 @@
; RUN: llvm-as < %s | llvm-dis | grep {tail call void.*sret null}
declare void @foo({ }* sret , ...)
define void @bar() {
tail call void ({ }* sret , ...)* @foo( { }* null sret , i32 0 )
ret void
}

View File

@ -1,12 +0,0 @@
; Test that upgrading zext/sext attributes to zeroext and signext
; works correctly.
; PR1553
; RUN: llvm-as < %s > /dev/null
define i32 @bar() {
%t = call i8 @foo( i8 10 sext ) zext
%x = zext i8 %t to i32
ret i32 %x
}
declare i8 @foo(i8 signext ) zeroext

View File

@ -1,3 +0,0 @@
; RUN: llvm-as < %s
@FP = weak global i8 (...) signext * null

View File

@ -1,947 +0,0 @@
; RUN: llc < %s -march=arm
; PR1266
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"
target triple = "arm-unknown-linux-gnueabi"
%struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32 }
%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] }
%struct.VEC_edge = type { i32, i32, [1 x %struct.edge_def*] }
%struct.VEC_tree = type { i32, i32, [1 x %struct.tree_node*] }
%struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
%struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] }
%struct.addr_diff_vec_flags = type { i8, i8, i8, i8 }
%struct.arm_stack_offsets = type { i32, i32, i32, i32, i32 }
%struct.attribute_spec = type { i8*, i32, i32, i8, i8, i8, %struct.tree_node* (%struct.tree_node**, %struct.tree_node*, %struct.tree_node*, i32, i8*)* }
%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 }
%struct.bb_ann_d = type { %struct.tree_node*, i8, %struct.edge_prediction* }
%struct.bitmap_element_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, [4 x i32] }
%struct.bitmap_head_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, %struct.bitmap_obstack* }
%struct.bitmap_obstack = type { %struct.bitmap_element_def*, %struct.bitmap_head_def*, %struct.obstack }
%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* }
%struct.cgraph_global_info = type { %struct.cgraph_node*, i32, i8 }
%struct.cgraph_local_info = type { i32, i8, i8, i8, i8, i8, i8, i8 }
%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 }
%struct.cgraph_rtl_info = type { i32, i8, i8 }
%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 }
%struct.cselib_val_struct = type opaque
%struct.dataflow_d = type { %struct.varray_head_tag*, [2 x %struct.tree_node*] }
%struct.def_operand_ptr = type { %struct.tree_node** }
%struct.def_optype_d = type { i32, [1 x %struct.def_operand_ptr] }
%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 }
%struct.diagnostic_info = type { %struct.text_info, %struct.location_t, i32 }
%struct.die_struct = type opaque
%struct.edge_def = type { %struct.basic_block_def*, %struct.basic_block_def*, %struct.edge_def_insns, i8*, %struct.location_t*, i32, i32, i64, i32 }
%struct.edge_def_insns = type { %struct.rtx_def* }
%struct.edge_prediction = type { %struct.edge_prediction*, %struct.edge_def*, i32, i32 }
%struct.eh_status = type opaque
%struct.elt_list = type opaque
%struct.elt_t = type { %struct.tree_node*, %struct.tree_node* }
%struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** }
%struct.et_node = type opaque
%struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* }
%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 }
%struct.ggc_root_tab = type { i8*, i32, i32, void (i8*)*, void (i8*)* }
%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 }
%struct.gimplify_init_ctor_preeval_data = type { %struct.tree_node*, i32 }
%struct.ht_identifier = type { i8*, i32, i32 }
%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 }
%struct.initial_value_struct = type opaque
%struct.lang_decl = type opaque
%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*)* }
%struct.lang_hooks_for_callgraph = type { %struct.tree_node* (%struct.tree_node**, i32*, %struct.tree_node*)*, void (%struct.tree_node*)* }
%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*)* }
%struct.lang_hooks_for_functions = type { void (%struct.function*)*, void (%struct.function*)*, void (%struct.function*)*, void (%struct.function*)*, i8 (%struct.tree_node*) zeroext * }
%struct.lang_hooks_for_tree_dump = type { i8 (i8*, %struct.tree_node*) zeroext *, i32 (%struct.tree_node*)* }
%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)* }
%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 }
%struct.lang_type = type opaque
%struct.language_function = type opaque
%struct.location_t = type { i8*, i32 }
%struct.loop = type opaque
%struct.machine_function = type { %struct.rtx_def*, i32, i32, i32, %struct.arm_stack_offsets, i32, i32, i32, [14 x %struct.rtx_def*] }
%struct.mem_attrs = type { i64, %struct.tree_node*, %struct.rtx_def*, %struct.rtx_def*, i32 }
%struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (i8*, i32)*, void (i8*, %struct._obstack_chunk*)*, i8*, i8 }
%struct.output_buffer = type { %struct.obstack, %struct.FILE*, i32, [128 x i8] }
%struct.phi_arg_d = type { %struct.tree_node*, i8 }
%struct.pointer_set_t = type opaque
%struct.pretty_printer = type { %struct.output_buffer*, i8*, i32, i32, i32, i32, i32, i8 (%struct.pretty_printer*, %struct.text_info*) zeroext *, i8, i8 }
%struct.ptr_info_def = type { i8, %struct.bitmap_head_def*, %struct.tree_node* }
%struct.real_value = type { i8, [3 x i8], [5 x i32] }
%struct.reg_attrs = type { %struct.tree_node*, i64 }
%struct.reg_info_def = type opaque
%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 }
%struct.rtunion = type { i32 }
%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
%struct.rtx_def = type { i16, i8, i8, %struct.u }
%struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* }
%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 }
%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* }
%struct.temp_slot = type opaque
%struct.text_info = type { i8*, i8**, i32 }
%struct.tree_ann_common_d = type { i32, i8*, %struct.tree_node* }
%struct.tree_ann_d = type { %struct.stmt_ann_d }
%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 }
%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* }
%struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_ann_d*, i8, i8, i8, i8, i8 }
%struct.tree_complex = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node* }
%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* }
%struct.tree_decl_u1 = type { i64 }
%struct.tree_decl_u1_a = type { i32 }
%struct.tree_decl_u2 = type { %struct.function* }
%struct.tree_exp = type { %struct.tree_common, %struct.location_t*, i32, %struct.tree_node*, [1 x %struct.tree_node*] }
%struct.tree_identifier = type { %struct.tree_common, %struct.ht_identifier }
%struct.tree_int_cst = type { %struct.tree_common, %struct.tree_int_cst_lowhi }
%struct.tree_int_cst_lowhi = type { i64, i64 }
%struct.tree_list = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node* }
%struct.tree_node = type { %struct.tree_decl }
%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] }
%struct.tree_real_cst = type { %struct.tree_common, %struct.real_value* }
%struct.tree_ssa_name = type { %struct.tree_common, %struct.tree_node*, i32, %struct.ptr_info_def*, %struct.tree_node*, i8* }
%struct.tree_statement_list = type { %struct.tree_common, %struct.tree_statement_list_node*, %struct.tree_statement_list_node* }
%struct.tree_statement_list_node = type { %struct.tree_statement_list_node*, %struct.tree_statement_list_node*, %struct.tree_node* }
%struct.tree_stmt_iterator = type { %struct.tree_statement_list_node*, %struct.tree_node* }
%struct.tree_string = type { %struct.tree_common, i32, [1 x i8] }
%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* }
%struct.tree_type_symtab = type { i32 }
%struct.tree_value_handle = type { %struct.tree_common, %struct.value_set*, i32 }
%struct.tree_vec = type { %struct.tree_common, i32, [1 x %struct.tree_node*] }
%struct.tree_vector = type { %struct.tree_common, %struct.tree_node* }
%struct.u = type { [1 x i64] }
%struct.use_operand_ptr = type { %struct.tree_node** }
%struct.use_optype_d = type { i32, [1 x %struct.def_operand_ptr] }
%struct.v_def_use_operand_type_t = type { %struct.tree_node*, %struct.tree_node* }
%struct.v_may_def_optype_d = type { i32, [1 x %struct.elt_t] }
%struct.v_must_def_optype_d = type { i32, [1 x %struct.elt_t] }
%struct.value_set = type opaque
%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* }
%struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* }
%struct.varasm_status = type opaque
%struct.varray_data = type { [1 x i64] }
%struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u }
%struct.vuse_optype_d = type { i32, [1 x %struct.tree_node*] }
@gt_pch_rs_gt_gimplify_h = external global [2 x %struct.ggc_root_tab] ; <[2 x %struct.ggc_root_tab]*> [#uses=0]
@tmp_var_id_num = external global i32 ; <i32*> [#uses=0]
@gt_ggc_r_gt_gimplify_h = external global [1 x %struct.ggc_root_tab] ; <[1 x %struct.ggc_root_tab]*> [#uses=0]
@__FUNCTION__.19956 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
@str = external global [42 x i8] ; <[42 x i8]*> [#uses=1]
@__FUNCTION__.19974 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
@gimplify_ctxp = external global %struct.gimplify_ctx* ; <%struct.gimplify_ctx**> [#uses=0]
@cl_pf_opts = external global %struct.cl_perfunc_opts ; <%struct.cl_perfunc_opts*> [#uses=0]
@__FUNCTION__.20030 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
@__FUNCTION__.20099 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
@global_trees = external global [47 x %struct.tree_node*] ; <[47 x %struct.tree_node*]*> [#uses=0]
@tree_code_type = external global [0 x i32] ; <[0 x i32]*> [#uses=2]
@current_function_decl = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=0]
@str1 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
@str2 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
@__FUNCTION__.20151 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.20221 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
@tree_code_length = external global [0 x i8] ; <[0 x i8]*> [#uses=0]
@__FUNCTION__.20435 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
@__FUNCTION__.20496 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@cfun = external global %struct.function* ; <%struct.function**> [#uses=0]
@__FUNCTION__.20194 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
@__FUNCTION__.19987 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.20532 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.20583 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.20606 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
@__FUNCTION__.20644 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
@__FUNCTION__.20681 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
@__FUNCTION__.20700 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
@__FUNCTION__.21426 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
@__FUNCTION__.21471 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
@__FUNCTION__.21962 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
@__FUNCTION__.22992 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.23735 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
@lang_hooks = external global %struct.lang_hooks ; <%struct.lang_hooks*> [#uses=0]
@__FUNCTION__.27383 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
@__FUNCTION__.20776 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.10672 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
@str3 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
@str4 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
@__FUNCTION__.20065 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
@__FUNCTION__.23256 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
@__FUNCTION__.23393 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.20043 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.20729 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@__FUNCTION__.20563 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
@__FUNCTION__.10663 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
@__FUNCTION__.20367 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.20342 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
@input_location = external global %struct.location_t ; <%struct.location_t*> [#uses=0]
@__FUNCTION__.24510 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
@__FUNCTION__.25097 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
@__FUNCTION__.24705 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
@str5 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
@__FUNCTION__.25136 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.24450 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
@implicit_built_in_decls = external global [471 x %struct.tree_node*] ; <[471 x %struct.tree_node*]*> [#uses=0]
@__FUNCTION__.24398 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
@__FUNCTION__.26156 = external global [14 x i8] ; <[14 x i8]*> [#uses=1]
@unknown_location = external global %struct.location_t ; <%struct.location_t*> [#uses=0]
@__FUNCTION__.23038 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@str6 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
@__FUNCTION__.25476 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.22136 = external global [20 x i8] ; <[20 x i8]*> [#uses=1]
@__FUNCTION__.21997 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@__FUNCTION__.21247 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@built_in_decls = external global [471 x %struct.tree_node*] ; <[471 x %struct.tree_node*]*> [#uses=0]
@__FUNCTION__.21924 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.21861 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
@global_dc = external global %struct.diagnostic_context* ; <%struct.diagnostic_context**> [#uses=0]
@__FUNCTION__.25246 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
@str7 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
@stderr = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
@str8 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
@str9 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
@__FUNCTION__.27653 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.27322 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.27139 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
@__FUNCTION__.22462 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@str10 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
@__FUNCTION__.25389 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.25650 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
@str11 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
@str12 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
@str13 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
@__FUNCTION__.27444 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
@timevar_enable = external global i8 ; <i8*> [#uses=0]
@__FUNCTION__.27533 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@flag_instrument_function_entry_exit = external global i32 ; <i32*> [#uses=0]
@__FUNCTION__.25331 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@__FUNCTION__.20965 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@str14 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
@__FUNCTION__.26053 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@__FUNCTION__.26004 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
@str15 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
@__FUNCTION__.21584 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
@str16 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
@__FUNCTION__.25903 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
@__FUNCTION__.22930 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
@__FUNCTION__.23832 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@str17 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
@__FUNCTION__.24620 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
@__FUNCTION__.24582 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
@__FUNCTION__.21382 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
@__FUNCTION__.21117 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
declare void @push_gimplify_context()
declare i32 @gimple_tree_hash(i8*)
declare i32 @iterative_hash_expr(%struct.tree_node*, i32)
declare i32 @gimple_tree_eq(i8*, i8*)
declare i32 @operand_equal_p(%struct.tree_node*, %struct.tree_node*, i32)
declare void @fancy_abort(i8*, i32, i8*)
declare i8* @xcalloc(i32, i32)
declare %struct.htab* @htab_create(i32, i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*)
declare void @free(i8*)
declare void @gimple_push_bind_expr(%struct.tree_node*)
declare void @gimple_pop_bind_expr()
declare %struct.tree_node* @gimple_current_bind_expr()
declare fastcc void @gimple_push_condition()
declare %struct.tree_node* @create_artificial_label()
declare %struct.tree_node* @build_decl_stat(i32, %struct.tree_node*, %struct.tree_node*)
declare void @tree_class_check_failed(%struct.tree_node*, i32, i8*, i32, i8*)
declare %struct.tree_node* @create_tmp_var_name(i8*)
declare i32 @strlen(i8*)
declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
declare i32 @sprintf(i8*, i8*, ...)
declare %struct.tree_node* @get_identifier(i8*)
declare %struct.tree_node* @create_tmp_var_raw(%struct.tree_node*, i8*)
declare %struct.tree_node* @build_qualified_type(%struct.tree_node*, i32)
declare i8* @get_name(%struct.tree_node*)
declare void @tree_operand_check_failed(i32, i32, i8*, i32, i8*)
declare void @tree_check_failed(%struct.tree_node*, i8*, i32, i8*, ...)
declare void @declare_tmp_vars(%struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @nreverse(%struct.tree_node*)
declare void @gimple_add_tmp_var(%struct.tree_node*)
declare void @record_vars(%struct.tree_node*)
declare %struct.tree_node* @create_tmp_var(%struct.tree_node*, i8*)
declare void @pop_gimplify_context(%struct.tree_node*)
declare void @htab_delete(%struct.htab*)
declare fastcc void @annotate_one_with_locus(%struct.tree_node*, i32, i32)
declare void @annotate_with_locus(%struct.tree_node*, i32, i32)
declare %struct.tree_node* @mostly_copy_tree_r(%struct.tree_node**, i32*, i8*)
declare %struct.tree_node* @copy_tree_r(%struct.tree_node**, i32*, i8*)
declare %struct.tree_node* @mark_decls_volatile_r(%struct.tree_node**, i32*, i8*)
declare %struct.tree_node* @copy_if_shared_r(%struct.tree_node**, i32*, i8*)
declare %struct.tree_node* @walk_tree(%struct.tree_node**, %struct.tree_node* (%struct.tree_node**, i32*, i8*)*, i8*, %struct.pointer_set_t*)
declare %struct.tree_node* @unmark_visited_r(%struct.tree_node**, i32*, i8*)
declare fastcc void @unshare_body(%struct.tree_node**, %struct.tree_node*)
declare %struct.cgraph_node* @cgraph_node(%struct.tree_node*)
declare fastcc void @unvisit_body(%struct.tree_node**, %struct.tree_node*)
declare void @unshare_all_trees(%struct.tree_node*)
declare %struct.tree_node* @unshare_expr(%struct.tree_node*)
declare %struct.tree_node* @build_and_jump(%struct.tree_node**)
declare %struct.tree_node* @build1_stat(i32, %struct.tree_node*, %struct.tree_node*)
declare i32 @compare_case_labels(i8*, i8*)
declare i32 @tree_int_cst_compare(%struct.tree_node*, %struct.tree_node*)
declare void @sort_case_labels(%struct.tree_node*)
declare void @tree_vec_elt_check_failed(i32, i32, i8*, i32, i8*)
declare void @qsort(i8*, i32, i32, i32 (i8*, i8*)*)
declare %struct.tree_node* @force_labels_r(%struct.tree_node**, i32*, i8*)
declare fastcc void @canonicalize_component_ref(%struct.tree_node**)
declare %struct.tree_node* @get_unwidened(%struct.tree_node*, %struct.tree_node*)
declare fastcc void @maybe_with_size_expr(%struct.tree_node**)
declare %struct.tree_node* @substitute_placeholder_in_expr(%struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @build2_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare fastcc %struct.tree_node* @gimple_boolify(%struct.tree_node*)
declare %struct.tree_node* @convert(%struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @gimplify_init_ctor_preeval_1(%struct.tree_node**, i32*, i8*)
declare i64 @get_alias_set(%struct.tree_node*)
declare i32 @alias_sets_conflict_p(i64, i64)
declare fastcc i8 @cpt_same_type(%struct.tree_node*, %struct.tree_node*) zeroext
declare %struct.tree_node* @check_pointer_types_r(%struct.tree_node**, i32*, i8*)
declare %struct.tree_node* @voidify_wrapper_expr(%struct.tree_node*, %struct.tree_node*)
declare i32 @integer_zerop(%struct.tree_node*)
declare fastcc void @append_to_statement_list_1(%struct.tree_node*, %struct.tree_node**)
declare %struct.tree_node* @alloc_stmt_list()
declare void @tsi_link_after(%struct.tree_stmt_iterator*, %struct.tree_node*, i32)
declare void @append_to_statement_list_force(%struct.tree_node*, %struct.tree_node**)
declare void @append_to_statement_list(%struct.tree_node*, %struct.tree_node**)
declare fastcc %struct.tree_node* @shortcut_cond_r(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**)
declare %struct.tree_node* @build3_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare fastcc %struct.tree_node* @shortcut_cond_expr(%struct.tree_node*)
declare %struct.tree_node* @expr_last(%struct.tree_node*)
declare i8 @block_may_fallthru(%struct.tree_node*) zeroext
declare fastcc void @gimple_pop_condition(%struct.tree_node**)
declare %struct.tree_node* @gimple_build_eh_filter(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare void @annotate_all_with_locus(%struct.tree_node**, i32, i32)
declare fastcc %struct.tree_node* @internal_get_tmp_var(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
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) {
entry:
%internal_post = alloca %struct.tree_node*, align 4 ; <%struct.tree_node**> [#uses=2]
%pre_p_addr.0 = select i1 false, %struct.tree_node** null, %struct.tree_node** %pre_p ; <%struct.tree_node**> [#uses=7]
%post_p_addr.0 = select i1 false, %struct.tree_node** %internal_post, %struct.tree_node** %post_p ; <%struct.tree_node**> [#uses=7]
br i1 false, label %bb277, label %bb191
bb191: ; preds = %entry
ret i32 0
bb277: ; preds = %entry
%tmp283 = call i32 null( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0, %struct.tree_node** %post_p_addr.0 ) ; <i32> [#uses=1]
switch i32 %tmp283, label %bb7478 [
i32 0, label %cond_next289
i32 -1, label %cond_next298
]
cond_next289: ; preds = %bb277
ret i32 0
cond_next298: ; preds = %bb277
switch i32 0, label %bb7444 [
i32 24, label %bb7463
i32 25, label %bb7463
i32 26, label %bb7463
i32 27, label %bb7463
i32 28, label %bb7463
i32 33, label %bb4503
i32 39, label %bb397
i32 40, label %bb5650
i32 41, label %bb4339
i32 42, label %bb4350
i32 43, label %bb4350
i32 44, label %bb319
i32 45, label %bb397
i32 46, label %bb6124
i32 47, label %bb7463
i32 49, label %bb5524
i32 50, label %bb1283
i32 51, label %bb1289
i32 52, label %bb1289
i32 53, label %bb5969
i32 54, label %bb408
i32 56, label %bb5079
i32 57, label %bb428
i32 59, label %bb5965
i32 74, label %bb4275
i32 75, label %bb4275
i32 76, label %bb4275
i32 77, label %bb4275
i32 91, label %bb1296
i32 92, label %bb1296
i32 96, label %bb1322
i32 112, label %bb2548
i32 113, label %bb2548
i32 115, label %bb397
i32 116, label %bb5645
i32 117, label %bb1504
i32 121, label %bb397
i32 122, label %bb397
i32 123, label %bb313
i32 124, label %bb313
i32 125, label %bb313
i32 126, label %bb313
i32 127, label %bb2141
i32 128, label %cond_next5873
i32 129, label %cond_next5873
i32 130, label %bb4536
i32 131, label %bb5300
i32 132, label %bb5170
i32 133, label %bb5519
i32 134, label %bb5091
i32 135, label %bb5083
i32 136, label %bb5087
i32 137, label %bb5382
i32 139, label %bb7463
i32 140, label %bb7463
i32 142, label %bb5974
i32 143, label %bb6049
i32 147, label %bb6296
i32 151, label %cond_next6474
]
bb313: ; preds = %cond_next298, %cond_next298, %cond_next298, %cond_next298
ret i32 0
bb319: ; preds = %cond_next298
ret i32 0
bb397: ; preds = %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298
ret i32 0
bb408: ; preds = %cond_next298
%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 ) ; <i32> [#uses=0]
ret i32 0
bb428: ; preds = %cond_next298
ret i32 0
bb1283: ; preds = %cond_next298
ret i32 0
bb1289: ; preds = %cond_next298, %cond_next298
ret i32 0
bb1296: ; preds = %cond_next298, %cond_next298
ret i32 0
bb1322: ; preds = %cond_next298
ret i32 0
bb1504: ; preds = %cond_next298
ret i32 0
bb2141: ; preds = %cond_next298
ret i32 0
bb2548: ; preds = %cond_next298, %cond_next298
%tmp2554 = load %struct.tree_node** %expr_p ; <%struct.tree_node*> [#uses=2]
%tmp2562 = and i32 0, 255 ; <i32> [#uses=1]
%tmp2569 = add i8 0, -4 ; <i8> [#uses=1]
icmp ugt i8 %tmp2569, 5 ; <i1>:0 [#uses=2]
%tmp2587 = load i8* null ; <i8> [#uses=1]
icmp eq i8 %tmp2587, 0 ; <i1>:1 [#uses=2]
%tmp2607 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=2]
br i1 false, label %bb2754, label %cond_next2617
cond_next2617: ; preds = %bb2548
ret i32 0
bb2754: ; preds = %bb2548
br i1 %0, label %cond_true2780, label %cond_next2783
cond_true2780: ; preds = %bb2754
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) )
unreachable
cond_next2783: ; preds = %bb2754
%tmp2825 = and i32 0, 255 ; <i32> [#uses=1]
%tmp2829 = load i32* null ; <i32> [#uses=1]
%tmp28292830 = trunc i32 %tmp2829 to i8 ; <i8> [#uses=1]
%tmp2832 = add i8 %tmp28292830, -4 ; <i8> [#uses=1]
icmp ugt i8 %tmp2832, 5 ; <i1>:2 [#uses=1]
icmp eq i8 0, 0 ; <i1>:3 [#uses=1]
%tmp28652866 = bitcast %struct.tree_node* %tmp2607 to %struct.tree_exp* ; <%struct.tree_exp*> [#uses=1]
%tmp2868 = getelementptr %struct.tree_exp* %tmp28652866, i32 0, i32 4, i32 0 ; <%struct.tree_node**> [#uses=1]
%tmp2870 = load %struct.tree_node** %tmp2868 ; <%struct.tree_node*> [#uses=1]
br i1 %1, label %cond_true2915, label %cond_next2927
cond_true2915: ; preds = %cond_next2783
unreachable
cond_next2927: ; preds = %cond_next2783
%tmp2938 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=1]
%tmp2944 = load i32* null ; <i32> [#uses=1]
%tmp2946 = and i32 %tmp2944, 255 ; <i32> [#uses=1]
%tmp2949 = getelementptr [0 x i32]* @tree_code_type, i32 0, i32 %tmp2946 ; <i32*> [#uses=1]
%tmp2950 = load i32* %tmp2949 ; <i32> [#uses=1]
icmp eq i32 %tmp2950, 2 ; <i1>:4 [#uses=1]
br i1 %4, label %cond_next2954, label %cond_true2951
cond_true2951: ; preds = %cond_next2927
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) )
unreachable
cond_next2954: ; preds = %cond_next2927
br i1 %0, label %cond_true2991, label %cond_next2994
cond_true2991: ; preds = %cond_next2954
unreachable
cond_next2994: ; preds = %cond_next2954
br i1 %1, label %cond_true3009, label %cond_next3021
cond_true3009: ; preds = %cond_next2994
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) )
unreachable
cond_next3021: ; preds = %cond_next2994
br i1 %2, label %cond_true3044, label %cond_next3047
cond_true3044: ; preds = %cond_next3021
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) )
unreachable
cond_next3047: ; preds = %cond_next3021
br i1 %3, label %cond_true3062, label %cond_next3074
cond_true3062: ; preds = %cond_next3047
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) )
unreachable
cond_next3074: ; preds = %cond_next3047
%tmp3084 = getelementptr %struct.tree_node* %tmp2870, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1]
%tmp3085 = load %struct.tree_node** %tmp3084 ; <%struct.tree_node*> [#uses=1]
%tmp31043105 = bitcast %struct.tree_node* %tmp3085 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
%tmp3106 = getelementptr %struct.tree_type* %tmp31043105, i32 0, i32 6 ; <i16*> [#uses=1]
%tmp31063107 = bitcast i16* %tmp3106 to i32* ; <i32*> [#uses=1]
%tmp3108 = load i32* %tmp31063107 ; <i32> [#uses=1]
xor i32 %tmp3108, 0 ; <i32>:5 [#uses=1]
%tmp81008368 = and i32 %5, 65024 ; <i32> [#uses=1]
icmp eq i32 %tmp81008368, 0 ; <i1>:6 [#uses=1]
br i1 %6, label %cond_next3113, label %bb3351
cond_next3113: ; preds = %cond_next3074
ret i32 0
bb3351: ; preds = %cond_next3074
%tmp3354 = call i8 @tree_ssa_useless_type_conversion( %struct.tree_node* %tmp2554 ) zeroext ; <i8> [#uses=1]
icmp eq i8 %tmp3354, 0 ; <i1>:7 [#uses=1]
%tmp3424 = load i32* null ; <i32> [#uses=1]
br i1 %7, label %cond_next3417, label %cond_true3356
cond_true3356: ; preds = %bb3351
ret i32 0
cond_next3417: ; preds = %bb3351
br i1 false, label %cond_true3429, label %cond_next4266
cond_true3429: ; preds = %cond_next3417
%tmp3443 = and i32 %tmp3424, 255 ; <i32> [#uses=0]
ret i32 0
cond_next4266: ; preds = %cond_next3417
%tmp4268 = load %struct.tree_node** %expr_p ; <%struct.tree_node*> [#uses=1]
icmp eq %struct.tree_node* %tmp4268, null ; <i1>:8 [#uses=1]
br i1 %8, label %bb4275, label %bb7463
bb4275: ; preds = %cond_next4266, %cond_next298, %cond_next298, %cond_next298, %cond_next298
%tmp4289 = and i32 0, 255 ; <i32> [#uses=2]
%tmp4292 = getelementptr [0 x i32]* @tree_code_type, i32 0, i32 %tmp4289 ; <i32*> [#uses=1]
%tmp4293 = load i32* %tmp4292 ; <i32> [#uses=1]
%tmp42934294 = trunc i32 %tmp4293 to i8 ; <i8> [#uses=1]
%tmp4296 = add i8 %tmp42934294, -4 ; <i8> [#uses=1]
icmp ugt i8 %tmp4296, 5 ; <i1>:9 [#uses=1]
br i1 %9, label %cond_true4297, label %cond_next4300
cond_true4297: ; preds = %bb4275
unreachable
cond_next4300: ; preds = %bb4275
%tmp4314 = load i8* null ; <i8> [#uses=1]
icmp eq i8 %tmp4314, 0 ; <i1>:10 [#uses=1]
br i1 %10, label %cond_true4315, label %cond_next4327
cond_true4315: ; preds = %cond_next4300
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) )
unreachable
cond_next4327: ; preds = %cond_next4300
%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 ) ; <i32> [#uses=0]
ret i32 0
bb4339: ; preds = %cond_next298
ret i32 0
bb4350: ; preds = %cond_next298, %cond_next298
ret i32 0
bb4503: ; preds = %cond_next298
ret i32 0
bb4536: ; preds = %cond_next298
ret i32 0
bb5079: ; preds = %cond_next298
ret i32 0
bb5083: ; preds = %cond_next298
ret i32 0
bb5087: ; preds = %cond_next298
ret i32 0
bb5091: ; preds = %cond_next298
ret i32 0
bb5170: ; preds = %cond_next298
ret i32 0
bb5300: ; preds = %cond_next298
ret i32 0
bb5382: ; preds = %cond_next298
ret i32 0
bb5519: ; preds = %cond_next298
ret i32 0
bb5524: ; preds = %cond_next298
ret i32 0
bb5645: ; preds = %cond_next298
ret i32 0
bb5650: ; preds = %cond_next298
ret i32 0
cond_next5873: ; preds = %cond_next298, %cond_next298
ret i32 0
bb5965: ; preds = %cond_next298
%tmp5968 = call fastcc i32 @gimplify_cleanup_point_expr( %struct.tree_node** %expr_p, %struct.tree_node** %pre_p_addr.0 ) ; <i32> [#uses=0]
ret i32 0
bb5969: ; preds = %cond_next298
%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 ) ; <i32> [#uses=0]
ret i32 0
bb5974: ; preds = %cond_next298
ret i32 0
bb6049: ; preds = %cond_next298
ret i32 0
bb6124: ; preds = %cond_next298
ret i32 0
bb6296: ; preds = %cond_next298
ret i32 0
cond_next6474: ; preds = %cond_next298
icmp eq %struct.tree_node** %internal_post, %post_p_addr.0 ; <i1>:11 [#uses=1]
%iftmp.381.0 = select i1 %11, %struct.tree_node** null, %struct.tree_node** %post_p_addr.0 ; <%struct.tree_node**> [#uses=1]
%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 ) ; <i32> [#uses=0]
%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 ) ; <i32> [#uses=0]
ret i32 0
bb7444: ; preds = %cond_next298
ret i32 0
bb7463: ; preds = %cond_next4266, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298, %cond_next298
ret i32 0
bb7478: ; preds = %bb277
ret i32 0
}
declare i8 @is_gimple_formal_tmp_rhs(%struct.tree_node*) zeroext
declare void @gimplify_and_add(%struct.tree_node*, %struct.tree_node**)
declare %struct.tree_node* @get_initialized_tmp_var(%struct.tree_node*, %struct.tree_node**, %struct.tree_node**)
declare %struct.tree_node* @get_formal_tmp_var(%struct.tree_node*, %struct.tree_node**)
declare fastcc void @gimplify_init_ctor_preeval(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.gimplify_init_ctor_preeval_data*)
declare i8 @type_contains_placeholder_p(%struct.tree_node*) zeroext
declare i8 @is_gimple_mem_rhs(%struct.tree_node*) zeroext
declare fastcc i32 @gimplify_modify_expr_rhs(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
declare %struct.tree_node* @fold_indirect_ref(%struct.tree_node*)
declare fastcc i32 @gimplify_compound_expr(%struct.tree_node**, %struct.tree_node**, i8 zeroext )
declare i8 @is_gimple_lvalue(%struct.tree_node*) zeroext
declare void @categorize_ctor_elements(%struct.tree_node*, i64*, i64*, i64*, i8*)
declare void @lhd_set_decl_assembler_name(%struct.tree_node*)
declare i64 @int_size_in_bytes(%struct.tree_node*)
declare i32 @can_move_by_pieces(i64, i32)
declare i64 @count_type_elements(%struct.tree_node*)
declare void @gimplify_stmt(%struct.tree_node**)
declare %struct.tree_node* @get_base_address(%struct.tree_node*)
declare fastcc void @gimplify_init_ctor_eval(%struct.tree_node*, %struct.tree_node*, %struct.tree_node**, i8 zeroext )
declare %struct.tree_node* @build_complex(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare i8 (%struct.tree_node*) zeroext * @rhs_predicate_for(%struct.tree_node*)
declare %struct.tree_node* @build_vector(%struct.tree_node*, %struct.tree_node*)
declare i8 @is_gimple_val(%struct.tree_node*) zeroext
declare i8 @is_gimple_reg_type(%struct.tree_node*) zeroext
declare fastcc i32 @gimplify_cond_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.tree_node*, i32)
declare fastcc i32 @gimplify_modify_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
declare %struct.tree_node* @tree_cons_stat(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @build_fold_addr_expr(%struct.tree_node*)
declare %struct.tree_node* @build_function_call_expr(%struct.tree_node*, %struct.tree_node*)
declare i8 @is_gimple_addressable(%struct.tree_node*) zeroext
declare i8 @is_gimple_reg(%struct.tree_node*) zeroext
declare %struct.tree_node* @make_ssa_name(%struct.tree_node*, %struct.tree_node*)
declare i8 @tree_ssa_useless_type_conversion(%struct.tree_node*) zeroext
declare fastcc i32 @gimplify_self_mod_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i8 zeroext )
declare fastcc i32 @gimplify_compound_lval(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, i32)
declare %struct.tree_node* @get_callee_fndecl(%struct.tree_node*)
declare %struct.tree_node* @fold_builtin(%struct.tree_node*, i8 zeroext )
declare void @error(i8*, ...)
declare %struct.tree_node* @build_empty_stmt()
declare i8 @fold_builtin_next_arg(%struct.tree_node*) zeroext
declare fastcc i32 @gimplify_arg(%struct.tree_node**, %struct.tree_node**)
declare i8 @is_gimple_call_addr(%struct.tree_node*) zeroext
declare i32 @call_expr_flags(%struct.tree_node*)
declare void @recalculate_side_effects(%struct.tree_node*)
declare %struct.tree_node* @fold_convert(%struct.tree_node*, %struct.tree_node*)
declare void @recompute_tree_invarant_for_addr_expr(%struct.tree_node*)
declare i32 @gimplify_va_arg_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
declare %struct.tree_node* @size_int_kind(i64, i32)
declare %struct.tree_node* @size_binop(i32, %struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @build4_stat(i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
declare void @gimplify_type_sizes(%struct.tree_node*, %struct.tree_node**)
declare void @gimplify_one_sizepos(%struct.tree_node**, %struct.tree_node**)
declare %struct.tree_node* @build_pointer_type(%struct.tree_node*)
declare %struct.tree_node* @build_fold_indirect_ref(%struct.tree_node*)
declare fastcc i32 @gimplify_bind_expr(%struct.tree_node**, %struct.tree_node*, %struct.tree_node**)
declare fastcc void @gimplify_loop_expr(%struct.tree_node**, %struct.tree_node**)
declare fastcc i32 @gimplify_switch_expr(%struct.tree_node**, %struct.tree_node**)
declare %struct.tree_node* @decl_function_context(%struct.tree_node*)
declare %struct.varray_head_tag* @varray_grow(%struct.varray_head_tag*, i32)
declare fastcc void @gimplify_return_expr(%struct.tree_node*, %struct.tree_node**)
declare fastcc i32 @gimplify_save_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
declare fastcc i32 @gimplify_asm_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
declare void @gimplify_to_stmt_list(%struct.tree_node**)
declare fastcc i32 @gimplify_cleanup_point_expr(%struct.tree_node**, %struct.tree_node**)
declare fastcc i32 @gimplify_target_expr(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**)
declare void @tsi_delink(%struct.tree_stmt_iterator*)
declare void @tsi_link_before(%struct.tree_stmt_iterator*, %struct.tree_node*, i32)
declare i8 @is_gimple_stmt(%struct.tree_node*) zeroext
declare void @print_generic_expr(%struct.FILE*, %struct.tree_node*, i32)
declare void @debug_tree(%struct.tree_node*)
declare void @internal_error(i8*, ...)
declare %struct.tree_node* @force_gimple_operand(%struct.tree_node*, %struct.tree_node**, i8 zeroext , %struct.tree_node*)
declare i8 @is_gimple_reg_rhs(%struct.tree_node*) zeroext
declare void @add_referenced_tmp_var(%struct.tree_node*)
declare i8 @contains_placeholder_p(%struct.tree_node*) zeroext
declare %struct.varray_head_tag* @varray_init(i32, i32, i8*)
declare i32 @handled_component_p(%struct.tree_node*)
declare void @varray_check_failed(%struct.varray_head_tag*, i32, i8*, i32, i8*)
declare %struct.tree_node* @array_ref_low_bound(%struct.tree_node*)
declare i8 @is_gimple_min_invariant(%struct.tree_node*) zeroext
declare i8 @is_gimple_formal_tmp_reg(%struct.tree_node*) zeroext
declare %struct.tree_node* @array_ref_element_size(%struct.tree_node*)
declare %struct.tree_node* @component_ref_field_offset(%struct.tree_node*)
declare i8 @is_gimple_min_lval(%struct.tree_node*) zeroext
declare void @varray_underflow(%struct.varray_head_tag*, i8*, i32, i8*)
declare i32 @list_length(%struct.tree_node*)
declare i8 @parse_output_constraint(i8**, i32, i32, i32, i8*, i8*, i8*) zeroext
declare i8* @xstrdup(i8*)
declare %struct.tree_node* @build_string(i32, i8*)
declare i8* @strchr(i8*, i32)
declare %struct.tree_node* @build_tree_list_stat(%struct.tree_node*, %struct.tree_node*)
declare %struct.tree_node* @chainon(%struct.tree_node*, %struct.tree_node*)
declare i8 @parse_input_constraint(i8**, i32, i32, i32, i32, i8**, i8*, i8*) zeroext
declare i8 @is_gimple_asm_val(%struct.tree_node*) zeroext
declare void @gimplify_body(%struct.tree_node**, %struct.tree_node*, i8 zeroext )
declare void @timevar_push_1(i32)
declare %struct.tree_node* @gimplify_parameters()
declare %struct.tree_node* @expr_only(%struct.tree_node*)
declare void @timevar_pop_1(i32)
declare void @gimplify_function_tree(%struct.tree_node*)
declare void @allocate_struct_function(%struct.tree_node*)
declare %struct.tree_node* @make_tree_vec_stat(i32)
declare %struct.tree_node* @tsi_split_statement_list_after(%struct.tree_stmt_iterator*)
declare i8 @is_gimple_condexpr(%struct.tree_node*) zeroext
declare %struct.tree_node* @invert_truthvalue(%struct.tree_node*)
declare i8 @initializer_zerop(%struct.tree_node*) zeroext
declare i32 @simple_cst_equal(%struct.tree_node*, %struct.tree_node*)
declare i32 @aggregate_value_p(%struct.tree_node*, %struct.tree_node*)
declare i32 @fwrite(i8*, i32, i32, %struct.FILE*)

View File

@ -2,7 +2,7 @@
%struct.Connection = type { i32, [10 x i8], i32 }
%struct.IntChunk = type { %struct.cppobjtype, i32, i32*, i32 }
%struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) signext *, i16 (%struct.Point*) signext *, double (%struct.Point*)*, double (%struct.Point*)* }
%struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) *, i16 (%struct.Point*) *, double (%struct.Point*)*, double (%struct.Point*)* }
%struct.RefPoint = type { %struct.Point*, %struct.cppobjtype }
%struct.ShortArray = type { %struct.cppobjtype, i32, i16* }
%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 }

View File

@ -46,7 +46,8 @@ bb17.i: ; preds = %cond_next119.i
cond_true53.i: ; preds = %bb17.i
ret { i16, %struct.rnode* }* null
cond_false99.i: ; preds = %bb17.i
%tmp106.i = malloc %struct.ch_set ; <%struct.ch_set*> [#uses=1]
%malloccall = tail call i8* @malloc(i32 trunc (i64 mul nuw (i64 ptrtoint (i1** getelementptr (i1** null, i32 1) to i64), i64 2) to i32))
%tmp106.i = bitcast i8* %malloccall to %struct.ch_set*
br i1 false, label %bb126.i, label %cond_next119.i
cond_next119.i: ; preds = %cond_false99.i, %bb42
%curr_ptr.0.reg2mem.0.i = phi %struct.ch_set* [ %tmp106.i, %cond_false99.i ], [ null, %bb42 ] ; <%struct.ch_set*> [#uses=2]
@ -58,3 +59,5 @@ bb126.i: ; preds = %cond_next119.i, %cond_false99.i
bb78: ; preds = %entry
ret { i16, %struct.rnode* }* null
}
declare noalias i8* @malloc(i32)

View File

@ -1,29 +0,0 @@
; RUN: llc < %s -mtriple=arm-apple-darwin
@"\01LC1" = external constant [288 x i8] ; <[288 x i8]*> [#uses=1]
declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) nounwind
define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
br label %bb.i
bb.i: ; preds = %bb.i, %entry
%i.01.i = phi i32 [ 0, %entry ], [ %indvar.next52, %bb.i ] ; <i32> [#uses=1]
%indvar.next52 = add i32 %i.01.i, 1 ; <i32> [#uses=2]
%exitcond53 = icmp eq i32 %indvar.next52, 15 ; <i1> [#uses=1]
br i1 %exitcond53, label %bb.i33.loopexit, label %bb.i
bb.i33.loopexit: ; preds = %bb.i
%0 = malloc [347 x i8] ; <[347 x i8]*> [#uses=2]
%.sub = getelementptr [347 x i8]* %0, i32 0, i32 0 ; <i8*> [#uses=1]
call void @llvm.memcpy.i32( i8* %.sub, i8* getelementptr ([288 x i8]* @"\01LC1", i32 0, i32 0), i32 287, i32 1 ) nounwind
br label %bb.i28
bb.i28: ; preds = %bb.i28, %bb.i33.loopexit
br i1 false, label %repeat_fasta.exit, label %bb.i28
repeat_fasta.exit: ; preds = %bb.i28
free [347 x i8]* %0
unreachable
}

View File

@ -14,7 +14,8 @@ entry:
br i1 %p, label %bb8, label %bb1
bb1: ; preds = %entry
%0 = malloc %struct.Village ; <%struct.Village*> [#uses=3]
%malloccall = tail call i8* @malloc(i32 ptrtoint (%struct.Village* getelementptr (%struct.Village* null, i32 1) to i32))
%0 = bitcast i8* %malloccall to %struct.Village*
%exp2 = call double @ldexp(double 1.000000e+00, i32 %level) nounwind ; <double> [#uses=1]
%.c = fptosi double %exp2 to i32 ; <i32> [#uses=1]
store i32 %.c, i32* null
@ -29,3 +30,4 @@ bb8: ; preds = %entry
}
declare double @ldexp(double, i32)
declare noalias i8* @malloc(i32)

View File

@ -31,7 +31,7 @@ return: ; preds = %bb2
ret i32 %.0, !dbg !29
}
define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 {
define linkonce_odr void @_ZN4SValC1Ev(%struct.SVal* %this) nounwind ssp align 2 {
entry:
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
call void @llvm.dbg.value(metadata !{%struct.SVal* %this}, i64 0, metadata !31), !dbg !34

View File

@ -10,7 +10,7 @@ define i32 @test0(i8 %A) {
ret i32 %B
}
define i8 @test1(i32 %A) signext {
define signext i8 @test1(i32 %A) {
%B = lshr i32 %A, 8
%C = shl i32 %A, 24
%D = or i32 %B, %C
@ -18,7 +18,7 @@ define i8 @test1(i32 %A) signext {
ret i8 %E
}
define i32 @test2(i32 %A, i32 %X) signext {
define signext i32 @test2(i32 %A, i32 %X) {
%B = lshr i32 %A, 8
%C = shl i32 %A, 24
%D = or i32 %B, %C

View File

@ -2,19 +2,19 @@
; RUN: llc < %s -march=arm -mattr=+v6 | grep uxtab | count 1
; RUN: llc < %s -march=arm -mattr=+v6 | grep uxth | count 1
define i8 @test1(i32 %A.u) zeroext {
define zeroext i8 @test1(i32 %A.u) {
%B.u = trunc i32 %A.u to i8
ret i8 %B.u
}
define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
define zeroext i32 @test2(i32 %A.u, i32 %B.u) {
%C.u = trunc i32 %B.u to i8
%D.u = zext i8 %C.u to i32
%E.u = add i32 %A.u, %D.u
ret i32 %E.u
}
define i32 @test3(i32 %A.u) zeroext {
define zeroext i32 @test3(i32 %A.u) {
%B.u = lshr i32 %A.u, 8
%C.u = shl i32 %A.u, 24
%D.u = or i32 %B.u, %C.u

View File

@ -1,17 +0,0 @@
; There should be exactly two calls here (memset and malloc), no more.
; RUN: llc < %s -march=alpha | grep jsr | count 2
%typedef.bc_struct = type opaque
declare void @llvm.memset.i64(i8*, i8, i64, i32)
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) {
newFuncRoot:
%tmp.120 = add i32 %extra.0, 2 ; <i32> [#uses=1]
%tmp.122 = add i32 %tmp.120, %tmp.94.reload ; <i32> [#uses=1]
%tmp.123 = add i32 %tmp.122, %tmp.100.reload ; <i32> [#uses=2]
%tmp.112 = malloc i8, i32 %tmp.123 ; <i8*> [#uses=1]
%tmp.137 = zext i32 %tmp.123 to i64 ; <i64> [#uses=1]
tail call void @llvm.memset.i64( i8* %tmp.112, i8 0, i64 %tmp.137, i32 0 )
ret i1 true
}

View File

@ -17,19 +17,19 @@
; RUN: grep {s8subq} %t.s | count 2
define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @al(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @ali(i32 signext %x.s) signext {
define signext i32 @ali(i32 signext %x.s) {
entry:
%tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i64 @aq(i64 signext %x.s, i64 signext %y.s) signext {
define signext i64 @aq(i64 signext %x.s, i64 signext %y.s) {
entry:
%tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
ret i64 %tmp.3.s
@ -41,13 +41,13 @@ entry:
ret i64 %tmp.3.s
}
define i32 @sl(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @sl(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @sli(i32 signext %x.s) signext {
define signext i32 @sli(i32 signext %x.s) {
entry:
%tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
ret i32 %tmp.3.s
@ -65,14 +65,14 @@ entry:
ret i64 %tmp.3.s
}
define i32 @a4l(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @a4l(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @a8l(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @a8l(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
@ -93,14 +93,14 @@ entry:
ret i64 %tmp.3.s
}
define i32 @a4li(i32 signext %y.s) signext {
define signext i32 @a4li(i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @a8li(i32 signext %y.s) signext {
define signext i32 @a8li(i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
@ -121,14 +121,14 @@ entry:
ret i64 %tmp.3.s
}
define i32 @s4l(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @s4l(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @s8l(i32 signext %x.s, i32 signext %y.s) signext {
define signext i32 @s8l(i32 signext %x.s, i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
@ -149,14 +149,14 @@ entry:
ret i64 %tmp.3.s
}
define i32 @s4li(i32 signext %y.s) signext {
define signext i32 @s4li(i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
define i32 @s8li(i32 signext %y.s) signext {
define signext i32 @s8li(i32 signext %y.s) {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]

View File

@ -2,7 +2,7 @@
; RUN: llc < %s -march=alpha | grep -i {subl \$16,1,\$0}
define i32 @foo(i32 signext %x) signext {
define signext i32 @foo(i32 signext %x) {
entry:
%tmp.1 = add i32 %x, -1 ; <int> [#uses=1]
ret i32 %tmp.1

View File

@ -2,7 +2,7 @@
; RUN: llc < %s -march=alpha | grep zapnot
define i16 @foo(i64 %y) zeroext {
define zeroext i16 @foo(i64 %y) {
entry:
%tmp.1 = trunc i64 %y to i16 ; <ushort> [#uses=1]
ret i16 %tmp.1

View File

@ -1,756 +0,0 @@
; RUN: llvm-as < %s | llvm-dis > /dev/null
; RUN: llc < %s -march=cpp -cppgen=program -o -
@X = global i32 4, align 16 ; <i32*> [#uses=0]
define i32* @test1012() align 32 {
%X = alloca i32, align 4 ; <i32*> [#uses=1]
%Y = alloca i32, i32 42, align 16 ; <i32*> [#uses=0]
%Z = alloca i32 ; <i32*> [#uses=0]
ret i32* %X
}
define i32* @test1013() {
%X = malloc i32, align 4 ; <i32*> [#uses=1]
%Y = malloc i32, i32 42, align 16 ; <i32*> [#uses=0]
%Z = malloc i32 ; <i32*> [#uses=0]
ret i32* %X
}
define void @void(i32, i32) {
add i32 0, 0 ; <i32>:3 [#uses=2]
sub i32 0, 4 ; <i32>:4 [#uses=2]
br label %5
; <label>:5 ; preds = %5, %2
add i32 %0, %1 ; <i32>:6 [#uses=2]
sub i32 %6, %4 ; <i32>:7 [#uses=1]
icmp sle i32 %7, %3 ; <i1>:8 [#uses=1]
br i1 %8, label %9, label %5
; <label>:9 ; preds = %5
add i32 %0, %1 ; <i32>:10 [#uses=0]
sub i32 %6, %4 ; <i32>:11 [#uses=1]
icmp sle i32 %11, %3 ; <i1>:12 [#uses=0]
ret void
}
define i32 @zarro() {
Startup:
ret i32 0
}
define fastcc void @foo() {
ret void
}
define coldcc void @bar() {
call fastcc void @foo( )
ret void
}
define void @structret({ i8 }* sret %P) {
call void @structret( { i8 }* %P sret )
ret void
}
define void @foo4() {
ret void
}
define coldcc void @bar2() {
call fastcc void @foo( )
ret void
}
define cc42 void @bar3() {
invoke fastcc void @foo( )
to label %Ok unwind label %U
Ok: ; preds = %0
ret void
U: ; preds = %0
unwind
}
define void @bar4() {
call cc42 void @bar( )
invoke cc42 void @bar3( )
to label %Ok unwind label %U
Ok: ; preds = %0
ret void
U: ; preds = %0
unwind
}
; ModuleID = 'calltest.ll'
%FunTy = type i32 (i32)
define i32 @test1000(i32 %i0) {
ret i32 %i0
}
define void @invoke(%FunTy* %x) {
%foo = call i32 %x( i32 123 ) ; <i32> [#uses=0]
%foo2 = tail call i32 %x( i32 123 ) ; <i32> [#uses=0]
ret void
}
define i32 @main(i32 %argc) {
%retval = call i32 @test1000( i32 %argc ) ; <i32> [#uses=2]
%two = add i32 %retval, %retval ; <i32> [#uses=1]
%retval2 = invoke i32 @test1000( i32 %argc )
to label %Next unwind label %Error ; <i32> [#uses=1]
Next: ; preds = %0
%two2 = add i32 %two, %retval2 ; <i32> [#uses=1]
call void @invoke( %FunTy* @test1000 )
ret i32 %two2
Error: ; preds = %0
ret i32 -1
}
; ModuleID = 'casttest.ll'
define i16 @FunFunc(i64 %x, i8 %z) {
bb0:
%cast110 = sext i8 %z to i16 ; <i16> [#uses=1]
%cast10 = trunc i64 %x to i16 ; <i16> [#uses=1]
%reg109 = add i16 %cast110, %cast10 ; <i16> [#uses=1]
ret i16 %reg109
}
; ModuleID = 'cfgstructures.ll'
define void @irreducible(i1 %cond) {
br i1 %cond, label %X, label %Y
X: ; preds = %Y, %0
br label %Y
Y: ; preds = %X, %0
br label %X
}
define void @sharedheader(i1 %cond) {
br label %A
A: ; preds = %Y, %X, %0
br i1 %cond, label %X, label %Y
X: ; preds = %A
br label %A
Y: ; preds = %A
br label %A
}
define void @nested(i1 %cond1, i1 %cond2, i1 %cond3) {
br label %Loop1
Loop1: ; preds = %L2Exit, %0
br label %Loop2
Loop2: ; preds = %L3Exit, %Loop1
br label %Loop3
Loop3: ; preds = %Loop3, %Loop2
br i1 %cond3, label %Loop3, label %L3Exit
L3Exit: ; preds = %Loop3
br i1 %cond2, label %Loop2, label %L2Exit
L2Exit: ; preds = %L3Exit
br i1 %cond1, label %Loop1, label %L1Exit
L1Exit: ; preds = %L2Exit
ret void
}
; ModuleID = 'constexpr.ll'
%SAType = type { i32, { [2 x float], i64 } }
%SType = type { i32, { float, { i8 } }, i64 }
global i64 1 ; <i64*>:0 [#uses=0]
global i64 74514 ; <i64*>:1 [#uses=0]
@t2 = global i32* @t1 ; <i32**> [#uses=0]
@t3 = global i32* @t1 ; <i32**> [#uses=2]
@t1 = global i32 4 ; <i32*> [#uses=2]
@t4 = global i32** @t3 ; <i32***> [#uses=1]
@t5 = global i32** @t3 ; <i32***> [#uses=0]
@t6 = global i32*** @t4 ; <i32****> [#uses=0]
@t7 = global float* inttoptr (i32 12345678 to float*) ; <float**> [#uses=0]
@t9 = global i32 8 ; <i32*> [#uses=0]
global i32* bitcast (float* @4 to i32*) ; <i32**>:2 [#uses=0]
global float* @4 ; <float**>:3 [#uses=0]
global float 0.000000e+00 ; <float*>:4 [#uses=2]
@array = constant [2 x i32] [ i32 12, i32 52 ] ; <[2 x i32]*> [#uses=1]
@arrayPtr = global i32* getelementptr ([2 x i32]* @array, i64 0, i64 0) ; <i32**> [#uses=1]
@arrayPtr5 = global i32** getelementptr (i32** @arrayPtr, i64 5) ; <i32***> [#uses=0]
@somestr = constant [11 x i8] c"hello world" ; <[11 x i8]*> [#uses=2]
@char5 = global i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 5) ; <i8**> [#uses=0]
@char8a = global i32* bitcast (i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 8) to i32*) ; <i32**> [#uses=0]
@char8b = global i8* getelementptr ([11 x i8]* @somestr, i64 0, i64 8) ; <i8**> [#uses=0]
@S1 = global %SType* null ; <%SType**> [#uses=1]
@S2c = constant %SType {
i32 1,
{ float, { i8 } } { float 2.000000e+00, { i8 } { i8 3 } },
i64 4 } ; <%SType*> [#uses=3]
@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]
@S1ptr = global %SType** @S1 ; <%SType***> [#uses=0]
@S2 = global %SType* @S2c ; <%SType**> [#uses=0]
@S3 = global %SAType* @S3c ; <%SAType**> [#uses=0]
@S1fld1a = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) ; <float**> [#uses=0]
@S1fld1b = global float* getelementptr (%SType* @S2c, i64 0, i32 1, i32 0) ; <float**> [#uses=1]
@S1fld1bptr = global float** @S1fld1b ; <float***> [#uses=0]
@S2fld3 = global i8* getelementptr (%SType* @S2c, i64 0, i32 1, i32 1, i32 0) ; <i8**> [#uses=0]
; ModuleID = 'constpointer.ll'
@cpt3 = global i32* @cpt1 ; <i32**> [#uses=1]
@cpt1 = global i32 4 ; <i32*> [#uses=2]
@cpt4 = global i32** @cpt3 ; <i32***> [#uses=0]
@cpt2 = global i32* @cpt1 ; <i32**> [#uses=0]
global float* @7 ; <float**>:0 [#uses=0]
global float* @7 ; <float**>:1 [#uses=0]
global float 0.000000e+00 ; <float*>:2 [#uses=3]
global float* @7 ; <float**>:3 [#uses=0]
@fptr = global void ()* @f ; <void ()**> [#uses=0]
@sptr1 = global [11 x i8]* @somestr ; <[11 x i8]**> [#uses=0]
@somestr2 = constant [11 x i8] c"hello world" ; <[11 x i8]*> [#uses=2]
@sptr2 = global [11 x i8]* @somestr2 ; <[11 x i8]**> [#uses=0]
declare void @f()
; ModuleID = 'escaped_label.ll'
define i32 @foo3() {
br label "foo`~!@#$%^&*()-_=+{}[]\\|;:',<.>/?"
"foo`~!@#$%^&*()-_=+{}[]\\|;:',<.>/?": ; preds = %0
ret i32 17
}
; ModuleID = 'float.ll'
@F1 = global float 4.000000e+00 ; <float*> [#uses=0]
@D1 = global double 4.000000e+00 ; <double*> [#uses=0]
; ModuleID = 'fold-fpcast.ll'
define i32 @test1() {
ret i32 1080872141
}
define float @test1002() {
ret float 0x36E1000000000000
}
define i64 @test3() {
ret i64 4614256656431372362
}
define double @test4() {
ret double 2.075076e-322
}
; ModuleID = 'forwardreftest.ll'
%myfn = type float (i32, double, i32, i16)
%myty = type i32
%thisfuncty = type i32 (i32)*
declare void @F(%thisfuncty, %thisfuncty, %thisfuncty)
define i32 @zarro2(i32 %Func) {
Startup:
add i32 0, 10 ; <i32>:0 [#uses=0]
ret i32 0
}
define i32 @test1004(i32) {
call void @F( %thisfuncty @zarro2, %thisfuncty @test1004, %thisfuncty @foozball )
ret i32 0
}
define i32 @foozball(i32) {
ret i32 0
}
; ModuleID = 'globalredefinition.ll'
@A = global i32* @B ; <i32**> [#uses=0]
@B = global i32 7 ; <i32*> [#uses=1]
define void @test12312() {
ret void
}
; ModuleID = 'global_section.ll'
@GlobSec = global i32 4, section "foo", align 16
define void @test1005() section "bar" {
ret void
}
; ModuleID = 'globalvars.ll'
@MyVar = external global i32 ; <i32*> [#uses=1]
@MyIntList = external global { \2*, i32 } ; <{ \2*, i32 }*> [#uses=1]
external global i32 ; <i32*>:0 [#uses=0]
@AConst = constant i32 123 ; <i32*> [#uses=0]
@AString = constant [4 x i8] c"test" ; <[4 x i8]*> [#uses=0]
@ZeroInit = global { [100 x i32], [40 x float] } zeroinitializer ; <{ [100 x i32], [40 x float] }*> [#uses=0]
define i32 @foo10015(i32 %blah) {
store i32 5, i32* @MyVar
%idx = getelementptr { \2*, i32 }* @MyIntList, i64 0, i32 1 ; <i32*> [#uses=1]
store i32 12, i32* %idx
ret i32 %blah
}
; ModuleID = 'indirectcall2.ll'
define i64 @test1006(i64 %X) {
ret i64 %X
}
define i64 @fib(i64 %n) {
; <label>:0
%T = icmp ult i64 %n, 2 ; <i1> [#uses=1]
br i1 %T, label %BaseCase, label %RecurseCase
RecurseCase: ; preds = %0
%result = call i64 @test1006( i64 %n ) ; <i64> [#uses=0]
br label %BaseCase
BaseCase: ; preds = %RecurseCase, %0
%X = phi i64 [ 1, %0 ], [ 2, %RecurseCase ] ; <i64> [#uses=1]
ret i64 %X
}
; ModuleID = 'indirectcall.ll'
declare i32 @atoi(i8*)
define i64 @fibonacc(i64 %n) {
icmp ult i64 %n, 2 ; <i1>:1 [#uses=1]
br i1 %1, label %BaseCase, label %RecurseCase
BaseCase: ; preds = %0
ret i64 1
RecurseCase: ; preds = %0
%n2 = sub i64 %n, 2 ; <i64> [#uses=1]
%n1 = sub i64 %n, 1 ; <i64> [#uses=1]
%f2 = call i64 @fibonacc( i64 %n2 ) ; <i64> [#uses=1]
%f1 = call i64 @fibonacc( i64 %n1 ) ; <i64> [#uses=1]
%result = add i64 %f2, %f1 ; <i64> [#uses=1]
ret i64 %result
}
define i64 @realmain(i32 %argc, i8** %argv) {
; <label>:0
icmp eq i32 %argc, 2 ; <i1>:1 [#uses=1]
br i1 %1, label %HasArg, label %Continue
HasArg: ; preds = %0
%n1 = add i32 1, 1 ; <i32> [#uses=1]
br label %Continue
Continue: ; preds = %HasArg, %0
%n = phi i32 [ %n1, %HasArg ], [ 1, %0 ] ; <i32> [#uses=1]
%N = sext i32 %n to i64 ; <i64> [#uses=1]
%F = call i64 @fib( i64 %N ) ; <i64> [#uses=1]
ret i64 %F
}
define i64 @trampoline(i64 %n, i64 (i64)* %fibfunc) {
%F = call i64 %fibfunc( i64 %n ) ; <i64> [#uses=1]
ret i64 %F
}
define i32 @main2() {
%Result = call i64 @trampoline( i64 10, i64 (i64)* @fib ) ; <i64> [#uses=1]
%Result.upgrd.1 = trunc i64 %Result to i32 ; <i32> [#uses=1]
ret i32 %Result.upgrd.1
}
; ModuleID = 'inlineasm.ll'
module asm "this is an inline asm block"
module asm "this is another inline asm block"
define i32 @test1007() {
%X = call i32 asm "tricky here $0, $1", "=r,r"( i32 4 ) ; <i32> [#uses=1]
call void asm sideeffect "eieio", ""( )
ret i32 %X
}
; ModuleID = 'instructions.ll'
define i32 @test_extractelement(<4 x i32> %V) {
%R = extractelement <4 x i32> %V, i32 1 ; <i32> [#uses=1]
ret i32 %R
}
define <4 x i32> @test_insertelement(<4 x i32> %V) {
%R = insertelement <4 x i32> %V, i32 0, i32 0 ; <<4 x i32>> [#uses=1]
ret <4 x i32> %R
}
define <4 x i32> @test_shufflevector_u(<4 x i32> %V) {
%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]
ret <4 x i32> %R
}
define <4 x float> @test_shufflevector_f(<4 x float> %V) {
%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]
ret <4 x float> %R
}
; ModuleID = 'intrinsics.ll'
declare i1 @llvm.isunordered.f32(float, float)
declare i1 @llvm.isunordered.f64(double, double)
declare void @llvm.prefetch(i8*, i32, i32)
declare float @llvm.sqrt.f32(float)
declare double @llvm.sqrt.f64(double)
define void @libm() {
fcmp uno float 1.000000e+00, 2.000000e+00 ; <i1>:1 [#uses=0]
fcmp uno double 3.000000e+00, 4.000000e+00 ; <i1>:2 [#uses=0]
call void @llvm.prefetch( i8* null, i32 1, i32 3 )
call float @llvm.sqrt.f32( float 5.000000e+00 ) ; <float>:3 [#uses=0]
call double @llvm.sqrt.f64( double 6.000000e+00 ) ; <double>:4 [#uses=0]
call i8 @llvm.ctpop.i8( i8 10 ) ; <i32>:5 [#uses=1]
call i16 @llvm.ctpop.i16( i16 11 ) ; <i32>:7 [#uses=1]
call i32 @llvm.ctpop.i32( i32 12 ) ; <i32>:9 [#uses=1]
call i64 @llvm.ctpop.i64( i64 13 ) ; <i32>:11 [#uses=1]
call i8 @llvm.ctlz.i8( i8 14 ) ; <i32>:13 [#uses=1]
call i16 @llvm.ctlz.i16( i16 15 ) ; <i32>:15 [#uses=1]
call i32 @llvm.ctlz.i32( i32 16 ) ; <i32>:17 [#uses=1]
call i64 @llvm.ctlz.i64( i64 17 ) ; <i32>:19 [#uses=1]
call i8 @llvm.cttz.i8( i8 18 ) ; <i32>:21 [#uses=1]
call i16 @llvm.cttz.i16( i16 19 ) ; <i32>:23 [#uses=1]
call i32 @llvm.cttz.i32( i32 20 ) ; <i32>:25 [#uses=1]
call i64 @llvm.cttz.i64( i64 21 ) ; <i32>:27 [#uses=1]
ret void
}
declare i8 @llvm.ctpop.i8(i8)
declare i16 @llvm.ctpop.i16(i16)
declare i32 @llvm.ctpop.i32(i32)
declare i64 @llvm.ctpop.i64(i64)
declare i8 @llvm.ctlz.i8(i8)
declare i16 @llvm.ctlz.i16(i16)
declare i32 @llvm.ctlz.i32(i32)
declare i64 @llvm.ctlz.i64(i64)
declare i8 @llvm.cttz.i8(i8)
declare i16 @llvm.cttz.i16(i16)
declare i32 @llvm.cttz.i32(i32)
declare i64 @llvm.cttz.i64(i64)
; ModuleID = 'packed.ll'
@foo1 = external global <4 x float> ; <<4 x float>*> [#uses=2]
@foo102 = external global <2 x i32> ; <<2 x i32>*> [#uses=2]
define void @main3() {
store <4 x float> < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >, <4 x float>* @foo1
store <2 x i32> < i32 4, i32 4 >, <2 x i32>* @foo102
%l1 = load <4 x float>* @foo1 ; <<4 x float>> [#uses=0]
%l2 = load <2 x i32>* @foo102 ; <<2 x i32>> [#uses=0]
ret void
}
; ModuleID = 'properties.ll'
target datalayout = "e-p:32:32"
target triple = "proc-vend-sys"
deplibs = [ "m", "c" ]
; ModuleID = 'prototype.ll'
declare i32 @bar1017(i32 %in)
define i32 @foo1016(i32 %blah) {
%xx = call i32 @bar1017( i32 %blah ) ; <i32> [#uses=1]
ret i32 %xx
}
; ModuleID = 'recursivetype.ll'
%list = type { %list*, i32 }
declare i8* @malloc(i32)
define void @InsertIntoListTail(%list** %L, i32 %Data) {
bb1:
%reg116 = load %list** %L ; <%list*> [#uses=1]
%cast1004 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
%cond1000 = icmp eq %list* %reg116, %cast1004 ; <i1> [#uses=1]
br i1 %cond1000, label %bb3, label %bb2
bb2: ; preds = %bb2, %bb1
%reg117 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ] ; <%list**> [#uses=1]
%cast1010 = bitcast %list** %reg117 to %list*** ; <%list***> [#uses=1]
%reg118 = load %list*** %cast1010 ; <%list**> [#uses=3]
%reg109 = load %list** %reg118 ; <%list*> [#uses=1]
%cast1005 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
%cond1001 = icmp ne %list* %reg109, %cast1005 ; <i1> [#uses=1]
br i1 %cond1001, label %bb2, label %bb3
bb3: ; preds = %bb2, %bb1
%reg119 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ] ; <%list**> [#uses=1]
%cast1006 = bitcast %list** %reg119 to i8** ; <i8**> [#uses=1]
%reg111 = call i8* @malloc( i32 16 ) ; <i8*> [#uses=3]
store i8* %reg111, i8** %cast1006
%reg111.upgrd.1 = ptrtoint i8* %reg111 to i64 ; <i64> [#uses=1]
%reg1002 = add i64 %reg111.upgrd.1, 8 ; <i64> [#uses=1]
%reg1002.upgrd.2 = inttoptr i64 %reg1002 to i8* ; <i8*> [#uses=1]
%cast1008 = bitcast i8* %reg1002.upgrd.2 to i32* ; <i32*> [#uses=1]
store i32 %Data, i32* %cast1008
%cast1003 = inttoptr i64 0 to i64* ; <i64*> [#uses=1]
%cast1009 = bitcast i8* %reg111 to i64** ; <i64**> [#uses=1]
store i64* %cast1003, i64** %cast1009
ret void
}
define %list* @FindData(%list* %L, i32 %Data) {
bb1:
br label %bb2
bb2: ; preds = %bb6, %bb1
%reg115 = phi %list* [ %reg116, %bb6 ], [ %L, %bb1 ] ; <%list*> [#uses=4]
%cast1014 = inttoptr i64 0 to %list* ; <%list*> [#uses=1]
%cond1011 = icmp ne %list* %reg115, %cast1014 ; <i1> [#uses=1]
br i1 %cond1011, label %bb4, label %bb3
bb3: ; preds = %bb2
ret %list* null
bb4: ; preds = %bb2
%idx = getelementptr %list* %reg115, i64 0, i32 1 ; <i32*> [#uses=1]
%reg111 = load i32* %idx ; <i32> [#uses=1]
%cond1013 = icmp ne i32 %reg111, %Data ; <i1> [#uses=1]
br i1 %cond1013, label %bb6, label %bb5
bb5: ; preds = %bb4
ret %list* %reg115
bb6: ; preds = %bb4
%idx2 = getelementptr %list* %reg115, i64 0, i32 0 ; <%list**> [#uses=1]
%reg116 = load %list** %idx2 ; <%list*> [#uses=1]
br label %bb2
}
; ModuleID = 'simplecalltest.ll'
%FunTy = type i32 (i32)
define void @invoke1019(%FunTy* %x) {
%foo = call i32 %x( i32 123 ) ; <i32> [#uses=0]
ret void
}
define i32 @main4(i32 %argc, i8** %argv, i8** %envp) {
%retval = call i32 @test1008( i32 %argc ) ; <i32> [#uses=2]
%two = add i32 %retval, %retval ; <i32> [#uses=1]
%retval2 = call i32 @test1008( i32 %argc ) ; <i32> [#uses=1]
%two2 = add i32 %two, %retval2 ; <i32> [#uses=1]
call void @invoke1019( %FunTy* @test1008 )
ret i32 %two2
}
define i32 @test1008(i32 %i0) {
ret i32 %i0
}
; ModuleID = 'smallest.ll'
; ModuleID = 'small.ll'
%x = type i32
define i32 @foo1020(i32 %in) {
label:
ret i32 2
}
; ModuleID = 'testalloca.ll'
%inners = type { float, { i8 } }
%struct = type { i32, %inners, i64 }
define i32 @testfunction(i32 %i0, i32 %j0) {
alloca i8, i32 5 ; <i8*>:1 [#uses=0]
%ptr = alloca i32 ; <i32*> [#uses=2]
store i32 3, i32* %ptr
%val = load i32* %ptr ; <i32> [#uses=0]
%sptr = alloca %struct ; <%struct*> [#uses=2]
%nsptr = getelementptr %struct* %sptr, i64 0, i32 1 ; <%inners*> [#uses=1]
%ubsptr = getelementptr %inners* %nsptr, i64 0, i32 1 ; <{ i8 }*> [#uses=1]
%idx = getelementptr { i8 }* %ubsptr, i64 0, i32 0 ; <i8*> [#uses=1]
store i8 4, i8* %idx
%fptr = getelementptr %struct* %sptr, i64 0, i32 1, i32 0 ; <float*> [#uses=1]
store float 4.000000e+00, float* %fptr
ret i32 3
}
; ModuleID = 'testconstants.ll'
@somestr3 = constant [11 x i8] c"hello world"
@array99 = constant [2 x i32] [ i32 12, i32 52 ]
constant { i32, i32 } { i32 4, i32 3 } ; <{ i32, i32 }*>:0 [#uses=0]
define [2 x i32]* @testfunction99(i32 %i0, i32 %j0) {
ret [2 x i32]* @array
}
define i8* @otherfunc(i32, double) {
%somestr = getelementptr [11 x i8]* @somestr3, i64 0, i64 0 ; <i8*> [#uses=1]
ret i8* %somestr
}
define i8* @yetanotherfunc(i32, double) {
ret i8* null
}
define i32 @negativeUnsigned() {
ret i32 -1
}
define i32 @largeSigned() {
ret i32 -394967296
}
; ModuleID = 'testlogical.ll'
define i32 @simpleAdd(i32 %i0, i32 %j0) {
%t1 = xor i32 %i0, %j0 ; <i32> [#uses=1]
%t2 = or i32 %i0, %j0 ; <i32> [#uses=1]
%t3 = and i32 %t1, %t2 ; <i32> [#uses=1]
ret i32 %t3
}
; ModuleID = 'testmemory.ll'
%complexty = type { i32, { [4 x i8*], float }, double }
%struct = type { i32, { float, { i8 } }, i64 }
define i32 @main6() {
call i32 @testfunction98( i64 0, i64 1 )
ret i32 0
}
define i32 @testfunction98(i64 %i0, i64 %j0) {
%array0 = malloc [4 x i8] ; <[4 x i8]*> [#uses=2]
%size = add i32 2, 2 ; <i32> [#uses=1]
%array1 = malloc i8, i32 4 ; <i8*> [#uses=1]
%array2 = malloc i8, i32 %size ; <i8*> [#uses=1]
%idx = getelementptr [4 x i8]* %array0, i64 0, i64 2 ; <i8*> [#uses=1]
store i8 123, i8* %idx
free [4 x i8]* %array0
free i8* %array1
free i8* %array2
%aa = alloca %complexty, i32 5 ; <%complexty*> [#uses=1]
%idx2 = getelementptr %complexty* %aa, i64 %i0, i32 1, i32 0, i64 %j0 ; <i8**> [#uses=1]
store i8* null, i8** %idx2
%ptr = alloca i32 ; <i32*> [#uses=2]
store i32 3, i32* %ptr
%val = load i32* %ptr ; <i32> [#uses=0]
%sptr = alloca %struct ; <%struct*> [#uses=1]
%ubsptr = getelementptr %struct* %sptr, i64 0, i32 1, i32 1 ; <{ i8 }*> [#uses=1]
%idx3 = getelementptr { i8 }* %ubsptr, i64 0, i32 0 ; <i8*> [#uses=1]
store i8 4, i8* %idx3
ret i32 3
}
; ModuleID = 'testswitch.ll'
%int = type i32
define i32 @squared(i32 %i0) {
switch i32 %i0, label %Default [
i32 1, label %Case1
i32 2, label %Case2
i32 4, label %Case4
]
Default: ; preds = %0
ret i32 -1
Case1: ; preds = %0
ret i32 1
Case2: ; preds = %0
ret i32 4
Case4: ; preds = %0
ret i32 16
}
; ModuleID = 'testvarargs.ll'
declare i32 @printf(i8*, ...)
define i32 @testvarar() {
call i32 (i8*, ...)* @printf( i8* null, i32 12, i8 42 ) ; <i32>:1 [#uses=1]
ret i32 %1
}
; ModuleID = 'undefined.ll'
@X2 = global i32 undef ; <i32*> [#uses=0]
declare i32 @atoi(i8*)
define i32 @test1009() {
ret i32 undef
}
define i32 @test1003() {
%X = add i32 undef, 1 ; <i32> [#uses=1]
ret i32 %X
}
; ModuleID = 'unreachable.ll'
declare void @bar()
define i32 @foo1021() {
unreachable
}
define double @xyz() {
call void @bar( )
unreachable
}
; ModuleID = 'varargs.ll'
declare void @llvm.va_start(i8* %ap)
declare void @llvm.va_copy(i8* %aq, i8* %ap)
declare void @llvm.va_end(i8* %ap)
define i32 @test1010(i32 %X, ...) {
%ap = alloca i8* ; <i8**> [#uses=4]
%va.upgrd.1 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_start( i8* %va.upgrd.1 )
%tmp = va_arg i8** %ap, i32 ; <i32> [#uses=1]
%aq = alloca i8* ; <i8**> [#uses=2]
%va0.upgrd.2 = bitcast i8** %aq to i8* ; <i8*> [#uses=1]
%va1.upgrd.3 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_copy( i8* %va0.upgrd.2, i8* %va1.upgrd.3 )
%va.upgrd.4 = bitcast i8** %aq to i8* ; <i8*> [#uses=1]
call void @llvm.va_end( i8* %va.upgrd.4 )
%va.upgrd.5 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_end( i8* %va.upgrd.5 )
ret i32 %tmp
}
; ModuleID = 'varargs_new.ll'
declare void @llvm.va_start(i8*)
declare void @llvm.va_copy(i8*, i8*)
declare void @llvm.va_end(i8*)
define i32 @test1011(i32 %X, ...) {
%ap = alloca i8* ; <i8**> [#uses=4]
%aq = alloca i8* ; <i8**> [#uses=2]
%va.upgrd.1 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_start( i8* %va.upgrd.1 )
%tmp = va_arg i8** %ap, i32 ; <i32> [#uses=1]
%apv = load i8** %ap ; <i8*> [#uses=1]
%va0.upgrd.2 = bitcast i8** %aq to i8* ; <i8*> [#uses=1]
%va1.upgrd.3 = bitcast i8* %apv to i8* ; <i8*> [#uses=1]
call void @llvm.va_copy( i8* %va0.upgrd.2, i8* %va1.upgrd.3 )
%va.upgrd.4 = bitcast i8** %aq to i8* ; <i8*> [#uses=1]
call void @llvm.va_end( i8* %va.upgrd.4 )
%va.upgrd.5 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
call void @llvm.va_end( i8* %va.upgrd.5 )
ret i32 %tmp
}
; ModuleID = 'weirdnames.ll'
"&^ " = type { i32 }
@"%.*+ foo" = global "&^ " { i32 5 } ; <"&^ "*> [#uses=0]
@"0" = global float 0.000000e+00 ; <float*> [#uses=0]

View File

@ -201,12 +201,12 @@ define <4 x i32> @andi_v4i32_4(<4 x i32> %in) {
ret <4 x i32> %tmp2
}
define i32 @andi_u32(i32 zeroext %in) zeroext {
define zeroext i32 @andi_u32(i32 zeroext %in) {
%tmp37 = and i32 %in, 37
ret i32 %tmp37
}
define i32 @andi_i32(i32 signext %in) signext {
define signext i32 @andi_i32(i32 signext %in) {
%tmp38 = and i32 %in, 37
ret i32 %tmp38
}
@ -241,12 +241,12 @@ define <8 x i16> @andhi_v8i16_4(<8 x i16> %in) {
ret <8 x i16> %tmp2
}
define i16 @andhi_u16(i16 zeroext %in) zeroext {
define zeroext i16 @andhi_u16(i16 zeroext %in) {
%tmp37 = and i16 %in, 37 ; <i16> [#uses=1]
ret i16 %tmp37
}
define i16 @andhi_i16(i16 signext %in) signext {
define signext i16 @andhi_i16(i16 signext %in) {
%tmp38 = and i16 %in, 37 ; <i16> [#uses=1]
ret i16 %tmp38
}
@ -260,13 +260,13 @@ define <16 x i8> @and_v16i8(<16 x i8> %in) {
ret <16 x i8> %tmp2
}
define i8 @and_u8(i8 zeroext %in) zeroext {
define zeroext i8 @and_u8(i8 zeroext %in) {
; ANDBI generated:
%tmp37 = and i8 %in, 37
ret i8 %tmp37
}
define i8 @and_sext8(i8 signext %in) signext {
define signext i8 @and_sext8(i8 signext %in) {
; ANDBI generated
%tmp38 = and i8 %in, 37
ret i8 %tmp38

View File

@ -79,7 +79,7 @@ define i32 @equiv_i32_5(i32 %arg1, i32 %arg2) {
ret i32 %C
}
define i16 @equiv_i16_1(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @equiv_i16_1(i16 signext %arg1, i16 signext %arg2) {
%A = and i16 %arg1, %arg2 ; <i16> [#uses=1]
%B = or i16 %arg1, %arg2 ; <i16> [#uses=1]
%Bnot = xor i16 %B, -1 ; <i16> [#uses=1]
@ -87,7 +87,7 @@ define i16 @equiv_i16_1(i16 signext %arg1, i16 signext %arg2) signext {
ret i16 %C
}
define i16 @equiv_i16_2(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @equiv_i16_2(i16 signext %arg1, i16 signext %arg2) {
%B = or i16 %arg1, %arg2 ; <i16> [#uses=1]
%Bnot = xor i16 %B, -1 ; <i16> [#uses=1]
%A = and i16 %arg1, %arg2 ; <i16> [#uses=1]
@ -95,7 +95,7 @@ define i16 @equiv_i16_2(i16 signext %arg1, i16 signext %arg2) signext {
ret i16 %C
}
define i16 @equiv_i16_3(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @equiv_i16_3(i16 signext %arg1, i16 signext %arg2) {
%B = or i16 %arg1, %arg2 ; <i16> [#uses=1]
%A = and i16 %arg1, %arg2 ; <i16> [#uses=1]
%Bnot = xor i16 %B, -1 ; <i16> [#uses=1]
@ -103,7 +103,7 @@ define i16 @equiv_i16_3(i16 signext %arg1, i16 signext %arg2) signext {
ret i16 %C
}
define i8 @equiv_i8_1(i8 signext %arg1, i8 signext %arg2) signext {
define signext i8 @equiv_i8_1(i8 signext %arg1, i8 signext %arg2) {
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]
@ -111,7 +111,7 @@ define i8 @equiv_i8_1(i8 signext %arg1, i8 signext %arg2) signext {
ret i8 %C
}
define i8 @equiv_i8_2(i8 signext %arg1, i8 signext %arg2) signext {
define signext i8 @equiv_i8_2(i8 signext %arg1, i8 signext %arg2) {
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
@ -119,7 +119,7 @@ define i8 @equiv_i8_2(i8 signext %arg1, i8 signext %arg2) signext {
ret i8 %C
}
define i8 @equiv_i8_3(i8 signext %arg1, i8 signext %arg2) signext {
define signext i8 @equiv_i8_3(i8 signext %arg1, i8 signext %arg2) {
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]
@ -127,7 +127,7 @@ define i8 @equiv_i8_3(i8 signext %arg1, i8 signext %arg2) signext {
ret i8 %C
}
define i8 @equiv_u8_1(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
define zeroext i8 @equiv_u8_1(i8 zeroext %arg1, i8 zeroext %arg2) {
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]
@ -135,7 +135,7 @@ define i8 @equiv_u8_1(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
ret i8 %C
}
define i8 @equiv_u8_2(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
define zeroext i8 @equiv_u8_2(i8 zeroext %arg1, i8 zeroext %arg2) {
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
@ -143,7 +143,7 @@ define i8 @equiv_u8_2(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
ret i8 %C
}
define i8 @equiv_u8_3(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
define zeroext i8 @equiv_u8_3(i8 zeroext %arg1, i8 zeroext %arg2) {
%B = or i8 %arg1, %arg2 ; <i8> [#uses=1]
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%Bnot = xor i8 %B, -1 ; <i8> [#uses=1]

View File

@ -1,14 +1,14 @@
; RUN: llc < %s -march=cellspu
declare {i16, i1} @llvm.smul.with.overflow.i16(i16 %a, i16 %b)
define i1 @a(i16 %x) zeroext nounwind {
define zeroext i1 @a(i16 %x) nounwind {
%res = call {i16, i1} @llvm.smul.with.overflow.i16(i16 %x, i16 3)
%obil = extractvalue {i16, i1} %res, 1
ret i1 %obil
}
declare {i16, i1} @llvm.umul.with.overflow.i16(i16 %a, i16 %b)
define i1 @b(i16 %x) zeroext nounwind {
define zeroext i1 @b(i16 %x) nounwind {
%res = call {i16, i1} @llvm.umul.with.overflow.i16(i16 %x, i16 3)
%obil = extractvalue {i16, i1} %res, 1
ret i1 %obil

View File

@ -60,49 +60,49 @@ define i32 @nand_i32_2(i32 %arg1, i32 %arg2) {
ret i32 %B
}
define i16 @nand_i16_1(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @nand_i16_1(i16 signext %arg1, i16 signext %arg2) {
%A = and i16 %arg2, %arg1 ; <i16> [#uses=1]
%B = xor i16 %A, -1 ; <i16> [#uses=1]
ret i16 %B
}
define i16 @nand_i16_2(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @nand_i16_2(i16 signext %arg1, i16 signext %arg2) {
%A = and i16 %arg1, %arg2 ; <i16> [#uses=1]
%B = xor i16 %A, -1 ; <i16> [#uses=1]
ret i16 %B
}
define i16 @nand_i16u_1(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
define zeroext i16 @nand_i16u_1(i16 zeroext %arg1, i16 zeroext %arg2) {
%A = and i16 %arg2, %arg1 ; <i16> [#uses=1]
%B = xor i16 %A, -1 ; <i16> [#uses=1]
ret i16 %B
}
define i16 @nand_i16u_2(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
define zeroext i16 @nand_i16u_2(i16 zeroext %arg1, i16 zeroext %arg2) {
%A = and i16 %arg1, %arg2 ; <i16> [#uses=1]
%B = xor i16 %A, -1 ; <i16> [#uses=1]
ret i16 %B
}
define i8 @nand_i8u_1(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
define zeroext i8 @nand_i8u_1(i8 zeroext %arg1, i8 zeroext %arg2) {
%A = and i8 %arg2, %arg1 ; <i8> [#uses=1]
%B = xor i8 %A, -1 ; <i8> [#uses=1]
ret i8 %B
}
define i8 @nand_i8u_2(i8 zeroext %arg1, i8 zeroext %arg2) zeroext {
define zeroext i8 @nand_i8u_2(i8 zeroext %arg1, i8 zeroext %arg2) {
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%B = xor i8 %A, -1 ; <i8> [#uses=1]
ret i8 %B
}
define i8 @nand_i8_1(i8 signext %arg1, i8 signext %arg2) signext {
define signext i8 @nand_i8_1(i8 signext %arg1, i8 signext %arg2) {
%A = and i8 %arg2, %arg1 ; <i8> [#uses=1]
%B = xor i8 %A, -1 ; <i8> [#uses=1]
ret i8 %B
}
define i8 @nand_i8_2(i8 signext %arg1, i8 signext %arg2) signext {
define signext i8 @nand_i8_2(i8 signext %arg1, i8 signext %arg2) {
%A = and i8 %arg1, %arg2 ; <i8> [#uses=1]
%B = xor i8 %A, -1 ; <i8> [#uses=1]
ret i8 %B

View File

@ -200,12 +200,12 @@ define <4 x i32> @ori_v4i32_4(<4 x i32> %in) {
ret <4 x i32> %tmp2
}
define i32 @ori_u32(i32 zeroext %in) zeroext {
define zeroext i32 @ori_u32(i32 zeroext %in) {
%tmp37 = or i32 %in, 37 ; <i32> [#uses=1]
ret i32 %tmp37
}
define i32 @ori_i32(i32 signext %in) signext {
define signext i32 @ori_i32(i32 signext %in) {
%tmp38 = or i32 %in, 37 ; <i32> [#uses=1]
ret i32 %tmp38
}
@ -235,12 +235,12 @@ define <8 x i16> @orhi_v8i16_4(<8 x i16> %in) {
ret <8 x i16> %tmp2
}
define i16 @orhi_u16(i16 zeroext %in) zeroext {
define zeroext i16 @orhi_u16(i16 zeroext %in) {
%tmp37 = or i16 %in, 37 ; <i16> [#uses=1]
ret i16 %tmp37
}
define i16 @orhi_i16(i16 signext %in) signext {
define signext i16 @orhi_i16(i16 signext %in) {
%tmp38 = or i16 %in, 37 ; <i16> [#uses=1]
ret i16 %tmp38
}
@ -253,12 +253,12 @@ define <16 x i8> @orbi_v16i8(<16 x i8> %in) {
ret <16 x i8> %tmp2
}
define i8 @orbi_u8(i8 zeroext %in) zeroext {
define zeroext i8 @orbi_u8(i8 zeroext %in) {
%tmp37 = or i8 %in, 37 ; <i8> [#uses=1]
ret i8 %tmp37
}
define i8 @orbi_i8(i8 signext %in) signext {
define signext i8 @orbi_i8(i8 signext %in) {
%tmp38 = or i8 %in, 37 ; <i8> [#uses=1]
ret i8 %tmp38
}

View File

@ -33,22 +33,22 @@ define i16 @shlh_i16_2(i16 %arg1, i16 %arg2) {
ret i16 %A
}
define i16 @shlh_i16_3(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @shlh_i16_3(i16 signext %arg1, i16 signext %arg2) {
%A = shl i16 %arg1, %arg2
ret i16 %A
}
define i16 @shlh_i16_4(i16 signext %arg1, i16 signext %arg2) signext {
define signext i16 @shlh_i16_4(i16 signext %arg1, i16 signext %arg2) {
%A = shl i16 %arg2, %arg1
ret i16 %A
}
define i16 @shlh_i16_5(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
define zeroext i16 @shlh_i16_5(i16 zeroext %arg1, i16 zeroext %arg2) {
%A = shl i16 %arg1, %arg2
ret i16 %A
}
define i16 @shlh_i16_6(i16 zeroext %arg1, i16 zeroext %arg2) zeroext {
define zeroext i16 @shlh_i16_6(i16 zeroext %arg1, i16 zeroext %arg2) {
%A = shl i16 %arg2, %arg1
ret i16 %A
}
@ -76,46 +76,46 @@ define i16 @shlhi_i16_4(i16 %arg1) {
ret i16 %A
}
define i16 @shlhi_i16_5(i16 signext %arg1) signext {
define signext i16 @shlhi_i16_5(i16 signext %arg1) {
%A = shl i16 %arg1, 12
ret i16 %A
}
; Should not generate anything other than the return, arg1 << 0 = arg1
define i16 @shlhi_i16_6(i16 signext %arg1) signext {
define signext i16 @shlhi_i16_6(i16 signext %arg1) {
%A = shl i16 %arg1, 0
ret i16 %A
}
define i16 @shlhi_i16_7(i16 signext %arg1) signext {
define signext i16 @shlhi_i16_7(i16 signext %arg1) {
%A = shl i16 16383, %arg1
ret i16 %A
}
; Should generate 0, 0 << arg1 = 0
define i16 @shlhi_i16_8(i16 signext %arg1) signext {
define signext i16 @shlhi_i16_8(i16 signext %arg1) {
%A = shl i16 0, %arg1
ret i16 %A
}
define i16 @shlhi_i16_9(i16 zeroext %arg1) zeroext {
define zeroext i16 @shlhi_i16_9(i16 zeroext %arg1) {
%A = shl i16 %arg1, 12
ret i16 %A
}
; Should not generate anything other than the return, arg1 << 0 = arg1
define i16 @shlhi_i16_10(i16 zeroext %arg1) zeroext {
define zeroext i16 @shlhi_i16_10(i16 zeroext %arg1) {
%A = shl i16 %arg1, 0
ret i16 %A
}
define i16 @shlhi_i16_11(i16 zeroext %arg1) zeroext {
define zeroext i16 @shlhi_i16_11(i16 zeroext %arg1) {
%A = shl i16 16383, %arg1
ret i16 %A
}
; Should generate 0, 0 << arg1 = 0
define i16 @shlhi_i16_12(i16 zeroext %arg1) zeroext {
define zeroext i16 @shlhi_i16_12(i16 zeroext %arg1) {
%A = shl i16 0, %arg1
ret i16 %A
}
@ -133,22 +133,22 @@ define i32 @shl_i32_2(i32 %arg1, i32 %arg2) {
ret i32 %A
}
define i32 @shl_i32_3(i32 signext %arg1, i32 signext %arg2) signext {
define signext i32 @shl_i32_3(i32 signext %arg1, i32 signext %arg2) {
%A = shl i32 %arg1, %arg2
ret i32 %A
}
define i32 @shl_i32_4(i32 signext %arg1, i32 signext %arg2) signext {
define signext i32 @shl_i32_4(i32 signext %arg1, i32 signext %arg2) {
%A = shl i32 %arg2, %arg1
ret i32 %A
}
define i32 @shl_i32_5(i32 zeroext %arg1, i32 zeroext %arg2) zeroext {
define zeroext i32 @shl_i32_5(i32 zeroext %arg1, i32 zeroext %arg2) {
%A = shl i32 %arg1, %arg2
ret i32 %A
}
define i32 @shl_i32_6(i32 zeroext %arg1, i32 zeroext %arg2) zeroext {
define zeroext i32 @shl_i32_6(i32 zeroext %arg1, i32 zeroext %arg2) {
%A = shl i32 %arg2, %arg1
ret i32 %A
}
@ -176,46 +176,46 @@ define i32 @shli_i32_4(i32 %arg1) {
ret i32 %A
}
define i32 @shli_i32_5(i32 signext %arg1) signext {
define signext i32 @shli_i32_5(i32 signext %arg1) {
%A = shl i32 %arg1, 12
ret i32 %A
}
; Should not generate anything other than the return, arg1 << 0 = arg1
define i32 @shli_i32_6(i32 signext %arg1) signext {
define signext i32 @shli_i32_6(i32 signext %arg1) {
%A = shl i32 %arg1, 0
ret i32 %A
}
define i32 @shli_i32_7(i32 signext %arg1) signext {
define signext i32 @shli_i32_7(i32 signext %arg1) {
%A = shl i32 16383, %arg1
ret i32 %A
}
; Should generate 0, 0 << arg1 = 0
define i32 @shli_i32_8(i32 signext %arg1) signext {
define signext i32 @shli_i32_8(i32 signext %arg1) {
%A = shl i32 0, %arg1
ret i32 %A
}
define i32 @shli_i32_9(i32 zeroext %arg1) zeroext {
define zeroext i32 @shli_i32_9(i32 zeroext %arg1) {
%A = shl i32 %arg1, 12
ret i32 %A
}
; Should not generate anything other than the return, arg1 << 0 = arg1
define i32 @shli_i32_10(i32 zeroext %arg1) zeroext {
define zeroext i32 @shli_i32_10(i32 zeroext %arg1) {
%A = shl i32 %arg1, 0
ret i32 %A
}
define i32 @shli_i32_11(i32 zeroext %arg1) zeroext {
define zeroext i32 @shli_i32_11(i32 zeroext %arg1) {
%A = shl i32 16383, %arg1
ret i32 %A
}
; Should generate 0, 0 << arg1 = 0
define i32 @shli_i32_12(i32 zeroext %arg1) zeroext {
define zeroext i32 @shli_i32_12(i32 zeroext %arg1) {
%A = shl i32 0, %arg1
ret i32 %A
}

View File

@ -47,19 +47,19 @@ target triple = "spu"
; struct hackstate state = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
@state = global %struct.hackstate zeroinitializer, align 16
define i8 @get_hackstate_c1() zeroext nounwind {
define zeroext i8 @get_hackstate_c1() nounwind {
entry:
%tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 0), align 16
ret i8 %tmp2
}
define i8 @get_hackstate_c2() zeroext nounwind {
define zeroext i8 @get_hackstate_c2() nounwind {
entry:
%tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 1), align 16
ret i8 %tmp2
}
define i8 @get_hackstate_c3() zeroext nounwind {
define zeroext i8 @get_hackstate_c3() nounwind {
entry:
%tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 2), align 16
ret i8 %tmp2
@ -71,19 +71,19 @@ entry:
ret i32 %tmp2
}
define i16 @get_hackstate_s1() signext nounwind {
define signext i16 @get_hackstate_s1() nounwind {
entry:
%tmp2 = load i16* getelementptr (%struct.hackstate* @state, i32 0, i32 4), align 16
ret i16 %tmp2
}
define i8 @get_hackstate_c6() zeroext nounwind {
define zeroext i8 @get_hackstate_c6() nounwind {
entry:
%tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 8), align 16
ret i8 %tmp2
}
define i8 @get_hackstate_c7() zeroext nounwind {
define zeroext i8 @get_hackstate_c7() nounwind {
entry:
%tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 9), align 16
ret i8 %tmp2

View File

@ -1,28 +0,0 @@
; RUN: llc < %s
define i32 @main() {
bb0:
%reg109 = malloc i32, i32 100 ; <i32*> [#uses=2]
br label %bb2
bb2: ; preds = %bb2, %bb0
%cann-indvar1 = phi i32 [ 0, %bb0 ], [ %add1-indvar1, %bb2 ] ; <i32> [#uses=2]
%reg127 = mul i32 %cann-indvar1, 2 ; <i32> [#uses=1]
%add1-indvar1 = add i32 %cann-indvar1, 1 ; <i32> [#uses=1]
store i32 999, i32* %reg109
%cond1015 = icmp sle i32 1, 99 ; <i1> [#uses=1]
%reg128 = add i32 %reg127, 2 ; <i32> [#uses=0]
br i1 %cond1015, label %bb2, label %bb4
bb4: ; preds = %bb4, %bb2
%cann-indvar = phi i32 [ %add1-indvar, %bb4 ], [ 0, %bb2 ] ; <i32> [#uses=1]
%add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=2]
store i32 333, i32* %reg109
%reg131 = add i32 %add1-indvar, 3 ; <i32> [#uses=1]
%cond1017 = icmp ule i32 %reg131, 99 ; <i1> [#uses=1]
br i1 %cond1017, label %bb4, label %bb5
bb5: ; preds = %bb4
ret i32 0
}

View File

@ -5,13 +5,13 @@
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"
target triple = "mipsallegrexel-unknown-psp-elf"
define i8 @A(i8 %e.0, i8 signext %sum) signext nounwind {
define signext i8 @A(i8 %e.0, i8 signext %sum) nounwind {
entry:
add i8 %sum, %e.0 ; <i8>:0 [#uses=1]
ret i8 %0
}
define i16 @B(i16 %e.0, i16 signext %sum) signext nounwind {
define signext i16 @B(i16 %e.0, i16 signext %sum) nounwind {
entry:
add i16 %sum, %e.0 ; <i16>:0 [#uses=1]
ret i16 %0

View File

@ -4,7 +4,7 @@ target triple = "powerpc-apple-darwin8.8.0"
; RUN: llc < %s -march=ppc32 | grep {rlwinm r3, r3, 23, 30, 30}
; PR1473
define i8 @foo(i16 zeroext %a) zeroext {
define zeroext i8 @foo(i16 zeroext %a) {
%tmp2 = lshr i16 %a, 10 ; <i16> [#uses=1]
%tmp23 = trunc i16 %tmp2 to i8 ; <i8> [#uses=1]
%tmp4 = shl i8 %tmp23, 1 ; <i8> [#uses=1]

View File

@ -18,7 +18,7 @@ define void @"-[PFTPersistentSymbols saveSymbolWithName:address:path:lineNumber:
entry:
br i1 false, label %bb12, label %bb21
bb12: ; preds = %entry
%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 ; <i8> [#uses=0]
%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 ; <i8> [#uses=0]
br i1 false, label %bb25, label %bb21
bb21: ; preds = %bb12, %entry
%tmp24 = or i64 %flags, 4 ; <i64> [#uses=1]

View File

@ -2,7 +2,7 @@
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"
target triple = "powerpc-apple-darwin9"
define i16 @t(i16* %dct) signext nounwind {
define signext i16 @t(i16* %dct) nounwind {
entry:
load i16* null, align 2 ; <i16>:0 [#uses=2]
lshr i16 %0, 11 ; <i16>:1 [#uses=0]

View File

@ -9,7 +9,7 @@ define void @test(i8* %P) {
ret void
}
define i16 @test2(i16 zeroext %crc) zeroext {
define zeroext i16 @test2(i16 zeroext %crc) {
; No and's should be needed for the i16s here.
%tmp.1 = lshr i16 %crc, 1
%tmp.7 = xor i16 %tmp.1, 40961

View File

@ -9,7 +9,7 @@ define i32 @test1(i32 %mode.0.i.0) {
ret i32 %tmp.81
}
define i16 @test2(i16 signext %X, i16 signext %x) signext {
define signext i16 @test2(i16 signext %X, i16 signext %x) {
%tmp = sext i16 %X to i32
%tmp1 = sext i16 %x to i32
%tmp2 = add i32 %tmp, %tmp1
@ -20,7 +20,7 @@ define i16 @test2(i16 signext %X, i16 signext %x) signext {
ret i16 %retval
}
define i16 @test3(i32 zeroext %X) signext {
define signext i16 @test3(i32 zeroext %X) {
%tmp1 = lshr i32 %X, 16
%tmp2 = trunc i32 %tmp1 to i16
ret i16 %tmp2

View File

@ -1,7 +1,7 @@
; Test various forms of calls.
; RUN: llc < %s -march=ppc32 | \
; RUN: grep {bl } | count 2
; RUN: grep {bl } | count 1
; RUN: llc < %s -march=ppc32 | \
; RUN: grep {bctrl} | count 1
; RUN: llc < %s -march=ppc32 | \
@ -14,11 +14,6 @@ define void @test_direct() {
ret void
}
define void @test_extsym(i8* %P) {
free i8* %P
ret void
}
define void @test_indirect(void ()* %fp) {
call void %fp( )
ret void

View File

@ -1,14 +1,14 @@
; RUN: llc < %s -march=ppc32
declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
define i1 @a(i32 %x) zeroext nounwind {
define zeroext i1 @a(i32 %x) nounwind {
%res = call {i32, i1} @llvm.umul.with.overflow.i32(i32 %x, i32 3)
%obil = extractvalue {i32, i1} %res, 1
ret i1 %obil
}
declare {i32, i1} @llvm.smul.with.overflow.i32(i32 %a, i32 %b)
define i1 @b(i32 %x) zeroext nounwind {
define zeroext i1 @b(i32 %x) nounwind {
%res = call {i32, i1} @llvm.smul.with.overflow.i32(i32 %x, i32 3)
%obil = extractvalue {i32, i1} %res, 1
ret i1 %obil

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=ppc32 | not grep {extsh\\|rlwinm}
declare i16 @foo() signext
declare signext i16 @foo()
define i32 @test1(i16 signext %X) {
%Y = sext i16 %X to i32 ;; dead
@ -14,12 +14,12 @@ define i32 @test2(i16 zeroext %X) {
}
define void @test3() {
%tmp.0 = call i16 @foo() signext ;; no extsh!
%tmp.0 = call signext i16 @foo() ;; no extsh!
%tmp.1 = icmp slt i16 %tmp.0, 1234
br i1 %tmp.1, label %then, label %UnifiedReturnBlock
then:
call i32 @test1(i16 0 signext)
call i32 @test1(i16 signext 0)
ret void
UnifiedReturnBlock:
ret void
@ -46,7 +46,7 @@ define i32 @test6(i32* %P) {
ret i32 %tmp.2
}
define i16 @test7(float %a) zeroext {
define zeroext i16 @test7(float %a) {
%tmp.1 = fptoui float %a to i16
ret i16 %tmp.1
}

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=systemz | FileCheck %s
define i32 @foo1(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo1(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo1:
; CHECK: a %r2, 4(%r1,%r3)
entry:
@ -11,7 +11,7 @@ entry:
ret i32 %d
}
define i32 @foo2(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo2(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo2:
; CHECK: ay %r2, -4(%r1,%r3)
entry:
@ -22,7 +22,7 @@ entry:
ret i32 %d
}
define i64 @foo3(i64 %a, i64 *%b, i64 %idx) signext {
define signext i64 @foo3(i64 %a, i64 *%b, i64 %idx) {
; CHECK: foo3:
; CHECK: ag %r2, 8(%r1,%r3)
entry:
@ -33,7 +33,7 @@ entry:
ret i64 %d
}
define i32 @foo4(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo4(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo4:
; CHECK: n %r2, 4(%r1,%r3)
entry:
@ -44,7 +44,7 @@ entry:
ret i32 %d
}
define i32 @foo5(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo5(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo5:
; CHECK: ny %r2, -4(%r1,%r3)
entry:
@ -55,7 +55,7 @@ entry:
ret i32 %d
}
define i64 @foo6(i64 %a, i64 *%b, i64 %idx) signext {
define signext i64 @foo6(i64 %a, i64 *%b, i64 %idx) {
; CHECK: foo6:
; CHECK: ng %r2, 8(%r1,%r3)
entry:
@ -66,7 +66,7 @@ entry:
ret i64 %d
}
define i32 @foo7(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo7(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo7:
; CHECK: o %r2, 4(%r1,%r3)
entry:
@ -77,7 +77,7 @@ entry:
ret i32 %d
}
define i32 @foo8(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo8(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo8:
; CHECK: oy %r2, -4(%r1,%r3)
entry:
@ -88,7 +88,7 @@ entry:
ret i32 %d
}
define i64 @foo9(i64 %a, i64 *%b, i64 %idx) signext {
define signext i64 @foo9(i64 %a, i64 *%b, i64 %idx) {
; CHECK: foo9:
; CHECK: og %r2, 8(%r1,%r3)
entry:
@ -99,7 +99,7 @@ entry:
ret i64 %d
}
define i32 @foo10(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo10(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo10:
; CHECK: x %r2, 4(%r1,%r3)
entry:
@ -110,7 +110,7 @@ entry:
ret i32 %d
}
define i32 @foo11(i32 %a, i32 *%b, i64 %idx) signext {
define signext i32 @foo11(i32 %a, i32 *%b, i64 %idx) {
; CHECK: foo11:
; CHECK: xy %r2, -4(%r1,%r3)
entry:
@ -121,7 +121,7 @@ entry:
ret i32 %d
}
define i64 @foo12(i64 %a, i64 *%b, i64 %idx) signext {
define signext i64 @foo12(i64 %a, i64 *%b, i64 %idx) {
; CHECK: foo12:
; CHECK: xg %r2, 8(%r1,%r3)
entry:

View File

@ -16,25 +16,25 @@ entry:
ret i32 %c
}
define i32 @foo3(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo3(i32 %a, i32 %b) {
entry:
%c = add i32 %a, 1
ret i32 %c
}
define i32 @foo4(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo4(i32 %a, i32 %b) {
entry:
%c = add i32 %a, 131072
ret i32 %c
}
define i32 @foo5(i32 %a, i32 %b) signext {
define signext i32 @foo5(i32 %a, i32 %b) {
entry:
%c = add i32 %a, 1
ret i32 %c
}
define i32 @foo6(i32 %a, i32 %b) signext {
define signext i32 @foo6(i32 %a, i32 %b) {
entry:
%c = add i32 %a, 131072
ret i32 %c

View File

@ -8,13 +8,13 @@ entry:
ret i32 %c
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
%c = add i32 %a, %b
ret i32 %c
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
%c = add i32 %a, %b
ret i32 %c

View File

@ -12,25 +12,25 @@ entry:
ret i32 %c
}
define i32 @foo3(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo3(i32 %a, i32 %b) {
entry:
%c = and i32 %a, 1
ret i32 %c
}
define i32 @foo4(i32 %a, i32 %b) signext {
define signext i32 @foo4(i32 %a, i32 %b) {
entry:
%c = and i32 %a, 131072
ret i32 %c
}
define i32 @foo5(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo5(i32 %a, i32 %b) {
entry:
%c = and i32 %a, 1
ret i32 %c
}
define i32 @foo6(i32 %a, i32 %b) signext {
define signext i32 @foo6(i32 %a, i32 %b) {
entry:
%c = and i32 %a, 131072
ret i32 %c

View File

@ -7,13 +7,13 @@ entry:
ret i32 %c
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
%c = and i32 %a, %b
ret i32 %c
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
%c = and i32 %a, %b
ret i32 %c

View File

@ -8,12 +8,12 @@ entry:
ret i32 %b
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
ret i32 %b
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
ret i32 %b
}

View File

@ -30,12 +30,12 @@ entry:
ret i32 4294967295
}
define i32 @foo6() zeroext {
define zeroext i32 @foo6() {
entry:
ret i32 4294967295
}
define i32 @foo7() signext {
define signext i32 @foo7() {
entry:
ret i32 4294967295
}

View File

@ -22,37 +22,37 @@ entry:
ret i32 %c
}
define i32 @foo3(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo3(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 1
ret i32 %c
}
define i32 @foo8(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo8(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 123456
ret i32 %c
}
define i32 @foo4(i32 %a, i32 %b) signext {
define signext i32 @foo4(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 131072
ret i32 %c
}
define i32 @foo5(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo5(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 1
ret i32 %c
}
define i32 @foo6(i32 %a, i32 %b) signext {
define signext i32 @foo6(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 131072
ret i32 %c
}
define i32 @foo9(i32 %a, i32 %b) signext {
define signext i32 @foo9(i32 %a, i32 %b) {
entry:
%c = or i32 %a, 123456
ret i32 %c

View File

@ -9,13 +9,13 @@ entry:
ret i32 %c
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
%c = or i32 %a, %b
ret i32 %c
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
%c = or i32 %a, %b
ret i32 %c

View File

@ -16,25 +16,25 @@ entry:
ret i32 %c
}
define i32 @foo3(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo3(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, 1
ret i32 %c
}
define i32 @foo4(i32 %a, i32 %b) signext {
define signext i32 @foo4(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, 131072
ret i32 %c
}
define i32 @foo5(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo5(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, 1
ret i32 %c
}
define i32 @foo6(i32 %a, i32 %b) signext {
define signext i32 @foo6(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, 131072
ret i32 %c

View File

@ -8,13 +8,13 @@ entry:
ret i32 %c
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, %b
ret i32 %c
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
%c = sub i32 %a, %b
ret i32 %c

View File

@ -20,37 +20,37 @@ entry:
ret i32 %c
}
define i32 @foo3(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo3(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 1
ret i32 %c
}
define i32 @foo8(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo8(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 123456
ret i32 %c
}
define i32 @foo4(i32 %a, i32 %b) signext {
define signext i32 @foo4(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 131072
ret i32 %c
}
define i32 @foo5(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo5(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 1
ret i32 %c
}
define i32 @foo6(i32 %a, i32 %b) signext {
define signext i32 @foo6(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 131072
ret i32 %c
}
define i32 @foo9(i32 %a, i32 %b) signext {
define signext i32 @foo9(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, 123456
ret i32 %c

View File

@ -9,13 +9,13 @@ entry:
ret i32 %c
}
define i32 @foo1(i32 %a, i32 %b) zeroext {
define zeroext i32 @foo1(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, %b
ret i32 %c
}
define i32 @foo2(i32 %a, i32 %b) signext {
define signext i32 @foo2(i32 %a, i32 %b) {
entry:
%c = xor i32 %a, %b
ret i32 %c

View File

@ -5,32 +5,32 @@ target datalayout = "E-p:64:64:64-i8:8:16-i16:16:16-i32:32:32-i64:64:64-f32:32:3
target triple = "s390x-ibm-linux"
define i16 @foo(i16 zeroext %a) zeroext {
define zeroext i16 @foo(i16 zeroext %a) {
%res = tail call i16 @llvm.bswap.i16(i16 %a)
ret i16 %res
}
define i32 @foo2(i32 zeroext %a) zeroext {
define zeroext i32 @foo2(i32 zeroext %a) {
; CHECK: foo2:
; CHECK: lrvr [[R1:%r.]], %r2
%res = tail call i32 @llvm.bswap.i32(i32 %a)
ret i32 %res
}
define i64 @foo3(i64 %a) zeroext {
define zeroext i64 @foo3(i64 %a) {
; CHECK: foo3:
; CHECK: lrvgr %r2, %r2
%res = tail call i64 @llvm.bswap.i64(i64 %a)
ret i64 %res
}
define i16 @foo4(i16* %b) zeroext {
define zeroext i16 @foo4(i16* %b) {
%a = load i16* %b
%res = tail call i16 @llvm.bswap.i16(i16 %a)
ret i16 %res
}
define i32 @foo5(i32* %b) zeroext {
define zeroext i32 @foo5(i32* %b) {
; CHECK: foo5:
; CHECK: lrv [[R1:%r.]], 0(%r2)
%a = load i32* %b

View File

@ -1,117 +0,0 @@
; RUN: llc < %s -march=thumb
; RUN: llc < %s -mtriple=thumb-apple-darwin -relocation-model=pic \
; RUN: -mattr=+v6,+vfp2 | not grep {add r., r7, #2 \\* 4}
%struct.__fooAllocator = type opaque
%struct.__fooY = type { %struct.fooXBase, %struct.__fooString*, %struct.__fooU*, %struct.__fooV*, i8** }
%struct.__fooZ = type opaque
%struct.__fooU = type opaque
%struct.__fooString = type opaque
%struct.__fooV = type opaque
%struct.fooXBase = type { i32, [4 x i8] }
%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*)* }
%struct.aa_cache = type { i32, i32, [1 x %struct.aa_method*] }
%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* }
%struct.aa_ivar = type { i8*, i8*, i32 }
%struct.aa_ivar_list = type { i32, [1 x %struct.aa_ivar] }
%struct.aa_method = type { %struct.aa_ss*, i8*, %struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* }
%struct.aa_method_list = type { %struct.aa_method_list*, i32, [1 x %struct.aa_method] }
%struct.aa_object = type { %struct.aa_class* }
%struct.aa_protocol_list = type { %struct.aa_protocol_list*, i32, [1 x %struct.aa_object*] }
%struct.aa_ss = type opaque
@__kfooYTypeID = external global i32 ; <i32*> [#uses=3]
@__fooYClass = external constant %struct.fooXClass ; <%struct.fooXClass*> [#uses=1]
@__fooXClassTableSize = external global i32 ; <i32*> [#uses=1]
@__fooXAaClassTable = external global i32* ; <i32**> [#uses=1]
@s.10319 = external global %struct.aa_ss* ; <%struct.aa_ss**> [#uses=2]
@str15 = external constant [24 x i8] ; <[24 x i8]*> [#uses=1]
define i8 @test(%struct.__fooY* %calendar, double* %atp, i8* %componentDesc, ...) zeroext {
entry:
%args = alloca i8*, align 4 ; <i8**> [#uses=5]
%args4 = bitcast i8** %args to i8* ; <i8*> [#uses=2]
call void @llvm.va_start( i8* %args4 )
%tmp6 = load i32* @__kfooYTypeID ; <i32> [#uses=1]
icmp eq i32 %tmp6, 0 ; <i1>:0 [#uses=1]
br i1 %0, label %cond_true, label %cond_next
cond_true: ; preds = %entry
%tmp7 = call i32 @_fooXRegisterClass( %struct.fooXClass* @__fooYClass ) ; <i32> [#uses=1]
store i32 %tmp7, i32* @__kfooYTypeID
br label %cond_next
cond_next: ; preds = %cond_true, %entry
%tmp8 = load i32* @__kfooYTypeID ; <i32> [#uses=2]
%tmp15 = load i32* @__fooXClassTableSize ; <i32> [#uses=1]
icmp ugt i32 %tmp15, %tmp8 ; <i1>:1 [#uses=1]
br i1 %1, label %cond_next18, label %cond_true58
cond_next18: ; preds = %cond_next
%tmp21 = getelementptr %struct.__fooY* %calendar, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
%tmp22 = load i32* %tmp21 ; <i32> [#uses=2]
%tmp29 = load i32** @__fooXAaClassTable ; <i32*> [#uses=1]
%tmp31 = getelementptr i32* %tmp29, i32 %tmp8 ; <i32*> [#uses=1]
%tmp32 = load i32* %tmp31 ; <i32> [#uses=1]
icmp eq i32 %tmp22, %tmp32 ; <i1>:2 [#uses=1]
%.not = xor i1 %2, true ; <i1> [#uses=1]
icmp ugt i32 %tmp22, 4095 ; <i1>:3 [#uses=1]
%bothcond = and i1 %.not, %3 ; <i1> [#uses=1]
br i1 %bothcond, label %cond_true58, label %bb48
bb48: ; preds = %cond_next18
%tmp78 = call i32 @strlen( i8* %componentDesc ) ; <i32> [#uses=4]
%tmp92 = alloca i32, i32 %tmp78 ; <i32*> [#uses=2]
icmp sgt i32 %tmp78, 0 ; <i1>:4 [#uses=1]
br i1 %4, label %cond_true111, label %bb114
cond_true58: ; preds = %cond_next18, %cond_next
%tmp59 = load %struct.aa_ss** @s.10319 ; <%struct.aa_ss*> [#uses=2]
icmp eq %struct.aa_ss* %tmp59, null ; <i1>:5 [#uses=1]
%tmp6869 = bitcast %struct.__fooY* %calendar to i8* ; <i8*> [#uses=2]
br i1 %5, label %cond_true60, label %cond_next64
cond_true60: ; preds = %cond_true58
%tmp63 = call %struct.aa_ss* @sel_registerName( i8* getelementptr ([24 x i8]* @str15, i32 0, i32 0) ) ; <%struct.aa_ss*> [#uses=2]
store %struct.aa_ss* %tmp63, %struct.aa_ss** @s.10319
%tmp66137 = volatile load i8** %args ; <i8*> [#uses=1]
%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 ; <i8> [#uses=1]
ret i8 %tmp73138
cond_next64: ; preds = %cond_true58
%tmp66 = volatile load i8** %args ; <i8*> [#uses=1]
%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 ; <i8> [#uses=1]
ret i8 %tmp73
cond_true111: ; preds = %cond_true111, %bb48
%idx.2132.0 = phi i32 [ 0, %bb48 ], [ %indvar.next, %cond_true111 ] ; <i32> [#uses=2]
%tmp95 = volatile load i8** %args ; <i8*> [#uses=2]
%tmp97 = getelementptr i8* %tmp95, i32 4 ; <i8*> [#uses=1]
volatile store i8* %tmp97, i8** %args
%tmp9899 = bitcast i8* %tmp95 to i32* ; <i32*> [#uses=1]
%tmp100 = load i32* %tmp9899 ; <i32> [#uses=1]
%tmp104 = getelementptr i32* %tmp92, i32 %idx.2132.0 ; <i32*> [#uses=1]
store i32 %tmp100, i32* %tmp104
%indvar.next = add i32 %idx.2132.0, 1 ; <i32> [#uses=2]
icmp eq i32 %indvar.next, %tmp78 ; <i1>:6 [#uses=1]
br i1 %6, label %bb114, label %cond_true111
bb114: ; preds = %cond_true111, %bb48
call void @llvm.va_end( i8* %args4 )
%tmp122 = call i8 @_fooYCCV( %struct.__fooY* %calendar, double* %atp, i8* %componentDesc, i32* %tmp92, i32 %tmp78 ) zeroext ; <i8> [#uses=1]
ret i8 %tmp122
}
declare i32 @_fooXRegisterClass(%struct.fooXClass*)
declare i8 @_fooYCCV(%struct.__fooY*, double*, i8*, i32*, i32) zeroext
declare %struct.aa_object* @aa_mm(%struct.aa_object*, %struct.aa_ss*, ...)
declare %struct.aa_ss* @sel_registerName(i8*)
declare void @llvm.va_start(i8*)
declare i32 @strlen(i8*)
declare void @llvm.va_end(i8*)

View File

@ -1,33 +0,0 @@
; RUN: llc < %s -mtriple=thumbv6-elf | not grep "subs sp"
; PR4567
define i8* @__gets_chk(i8* %s, i32 %slen) nounwind {
entry:
br i1 undef, label %bb, label %bb1
bb: ; preds = %entry
ret i8* undef
bb1: ; preds = %entry
br i1 undef, label %bb3, label %bb2
bb2: ; preds = %bb1
%0 = alloca i8, i32 undef, align 4 ; <i8*> [#uses=0]
br label %bb4
bb3: ; preds = %bb1
%1 = malloc i8, i32 undef ; <i8*> [#uses=0]
br label %bb4
bb4: ; preds = %bb3, %bb2
br i1 undef, label %bb5, label %bb6
bb5: ; preds = %bb4
%2 = call i8* @gets(i8* %s) nounwind ; <i8*> [#uses=1]
ret i8* %2
bb6: ; preds = %bb4
unreachable
}
declare i8* @gets(i8*) nounwind

View File

@ -7,7 +7,7 @@ define i32 @test0(i8 %A) {
ret i32 %B
}
define i8 @test1(i32 %A) signext {
define signext i8 @test1(i32 %A) {
; CHECK: test1
; CHECK: sxtb.w r0, r0, ror #8
%B = lshr i32 %A, 8
@ -17,7 +17,7 @@ define i8 @test1(i32 %A) signext {
ret i8 %E
}
define i32 @test2(i32 %A, i32 %X) signext {
define signext i32 @test2(i32 %A, i32 %X) {
; CHECK: test2
; CHECK: lsrs r0, r0, #8
; CHECK: sxtab r0, r1, r0

View File

@ -1,13 +1,13 @@
; RUN: llc < %s -march=thumb -mattr=+thumb2,+t2xtpk | FileCheck %s
define i8 @test1(i32 %A.u) zeroext {
define zeroext i8 @test1(i32 %A.u) {
; CHECK: test1
; CHECK: uxtb r0, r0
%B.u = trunc i32 %A.u to i8
ret i8 %B.u
}
define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
define zeroext i32 @test2(i32 %A.u, i32 %B.u) {
; CHECK: test2
; CHECK: uxtab r0, r0, r1
%C.u = trunc i32 %B.u to i8
@ -16,7 +16,7 @@ define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
ret i32 %E.u
}
define i32 @test3(i32 %A.u) zeroext {
define zeroext i32 @test3(i32 %A.u) {
; CHECK: test3
; CHECK: uxth.w r0, r0, ror #8
%B.u = lshr i32 %A.u, 8

View File

@ -7,7 +7,7 @@ declare void @invokee(%struct.S* sret )
define void @invoker(%struct.S* %name.0.0) {
entry:
invoke void @invokee( %struct.S* %name.0.0 sret )
invoke void @invokee( %struct.S* sret %name.0.0 )
to label %return unwind label %return
return: ; preds = %entry, %entry

View File

@ -3,7 +3,7 @@
%struct.XDesc = type <{ i32, %struct.OpaqueXDataStorageType** }>
%struct.OpaqueXDataStorageType = type opaque
declare i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*) signext
declare signext i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*)
declare void @r_raise(i64, i8*, ...)
@ -18,7 +18,7 @@ cond_true109: ; preds = %entry
br i1 false, label %cond_next164, label %cond_true239
cond_next164: ; preds = %cond_true109
%tmp176 = call i16 @GetParamDesc( %struct.XDesc* null, i32 1701999219, i32 1413830740, %struct.XDesc* null ) signext ; <i16> [#uses=0]
%tmp176 = call signext i16 @GetParamDesc( %struct.XDesc* null, i32 1701999219, i32 1413830740, %struct.XDesc* null )
call void (i64, i8*, ...)* @r_raise( i64 0, i8* null )
unreachable

View File

@ -1,454 +0,0 @@
; RUN: llc < %s -asm-verbose | grep invcont131
; PR 1496: tail merge was incorrectly removing this block
; ModuleID = 'report.1.bc'
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"
target triple = "i686-pc-linux-gnu"
%struct.ALLOC = type { %struct.string___XUB, [2 x i8] }
%struct.RETURN = type { i32, i32, i32, i64 }
%struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
%struct.ada__tags__dispatch_table = type { [1 x i8*] }
%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 }
%struct.string___XUB = type { i32, i32 }
%struct.string___XUP = type { i8*, %struct.string___XUB* }
%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* }
%struct.system__secondary_stack__mark_id = type { i8*, i32 }
%struct.wide_string___XUP = type { i16*, %struct.string___XUB* }
@report_E = global i8 0 ; <i8*> [#uses=0]
@report__test_status = internal global i8 1 ; <i8*> [#uses=8]
@report__test_name = internal global [15 x i8] zeroinitializer ; <[15 x i8]*> [#uses=10]
@report__test_name_len = internal global i32 0 ; <i32*> [#uses=15]
@.str = internal constant [12 x i8] c"report.adb\00\00" ; <[12 x i8]*> [#uses=1]
@C.26.599 = internal constant %struct.string___XUB { i32 1, i32 1 } ; <%struct.string___XUB*> [#uses=1]
@.str1 = internal constant [1 x i8] c":" ; <[1 x i8]*> [#uses=1]
@.str2 = internal constant [1 x i8] c" " ; <[1 x i8]*> [#uses=1]
@.str3 = internal constant [1 x i8] c"-" ; <[1 x i8]*> [#uses=1]
@.str5 = internal constant [10 x i8] c"0123456789" ; <[10 x i8]*> [#uses=12]
@C.59.855 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.69.876 = internal constant %struct.string___XUB { i32 1, i32 3 } ; <%struct.string___XUB*> [#uses=1]
@C.70.879 = internal constant %struct.string___XUB { i32 1, i32 6 } ; <%struct.string___XUB*> [#uses=1]
@C.81.900 = internal constant %struct.string___XUB { i32 1, i32 5 } ; <%struct.string___XUB*> [#uses=1]
@.str6 = internal constant [0 x i8] zeroinitializer ; <[0 x i8]*> [#uses=1]
@.str7 = internal constant [3 x i8] c"2.5" ; <[3 x i8]*> [#uses=1]
@.str8 = internal constant [6 x i8] c"ACATS " ; <[6 x i8]*> [#uses=1]
@.str9 = internal constant [5 x i8] c",.,. " ; <[5 x i8]*> [#uses=1]
@.str10 = internal constant [1 x i8] c"." ; <[1 x i8]*> [#uses=1]
@.str11 = internal constant [5 x i8] c"---- " ; <[5 x i8]*> [#uses=1]
@.str12 = internal constant [5 x i8] c" - " ; <[5 x i8]*> [#uses=1]
@.str13 = internal constant [5 x i8] c" * " ; <[5 x i8]*> [#uses=1]
@.str14 = internal constant [5 x i8] c" + " ; <[5 x i8]*> [#uses=1]
@.str15 = internal constant [5 x i8] c" ! " ; <[5 x i8]*> [#uses=1]
@C.209.1380 = internal constant %struct.string___XUB { i32 1, i32 37 } ; <%struct.string___XUB*> [#uses=1]
@.str16 = internal constant [37 x i8] c" PASSED ============================." ; <[37 x i8]*> [#uses=1]
@.str17 = internal constant [5 x i8] c"==== " ; <[5 x i8]*> [#uses=1]
@.str18 = internal constant [37 x i8] c" NOT-APPLICABLE ++++++++++++++++++++." ; <[37 x i8]*> [#uses=1]
@.str19 = internal constant [5 x i8] c"++++ " ; <[5 x i8]*> [#uses=1]
@.str20 = internal constant [37 x i8] c" TENTATIVELY PASSED !!!!!!!!!!!!!!!!." ; <[37 x i8]*> [#uses=1]
@.str21 = internal constant [5 x i8] c"!!!! " ; <[5 x i8]*> [#uses=1]
@.str22 = internal constant [37 x i8] c" SEE '!' COMMENTS FOR SPECIAL NOTES!!" ; <[37 x i8]*> [#uses=1]
@.str23 = internal constant [37 x i8] c" FAILED ****************************." ; <[37 x i8]*> [#uses=1]
@.str24 = internal constant [5 x i8] c"**** " ; <[5 x i8]*> [#uses=1]
@__gnat_others_value = external constant i32 ; <i32*> [#uses=2]
@system__soft_links__abort_undefer = external global void ()* ; <void ()**> [#uses=1]
@C.320.1854 = internal constant %struct.string___XUB { i32 2, i32 6 } ; <%struct.string___XUB*> [#uses=1]
declare void @report__put_msg(i64 %msg.0.0)
declare void @__gnat_rcheck_05(i8*, i32)
declare void @__gnat_rcheck_12(i8*, i32)
declare %struct.ada__text_io__text_afcb* @ada__text_io__standard_output()
declare void @ada__text_io__set_col(%struct.ada__text_io__text_afcb*, i32)
declare void @ada__text_io__put_line(%struct.ada__text_io__text_afcb*, i64)
declare void @report__time_stamp(%struct.string___XUP* sret %agg.result)
declare i64 @ada__calendar__clock()
declare void @ada__calendar__split(%struct.RETURN* sret , i64)
declare void @system__string_ops_concat_5__str_concat_5(%struct.string___XUP* sret , i64, i64, i64, i64, i64)
declare void @system__string_ops_concat_3__str_concat_3(%struct.string___XUP* sret , i64, i64, i64)
declare i8* @system__secondary_stack__ss_allocate(i32)
declare void @report__test(i64 %name.0.0, i64 %descr.0.0)
declare void @system__secondary_stack__ss_mark(%struct.system__secondary_stack__mark_id* sret )
declare i8* @llvm.eh.exception()
declare i32 @llvm.eh.selector(i8*, i8*, ...)
declare i32 @llvm.eh.typeid.for(i8*)
declare i32 @__gnat_eh_personality(...)
declare i32 @_Unwind_Resume(...)
declare void @__gnat_rcheck_07(i8*, i32)
declare void @system__secondary_stack__ss_release(i64)
declare void @report__comment(i64 %descr.0.0)
declare void @report__failed(i64 %descr.0.0)
declare void @report__not_applicable(i64 %descr.0.0)
declare void @report__special_action(i64 %descr.0.0)
define void @report__result() {
entry:
%tmp = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
%A.210 = alloca %struct.string___XUB, align 8 ; <%struct.string___XUB*> [#uses=3]
%tmp5 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
%A.229 = alloca %struct.string___XUB, align 8 ; <%struct.string___XUB*> [#uses=3]
%tmp10 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
%A.248 = alloca %struct.string___XUB, align 8 ; <%struct.string___XUB*> [#uses=3]
%tmp15 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
%A.270 = alloca %struct.string___XUB, align 8 ; <%struct.string___XUB*> [#uses=3]
%tmp20 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
%A.284 = alloca %struct.string___XUB, align 8 ; <%struct.string___XUB*> [#uses=3]
%tmp25 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
call void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp sret )
%tmp28 = getelementptr %struct.system__secondary_stack__mark_id* %tmp, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp29 = load i8** %tmp28 ; <i8*> [#uses=2]
%tmp31 = getelementptr %struct.system__secondary_stack__mark_id* %tmp, i32 0, i32 1 ; <i32*> [#uses=1]
%tmp32 = load i32* %tmp31 ; <i32> [#uses=2]
%tmp33 = load i8* @report__test_status ; <i8> [#uses=1]
switch i8 %tmp33, label %bb483 [
i8 0, label %bb
i8 2, label %bb143
i8 3, label %bb261
]
bb: ; preds = %entry
%tmp34 = load i32* @report__test_name_len ; <i32> [#uses=4]
%tmp35 = icmp sgt i32 %tmp34, 0 ; <i1> [#uses=2]
%tmp40 = icmp sgt i32 %tmp34, 15 ; <i1> [#uses=1]
%bothcond139 = and i1 %tmp35, %tmp40 ; <i1> [#uses=1]
br i1 %bothcond139, label %cond_true43, label %cond_next44
cond_true43: ; preds = %bb
invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 212 )
to label %UnifiedUnreachableBlock unwind label %unwind
unwind: ; preds = %invcont589, %cond_next567, %bb555, %cond_true497, %invcont249, %cond_next227, %bb215, %cond_true157, %invcont131, %cond_next109, %bb97, %cond_true43
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
br label %cleanup717
cond_next44: ; preds = %bb
%tmp72 = getelementptr %struct.string___XUB* %A.210, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %tmp72
%tmp73 = getelementptr %struct.string___XUB* %A.210, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %tmp34, i32* %tmp73
br i1 %tmp35, label %cond_true80, label %cond_next109
cond_true80: ; preds = %cond_next44
%tmp45.off = add i32 %tmp34, -1 ; <i32> [#uses=1]
%bothcond = icmp ugt i32 %tmp45.off, 14 ; <i1> [#uses=1]
br i1 %bothcond, label %bb97, label %cond_next109
bb97: ; preds = %cond_true80
invoke void @__gnat_rcheck_05( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 212 )
to label %UnifiedUnreachableBlock unwind label %unwind
cond_next109: ; preds = %cond_true80, %cond_next44
%A.210128 = ptrtoint %struct.string___XUB* %A.210 to i32 ; <i32> [#uses=1]
%A.210128129 = zext i32 %A.210128 to i64 ; <i64> [#uses=1]
%A.210128129130 = shl i64 %A.210128129, 32 ; <i64> [#uses=1]
%A.210128129130.ins = or i64 %A.210128129130, zext (i32 ptrtoint ([15 x i8]* @report__test_name to i32) to i64) ; <i64> [#uses=1]
invoke void @system__string_ops_concat_3__str_concat_3( %struct.string___XUP* %tmp5 sret , i64 or (i64 zext (i32 ptrtoint ([5 x i8]* @.str17 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.81.900 to i32) to i64), i64 32)), i64 %A.210128129130.ins, i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str16 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.209.1380 to i32) to i64), i64 32)) )
to label %invcont131 unwind label %unwind
invcont131: ; preds = %cond_next109
%tmp133 = getelementptr %struct.string___XUP* %tmp5, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp134 = load i8** %tmp133 ; <i8*> [#uses=1]
%tmp134120 = ptrtoint i8* %tmp134 to i32 ; <i32> [#uses=1]
%tmp134120121 = zext i32 %tmp134120 to i64 ; <i64> [#uses=1]
%tmp136 = getelementptr %struct.string___XUP* %tmp5, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%tmp137 = load %struct.string___XUB** %tmp136 ; <%struct.string___XUB*> [#uses=1]
%tmp137116 = ptrtoint %struct.string___XUB* %tmp137 to i32 ; <i32> [#uses=1]
%tmp137116117 = zext i32 %tmp137116 to i64 ; <i64> [#uses=1]
%tmp137116117118 = shl i64 %tmp137116117, 32 ; <i64> [#uses=1]
%tmp137116117118.ins = or i64 %tmp137116117118, %tmp134120121 ; <i64> [#uses=1]
invoke fastcc void @report__put_msg( i64 %tmp137116117118.ins )
to label %cond_next618 unwind label %unwind
bb143: ; preds = %entry
%tmp144 = load i32* @report__test_name_len ; <i32> [#uses=4]
%tmp147 = icmp sgt i32 %tmp144, 0 ; <i1> [#uses=2]
%tmp154 = icmp sgt i32 %tmp144, 15 ; <i1> [#uses=1]
%bothcond140 = and i1 %tmp147, %tmp154 ; <i1> [#uses=1]
br i1 %bothcond140, label %cond_true157, label %cond_next160
cond_true157: ; preds = %bb143
invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 215 )
to label %UnifiedUnreachableBlock unwind label %unwind
cond_next160: ; preds = %bb143
%tmp189 = getelementptr %struct.string___XUB* %A.229, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %tmp189
%tmp190 = getelementptr %struct.string___XUB* %A.229, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %tmp144, i32* %tmp190
br i1 %tmp147, label %cond_true197, label %cond_next227
cond_true197: ; preds = %cond_next160
%tmp161.off = add i32 %tmp144, -1 ; <i32> [#uses=1]
%bothcond1 = icmp ugt i32 %tmp161.off, 14 ; <i1> [#uses=1]
br i1 %bothcond1, label %bb215, label %cond_next227
bb215: ; preds = %cond_true197
invoke void @__gnat_rcheck_05( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 215 )
to label %UnifiedUnreachableBlock unwind label %unwind
cond_next227: ; preds = %cond_true197, %cond_next160
%A.229105 = ptrtoint %struct.string___XUB* %A.229 to i32 ; <i32> [#uses=1]
%A.229105106 = zext i32 %A.229105 to i64 ; <i64> [#uses=1]
%A.229105106107 = shl i64 %A.229105106, 32 ; <i64> [#uses=1]
%A.229105106107.ins = or i64 %A.229105106107, zext (i32 ptrtoint ([15 x i8]* @report__test_name to i32) to i64) ; <i64> [#uses=1]
invoke void @system__string_ops_concat_3__str_concat_3( %struct.string___XUP* %tmp10 sret , i64 or (i64 zext (i32 ptrtoint ([5 x i8]* @.str19 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.81.900 to i32) to i64), i64 32)), i64 %A.229105106107.ins, i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str18 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.209.1380 to i32) to i64), i64 32)) )
to label %invcont249 unwind label %unwind
invcont249: ; preds = %cond_next227
%tmp251 = getelementptr %struct.string___XUP* %tmp10, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp252 = load i8** %tmp251 ; <i8*> [#uses=1]
%tmp25297 = ptrtoint i8* %tmp252 to i32 ; <i32> [#uses=1]
%tmp2529798 = zext i32 %tmp25297 to i64 ; <i64> [#uses=1]
%tmp254 = getelementptr %struct.string___XUP* %tmp10, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%tmp255 = load %struct.string___XUB** %tmp254 ; <%struct.string___XUB*> [#uses=1]
%tmp25593 = ptrtoint %struct.string___XUB* %tmp255 to i32 ; <i32> [#uses=1]
%tmp2559394 = zext i32 %tmp25593 to i64 ; <i64> [#uses=1]
%tmp255939495 = shl i64 %tmp2559394, 32 ; <i64> [#uses=1]
%tmp255939495.ins = or i64 %tmp255939495, %tmp2529798 ; <i64> [#uses=1]
invoke fastcc void @report__put_msg( i64 %tmp255939495.ins )
to label %cond_next618 unwind label %unwind
bb261: ; preds = %entry
%tmp262 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=2]
%tmp263 = load i32* @report__test_name_len ; <i32> [#uses=4]
%tmp266 = icmp sgt i32 %tmp263, 0 ; <i1> [#uses=2]
%tmp273 = icmp sgt i32 %tmp263, 15 ; <i1> [#uses=1]
%bothcond141 = and i1 %tmp266, %tmp273 ; <i1> [#uses=1]
br i1 %bothcond141, label %cond_true276, label %cond_next281
cond_true276: ; preds = %bb261
invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 218 )
to label %UnifiedUnreachableBlock unwind label %unwind277
unwind277: ; preds = %invcont467, %cond_next442, %invcont370, %cond_next348, %bb336, %cond_true276
%eh_ptr278 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
call void @llvm.stackrestore( i8* %tmp262 )
br label %cleanup717
cond_next281: ; preds = %bb261
%tmp310 = getelementptr %struct.string___XUB* %A.248, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %tmp310
%tmp311 = getelementptr %struct.string___XUB* %A.248, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %tmp263, i32* %tmp311
br i1 %tmp266, label %cond_true318, label %cond_next348
cond_true318: ; preds = %cond_next281
%tmp282.off = add i32 %tmp263, -1 ; <i32> [#uses=1]
%bothcond2 = icmp ugt i32 %tmp282.off, 14 ; <i1> [#uses=1]
br i1 %bothcond2, label %bb336, label %cond_next348
bb336: ; preds = %cond_true318
invoke void @__gnat_rcheck_05( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 218 )
to label %UnifiedUnreachableBlock unwind label %unwind277
cond_next348: ; preds = %cond_true318, %cond_next281
%A.24882 = ptrtoint %struct.string___XUB* %A.248 to i32 ; <i32> [#uses=1]
%A.2488283 = zext i32 %A.24882 to i64 ; <i64> [#uses=1]
%A.248828384 = shl i64 %A.2488283, 32 ; <i64> [#uses=1]
%A.248828384.ins = or i64 %A.248828384, zext (i32 ptrtoint ([15 x i8]* @report__test_name to i32) to i64) ; <i64> [#uses=1]
invoke void @system__string_ops_concat_3__str_concat_3( %struct.string___XUP* %tmp15 sret , i64 or (i64 zext (i32 ptrtoint ([5 x i8]* @.str21 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.81.900 to i32) to i64), i64 32)), i64 %A.248828384.ins, i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str20 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.209.1380 to i32) to i64), i64 32)) )
to label %invcont370 unwind label %unwind277
invcont370: ; preds = %cond_next348
%tmp372 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp373 = load i8** %tmp372 ; <i8*> [#uses=1]
%tmp37374 = ptrtoint i8* %tmp373 to i32 ; <i32> [#uses=1]
%tmp3737475 = zext i32 %tmp37374 to i64 ; <i64> [#uses=1]
%tmp375 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%tmp376 = load %struct.string___XUB** %tmp375 ; <%struct.string___XUB*> [#uses=1]
%tmp37670 = ptrtoint %struct.string___XUB* %tmp376 to i32 ; <i32> [#uses=1]
%tmp3767071 = zext i32 %tmp37670 to i64 ; <i64> [#uses=1]
%tmp376707172 = shl i64 %tmp3767071, 32 ; <i64> [#uses=1]
%tmp376707172.ins = or i64 %tmp376707172, %tmp3737475 ; <i64> [#uses=1]
invoke fastcc void @report__put_msg( i64 %tmp376707172.ins )
to label %invcont381 unwind label %unwind277
invcont381: ; preds = %invcont370
%tmp382 = load i32* @report__test_name_len ; <i32> [#uses=6]
%tmp415 = icmp sgt i32 %tmp382, -1 ; <i1> [#uses=1]
%max416 = select i1 %tmp415, i32 %tmp382, i32 0 ; <i32> [#uses=1]
%tmp417 = alloca i8, i32 %max416 ; <i8*> [#uses=3]
%tmp423 = icmp sgt i32 %tmp382, 0 ; <i1> [#uses=1]
br i1 %tmp423, label %bb427, label %cond_next442
bb427: ; preds = %invcont381
store i8 32, i8* %tmp417
%tmp434 = icmp eq i32 %tmp382, 1 ; <i1> [#uses=1]
br i1 %tmp434, label %cond_next442, label %cond_next438.preheader
cond_next438.preheader: ; preds = %bb427
%tmp. = add i32 %tmp382, -1 ; <i32> [#uses=1]
br label %cond_next438
cond_next438: ; preds = %cond_next438, %cond_next438.preheader
%indvar = phi i32 [ 0, %cond_next438.preheader ], [ %J130b.513.5, %cond_next438 ] ; <i32> [#uses=1]
%J130b.513.5 = add i32 %indvar, 1 ; <i32> [#uses=3]
%tmp43118 = getelementptr i8* %tmp417, i32 %J130b.513.5 ; <i8*> [#uses=1]
store i8 32, i8* %tmp43118
%exitcond = icmp eq i32 %J130b.513.5, %tmp. ; <i1> [#uses=1]
br i1 %exitcond, label %cond_next442, label %cond_next438
cond_next442: ; preds = %cond_next438, %bb427, %invcont381
%tmp448 = getelementptr %struct.string___XUB* %A.270, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %tmp448
%tmp449 = getelementptr %struct.string___XUB* %A.270, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %tmp382, i32* %tmp449
%tmp41762 = ptrtoint i8* %tmp417 to i32 ; <i32> [#uses=1]
%tmp4176263 = zext i32 %tmp41762 to i64 ; <i64> [#uses=1]
%A.27058 = ptrtoint %struct.string___XUB* %A.270 to i32 ; <i32> [#uses=1]
%A.2705859 = zext i32 %A.27058 to i64 ; <i64> [#uses=1]
%A.270585960 = shl i64 %A.2705859, 32 ; <i64> [#uses=1]
%A.270585960.ins = or i64 %tmp4176263, %A.270585960 ; <i64> [#uses=1]
invoke void @system__string_ops_concat_3__str_concat_3( %struct.string___XUP* %tmp20 sret , i64 or (i64 zext (i32 ptrtoint ([5 x i8]* @.str21 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.81.900 to i32) to i64), i64 32)), i64 %A.270585960.ins, i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str22 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.209.1380 to i32) to i64), i64 32)) )
to label %invcont467 unwind label %unwind277
invcont467: ; preds = %cond_next442
%tmp469 = getelementptr %struct.string___XUP* %tmp20, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp470 = load i8** %tmp469 ; <i8*> [#uses=1]
%tmp47050 = ptrtoint i8* %tmp470 to i32 ; <i32> [#uses=1]
%tmp4705051 = zext i32 %tmp47050 to i64 ; <i64> [#uses=1]
%tmp472 = getelementptr %struct.string___XUP* %tmp20, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%tmp473 = load %struct.string___XUB** %tmp472 ; <%struct.string___XUB*> [#uses=1]
%tmp47346 = ptrtoint %struct.string___XUB* %tmp473 to i32 ; <i32> [#uses=1]
%tmp4734647 = zext i32 %tmp47346 to i64 ; <i64> [#uses=1]
%tmp473464748 = shl i64 %tmp4734647, 32 ; <i64> [#uses=1]
%tmp473464748.ins = or i64 %tmp473464748, %tmp4705051 ; <i64> [#uses=1]
invoke fastcc void @report__put_msg( i64 %tmp473464748.ins )
to label %cleanup unwind label %unwind277
cleanup: ; preds = %invcont467
call void @llvm.stackrestore( i8* %tmp262 )
br label %cond_next618
bb483: ; preds = %entry
%tmp484 = load i32* @report__test_name_len ; <i32> [#uses=4]
%tmp487 = icmp sgt i32 %tmp484, 0 ; <i1> [#uses=2]
%tmp494 = icmp sgt i32 %tmp484, 15 ; <i1> [#uses=1]
%bothcond142 = and i1 %tmp487, %tmp494 ; <i1> [#uses=1]
br i1 %bothcond142, label %cond_true497, label %cond_next500
cond_true497: ; preds = %bb483
invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 223 )
to label %UnifiedUnreachableBlock unwind label %unwind
cond_next500: ; preds = %bb483
%tmp529 = getelementptr %struct.string___XUB* %A.284, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %tmp529
%tmp530 = getelementptr %struct.string___XUB* %A.284, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %tmp484, i32* %tmp530
br i1 %tmp487, label %cond_true537, label %cond_next567
cond_true537: ; preds = %cond_next500
%tmp501.off = add i32 %tmp484, -1 ; <i32> [#uses=1]
%bothcond3 = icmp ugt i32 %tmp501.off, 14 ; <i1> [#uses=1]
br i1 %bothcond3, label %bb555, label %cond_next567
bb555: ; preds = %cond_true537
invoke void @__gnat_rcheck_05( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 223 )
to label %UnifiedUnreachableBlock unwind label %unwind
cond_next567: ; preds = %cond_true537, %cond_next500
%A.28435 = ptrtoint %struct.string___XUB* %A.284 to i32 ; <i32> [#uses=1]
%A.2843536 = zext i32 %A.28435 to i64 ; <i64> [#uses=1]
%A.284353637 = shl i64 %A.2843536, 32 ; <i64> [#uses=1]
%A.284353637.ins = or i64 %A.284353637, zext (i32 ptrtoint ([15 x i8]* @report__test_name to i32) to i64) ; <i64> [#uses=1]
invoke void @system__string_ops_concat_3__str_concat_3( %struct.string___XUP* %tmp25 sret , i64 or (i64 zext (i32 ptrtoint ([5 x i8]* @.str24 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.81.900 to i32) to i64), i64 32)), i64 %A.284353637.ins, i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str23 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.209.1380 to i32) to i64), i64 32)) )
to label %invcont589 unwind label %unwind
invcont589: ; preds = %cond_next567
%tmp591 = getelementptr %struct.string___XUP* %tmp25, i32 0, i32 0 ; <i8**> [#uses=1]
%tmp592 = load i8** %tmp591 ; <i8*> [#uses=1]
%tmp59228 = ptrtoint i8* %tmp592 to i32 ; <i32> [#uses=1]
%tmp5922829 = zext i32 %tmp59228 to i64 ; <i64> [#uses=1]
%tmp594 = getelementptr %struct.string___XUP* %tmp25, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%tmp595 = load %struct.string___XUB** %tmp594 ; <%struct.string___XUB*> [#uses=1]
%tmp59524 = ptrtoint %struct.string___XUB* %tmp595 to i32 ; <i32> [#uses=1]
%tmp5952425 = zext i32 %tmp59524 to i64 ; <i64> [#uses=1]
%tmp595242526 = shl i64 %tmp5952425, 32 ; <i64> [#uses=1]
%tmp595242526.ins = or i64 %tmp595242526, %tmp5922829 ; <i64> [#uses=1]
invoke fastcc void @report__put_msg( i64 %tmp595242526.ins )
to label %cond_next618 unwind label %unwind
cond_next618: ; preds = %invcont589, %cleanup, %invcont249, %invcont131
store i8 1, i8* @report__test_status
store i32 7, i32* @report__test_name_len
store i8 78, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 0)
store i8 79, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 1)
store i8 95, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 2)
store i8 78, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 3)
store i8 65, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 4)
store i8 77, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 5)
store i8 69, i8* getelementptr ([15 x i8]* @report__test_name, i32 0, i32 6)
%CHAIN.310.0.0.0.val5.i = ptrtoint i8* %tmp29 to i32 ; <i32> [#uses=1]
%CHAIN.310.0.0.0.val56.i = zext i32 %CHAIN.310.0.0.0.val5.i to i64 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val2.i = zext i32 %tmp32 to i64 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val23.i = shl i64 %CHAIN.310.0.0.1.val2.i, 32 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val23.ins.i = or i64 %CHAIN.310.0.0.1.val23.i, %CHAIN.310.0.0.0.val56.i ; <i64> [#uses=1]
call void @system__secondary_stack__ss_release( i64 %CHAIN.310.0.0.1.val23.ins.i )
ret void
cleanup717: ; preds = %unwind277, %unwind
%eh_exception.0 = phi i8* [ %eh_ptr278, %unwind277 ], [ %eh_ptr, %unwind ] ; <i8*> [#uses=1]
%CHAIN.310.0.0.0.val5.i8 = ptrtoint i8* %tmp29 to i32 ; <i32> [#uses=1]
%CHAIN.310.0.0.0.val56.i9 = zext i32 %CHAIN.310.0.0.0.val5.i8 to i64 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val2.i10 = zext i32 %tmp32 to i64 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val23.i11 = shl i64 %CHAIN.310.0.0.1.val2.i10, 32 ; <i64> [#uses=1]
%CHAIN.310.0.0.1.val23.ins.i12 = or i64 %CHAIN.310.0.0.1.val23.i11, %CHAIN.310.0.0.0.val56.i9 ; <i64> [#uses=1]
call void @system__secondary_stack__ss_release( i64 %CHAIN.310.0.0.1.val23.ins.i12 )
call i32 (...)* @_Unwind_Resume( i8* %eh_exception.0 ) ; <i32>:0 [#uses=0]
unreachable
UnifiedUnreachableBlock: ; preds = %bb555, %cond_true497, %bb336, %cond_true276, %bb215, %cond_true157, %bb97, %cond_true43
unreachable
}
declare i8* @llvm.stacksave()
declare void @llvm.stackrestore(i8*)
declare i32 @report__ident_int(i32 %x)
declare i8 @report__equal(i32 %x, i32 %y)
declare i8 @report__ident_char(i8 zeroext %x)
declare i16 @report__ident_wide_char(i16 zeroext %x)
declare i8 @report__ident_bool(i8 %x)
declare void @report__ident_str(%struct.string___XUP* sret %agg.result, i64 %x.0.0)
declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
declare void @report__ident_wide_str(%struct.wide_string___XUP* sret %agg.result, i64 %x.0.0)
declare void @__gnat_begin_handler(i8*)
declare void @__gnat_end_handler(i8*)
declare void @report__legal_file_name(%struct.string___XUP* sret %agg.result, i32 %x, i64 %nam.0.0)
declare void @__gnat_rcheck_06(i8*, i32)
declare void @system__string_ops__str_concat_cs(%struct.string___XUP* sret , i8 zeroext , i64)

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 | not grep movl
define i8 @t(i8 zeroext %x, i8 zeroext %y) zeroext {
define zeroext i8 @t(i8 zeroext %x, i8 zeroext %y) {
%tmp2 = add i8 %x, 2
%tmp4 = add i8 %y, -2
%tmp5 = mul i8 %tmp4, %tmp2

View File

@ -2,7 +2,7 @@
@X = global i32 0 ; <i32*> [#uses=1]
define i8 @_Z3fooi(i32 %x) signext {
define signext i8 @_Z3fooi(i32 %x) {
entry:
store i32 %x, i32* @X, align 4
%retval67 = trunc i32 %x to i8 ; <i8> [#uses=1]

View File

@ -26,7 +26,7 @@
[1 x %struct._objc_method] [ %struct._objc_method {
%struct.objc_selector* bitcast ([12 x i8]* @"\01L_OBJC_METH_VAR_NAME_0" to %struct.objc_selector*),
i8* getelementptr ([7 x i8]* @"\01L_OBJC_METH_VAR_TYPE_0", i32 0, i32 0),
i8* bitcast (i8 (%struct.NSString*, %struct.objc_selector*) signext * @"-[NSString(local) isNullOrNil]" to i8*) } ] }, section "__OBJC,__cat_inst_meth,regular,no_dead_strip" ; <{ i32, i32, [1 x %struct._objc_method] }*> [#uses=3]
i8* bitcast (i8 (%struct.NSString*, %struct.objc_selector*) * @"-[NSString(local) isNullOrNil]" to i8*) } ] }, section "__OBJC,__cat_inst_meth,regular,no_dead_strip" ; <{ i32, i32, [1 x %struct._objc_method] }*> [#uses=3]
@"\01L_OBJC_CATEGORY_NSString_local" = internal global { i8*, i8*, %struct._objc_method_list*, i32, i32, i32, i32 } {
i8* getelementptr ([6 x i8]* @"\01L_OBJC_CLASS_NAME_0", i32 0, i32 0),
i8* getelementptr ([9 x i8]* @"\01L_OBJC_CLASS_NAME_1", i32 0, i32 0),
@ -51,7 +51,7 @@
@"\01L_OBJC_METH_VAR_TYPE_0" = internal global [7 x i8] c"c8@0:4\00", section "__TEXT,__cstring,cstring_literals" ; <[7 x i8]*> [#uses=2]
@llvm.used = appending global [11 x i8*] [ i8* bitcast ({ i32, i32, i16, i16, [1 x %struct._objc_category*] }* @"\01L_OBJC_SYMBOLS" to i8*), i8* bitcast ({ i32, i32, [1 x %struct._objc_method] }* @"\01L_OBJC_CATEGORY_INSTANCE_METHODS_NSString_local" to i8*), i8* bitcast ({ i8*, i8*, %struct._objc_method_list*, i32, i32, i32, i32 }* @"\01L_OBJC_CATEGORY_NSString_local" to i8*), i8* bitcast ([2 x i32]* @"\01L_OBJC_IMAGE_INFO" to i8*), i8* bitcast (%struct._objc_module* @"\01L_OBJC_MODULES" to i8*), i8* bitcast (i32* @"\01.objc_category_name_NSString_local" to i8*), i8* getelementptr ([1 x i8]* @"\01L_OBJC_CLASS_NAME_2", i32 0, i32 0), i8* getelementptr ([9 x i8]* @"\01L_OBJC_CLASS_NAME_1", i32 0, i32 0), i8* getelementptr ([6 x i8]* @"\01L_OBJC_CLASS_NAME_0", i32 0, i32 0), i8* getelementptr ([12 x i8]* @"\01L_OBJC_METH_VAR_NAME_0", i32 0, i32 0), i8* getelementptr ([7 x i8]* @"\01L_OBJC_METH_VAR_TYPE_0", i32 0, i32 0) ], section "llvm.metadata" ; <[11 x i8*]*> [#uses=0]
define internal i8 @"-[NSString(local) isNullOrNil]"(%struct.NSString* %self, %struct.objc_selector* %_cmd) signext {
define internal signext i8 @"-[NSString(local) isNullOrNil]"(%struct.NSString* %self, %struct.objc_selector* %_cmd) {
entry:
%self_addr = alloca %struct.NSString* ; <%struct.NSString**> [#uses=1]
%_cmd_addr = alloca %struct.objc_selector* ; <%struct.objc_selector**> [#uses=1]

View File

@ -1,48 +0,0 @@
; RUN: llc < %s -march=x86 | grep lea
%struct.anon = type { [3 x double], double, %struct.node*, [64 x %struct.bnode*], [64 x %struct.bnode*] }
%struct.bnode = type { i16, double, [3 x double], i32, i32, [3 x double], [3 x double], [3 x double], double, %struct.bnode*, %struct.bnode* }
%struct.node = type { i16, double, [3 x double], i32, i32 }
define i32 @main(i32 %argc, i8** nocapture %argv) nounwind {
entry:
%0 = malloc %struct.anon ; <%struct.anon*> [#uses=2]
%1 = getelementptr %struct.anon* %0, i32 0, i32 2 ; <%struct.node**> [#uses=1]
br label %bb14.i
bb14.i: ; preds = %bb14.i, %entry
%i8.0.reg2mem.0.i = phi i32 [ 0, %entry ], [ %2, %bb14.i ] ; <i32> [#uses=1]
%2 = add i32 %i8.0.reg2mem.0.i, 1 ; <i32> [#uses=2]
%exitcond74.i = icmp eq i32 %2, 32 ; <i1> [#uses=1]
br i1 %exitcond74.i, label %bb32.i, label %bb14.i
bb32.i: ; preds = %bb32.i, %bb14.i
%tmp.0.reg2mem.0.i = phi i32 [ %indvar.next63.i, %bb32.i ], [ 0, %bb14.i ] ; <i32> [#uses=1]
%indvar.next63.i = add i32 %tmp.0.reg2mem.0.i, 1 ; <i32> [#uses=2]
%exitcond64.i = icmp eq i32 %indvar.next63.i, 64 ; <i1> [#uses=1]
br i1 %exitcond64.i, label %bb47.loopexit.i, label %bb32.i
bb.i.i: ; preds = %bb47.loopexit.i
unreachable
stepsystem.exit.i: ; preds = %bb47.loopexit.i
store %struct.node* null, %struct.node** %1, align 4
br label %bb.i6.i
bb.i6.i: ; preds = %bb.i6.i, %stepsystem.exit.i
%tmp.0.i.i = add i32 0, -1 ; <i32> [#uses=1]
%3 = icmp slt i32 %tmp.0.i.i, 0 ; <i1> [#uses=1]
br i1 %3, label %bb107.i.i, label %bb.i6.i
bb107.i.i: ; preds = %bb107.i.i, %bb.i6.i
%q_addr.0.i.i.in = phi %struct.bnode** [ null, %bb107.i.i ], [ %4, %bb.i6.i ] ; <%struct.bnode**> [#uses=1]
%q_addr.0.i.i = load %struct.bnode** %q_addr.0.i.i.in ; <%struct.bnode*> [#uses=1]
%q_addr.1 = getelementptr %struct.anon* %0, i32 0, i32 4, i32 1
store %struct.bnode* %q_addr.0.i.i, %struct.bnode** %q_addr.1, align 4
br label %bb107.i.i
bb47.loopexit.i: ; preds = %bb32.i
%4 = getelementptr %struct.anon* %0, i32 0, i32 4, i32 0 ; <%struct.bnode**> [#uses=1]
%5 = icmp eq %struct.node* null, null ; <i1> [#uses=1]
br i1 %5, label %stepsystem.exit.i, label %bb.i.i
}

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 | not grep movb
define i16 @f(i32* %bp, i32* %ss) signext {
define signext i16 @f(i32* %bp, i32* %ss) {
entry:
br label %cond_next127

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 | grep sarl | not grep esp
define i16 @t(i16* %qmatrix, i16* %dct, i16* %acBaseTable, i16* %acExtTable, i16 signext %acBaseRes, i16 signext %acMaskRes, i16 signext %acExtRes, i32* %bitptr, i32* %source, i32 %markerPrefix, i8** %byteptr, i32 %scale, i32 %round, i32 %bits) signext {
define signext i16 @t(i16* %qmatrix, i16* %dct, i16* %acBaseTable, i16* %acExtTable, i16 signext %acBaseRes, i16 signext %acMaskRes, i16 signext %acExtRes, i32* %bitptr, i32* %source, i32 %markerPrefix, i8** %byteptr, i32 %scale, i32 %round, i32 %bits) {
entry:
br label %cond_next127

View File

@ -362,7 +362,7 @@ bb1159: ; preds = %cond_next1150
cond_true1169: ; preds = %bb1159
%tmp11741175 = trunc i64 %lsum.11225.0 to i32 ; <i32> [#uses=1]
%tmp1178 = tail call i32 (%struct._IO_FILE* noalias , i8* noalias , ...)* @fprintf( %struct._IO_FILE* %file noalias , i8* getelementptr ([49 x i8]* @.str32, i32 0, i64 0) noalias , i32 %tmp11741175, i32 0 ) ; <i32> [#uses=0]
%tmp1178 = tail call i32 (%struct._IO_FILE* noalias , i8* noalias , ...)* @fprintf( %struct._IO_FILE* noalias %file , i8* getelementptr ([49 x i8]* @.str32, i32 0, i64 0) , i32 %tmp11741175, i32 0 ) ; <i32> [#uses=0]
ret void
UnifiedReturnBlock: ; preds = %bb1159
@ -379,9 +379,9 @@ declare i32 @reg_preferred_class(i32)
declare i32 @reg_alternate_class(i32)
declare i8 @maybe_hot_bb_p(%struct.basic_block_def*) zeroext
declare zeroext i8 @maybe_hot_bb_p(%struct.basic_block_def*)
declare i8 @probably_never_executed_bb_p(%struct.basic_block_def*) zeroext
declare zeroext i8 @probably_never_executed_bb_p(%struct.basic_block_def*)
declare void @dump_regset(%struct.bitmap_head_def*, %struct._IO_FILE*)

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | grep inc | not grep PTR
define i16 @t(i32* %bitptr, i32* %source, i8** %byteptr, i32 %scale, i32 %round) signext {
define signext i16 @t(i32* %bitptr, i32* %source, i8** %byteptr, i32 %scale, i32 %round) {
entry:
br label %bb

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 | grep mov | count 1
define i16 @t() signext {
define signext i16 @t() {
entry:
%tmp180 = load i16* null, align 2 ; <i16> [#uses=3]
%tmp180181 = sext i16 %tmp180 to i32 ; <i32> [#uses=1]

View File

@ -1,144 +0,0 @@
; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep movl | not grep rax
%struct.color_sample = type { i64 }
%struct.gs_matrix = type { float, i64, float, i64, float, i64, float, i64, float, i64, float, i64 }
%struct.ref = type { %struct.color_sample, i16, i16 }
%struct.status = type { %struct.gs_matrix, i8*, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i32 }
define i32 @ztype1imagepath(%struct.ref* %op) {
entry:
br i1 false, label %cond_next, label %UnifiedReturnBlock
cond_next: ; preds = %entry
br i1 false, label %cond_next68, label %UnifiedReturnBlock
cond_next68: ; preds = %cond_next
%tmp5.i.i = malloc i8, i32 0 ; <i8*> [#uses=2]
br i1 false, label %bb81.outer.i, label %xit.i
bb81.outer.i: ; preds = %bb87.i, %cond_next68
%tmp67.i = add i32 0, 1 ; <i32> [#uses=1]
br label %bb81.i
bb61.i: ; preds = %bb81.i
%tmp71.i = getelementptr i8* %tmp5.i.i, i64 0 ; <i8*> [#uses=1]
%tmp72.i = load i8* %tmp71.i, align 1 ; <i8> [#uses=1]
%tmp73.i = icmp eq i8 %tmp72.i, 0 ; <i1> [#uses=1]
br i1 %tmp73.i, label %bb81.i, label %xit.i
bb81.i: ; preds = %bb61.i, %bb81.outer.i
br i1 false, label %bb87.i, label %bb61.i
bb87.i: ; preds = %bb81.i
br i1 false, label %bb81.outer.i, label %xit.i
xit.i: ; preds = %bb87.i, %bb61.i, %cond_next68
%lsbx.0.reg2mem.1.i = phi i32 [ 0, %cond_next68 ], [ 0, %bb61.i ], [ %tmp67.i, %bb87.i ] ; <i32> [#uses=1]
%tmp6162.i.i = fptrunc double 0.000000e+00 to float ; <float> [#uses=1]
%tmp67.i15.i = fptrunc double 0.000000e+00 to float ; <float> [#uses=1]
%tmp24.i27.i = icmp eq i64 0, 0 ; <i1> [#uses=1]
br i1 %tmp24.i27.i, label %cond_next.i79.i, label %cond_true.i34.i
cond_true.i34.i: ; preds = %xit.i
ret i32 0
cond_next.i79.i: ; preds = %xit.i
%phitmp167.i = fptosi double 0.000000e+00 to i64 ; <i64> [#uses=1]
%tmp142143.i = fpext float %tmp6162.i.i to double ; <double> [#uses=1]
%tmp2.i139.i = fadd double %tmp142143.i, 5.000000e-01 ; <double> [#uses=1]
%tmp23.i140.i = fptosi double %tmp2.i139.i to i64 ; <i64> [#uses=1]
br i1 false, label %cond_true.i143.i, label %round_coord.exit148.i
cond_true.i143.i: ; preds = %cond_next.i79.i
%tmp8.i142.i = icmp sgt i64 %tmp23.i140.i, -32768 ; <i1> [#uses=1]
br i1 %tmp8.i142.i, label %cond_true11.i145.i, label %round_coord.exit148.i
cond_true11.i145.i: ; preds = %cond_true.i143.i
ret i32 0
round_coord.exit148.i: ; preds = %cond_true.i143.i, %cond_next.i79.i
%tmp144149.i = phi i32 [ 32767, %cond_next.i79.i ], [ -32767, %cond_true.i143.i ] ; <i32> [#uses=1]
store i32 %tmp144149.i, i32* null, align 8
%tmp147148.i = fpext float %tmp67.i15.i to double ; <double> [#uses=1]
%tmp2.i128.i = fadd double %tmp147148.i, 5.000000e-01 ; <double> [#uses=1]
%tmp23.i129.i = fptosi double %tmp2.i128.i to i64 ; <i64> [#uses=2]
%tmp5.i130.i = icmp slt i64 %tmp23.i129.i, 32768 ; <i1> [#uses=1]
br i1 %tmp5.i130.i, label %cond_true.i132.i, label %round_coord.exit137.i
cond_true.i132.i: ; preds = %round_coord.exit148.i
%tmp8.i131.i = icmp sgt i64 %tmp23.i129.i, -32768 ; <i1> [#uses=1]
br i1 %tmp8.i131.i, label %cond_true11.i134.i, label %round_coord.exit137.i
cond_true11.i134.i: ; preds = %cond_true.i132.i
br label %round_coord.exit137.i
round_coord.exit137.i: ; preds = %cond_true11.i134.i, %cond_true.i132.i, %round_coord.exit148.i
%tmp149138.i = phi i32 [ 0, %cond_true11.i134.i ], [ 32767, %round_coord.exit148.i ], [ -32767, %cond_true.i132.i ] ; <i32> [#uses=1]
br i1 false, label %cond_true.i121.i, label %round_coord.exit126.i
cond_true.i121.i: ; preds = %round_coord.exit137.i
br i1 false, label %cond_true11.i123.i, label %round_coord.exit126.i
cond_true11.i123.i: ; preds = %cond_true.i121.i
br label %round_coord.exit126.i
round_coord.exit126.i: ; preds = %cond_true11.i123.i, %cond_true.i121.i, %round_coord.exit137.i
%tmp153127.i = phi i32 [ 0, %cond_true11.i123.i ], [ 32767, %round_coord.exit137.i ], [ -32767, %cond_true.i121.i ] ; <i32> [#uses=1]
br i1 false, label %cond_true.i110.i, label %round_coord.exit115.i
cond_true.i110.i: ; preds = %round_coord.exit126.i
br i1 false, label %cond_true11.i112.i, label %round_coord.exit115.i
cond_true11.i112.i: ; preds = %cond_true.i110.i
br label %round_coord.exit115.i
round_coord.exit115.i: ; preds = %cond_true11.i112.i, %cond_true.i110.i, %round_coord.exit126.i
%tmp157116.i = phi i32 [ 0, %cond_true11.i112.i ], [ 32767, %round_coord.exit126.i ], [ -32767, %cond_true.i110.i ] ; <i32> [#uses=2]
br i1 false, label %cond_true.i99.i, label %round_coord.exit104.i
cond_true.i99.i: ; preds = %round_coord.exit115.i
br i1 false, label %cond_true11.i101.i, label %round_coord.exit104.i
cond_true11.i101.i: ; preds = %cond_true.i99.i
%tmp1213.i100.i = trunc i64 %phitmp167.i to i32 ; <i32> [#uses=1]
br label %cond_next172.i
round_coord.exit104.i: ; preds = %cond_true.i99.i, %round_coord.exit115.i
%UnifiedRetVal.i102.i = phi i32 [ 32767, %round_coord.exit115.i ], [ -32767, %cond_true.i99.i ] ; <i32> [#uses=1]
%tmp164.i = call fastcc i32 @put_int( %struct.status* null, i32 %tmp157116.i ) ; <i32> [#uses=0]
br label %cond_next172.i
cond_next172.i: ; preds = %round_coord.exit104.i, %cond_true11.i101.i
%tmp161105.reg2mem.0.i = phi i32 [ %tmp1213.i100.i, %cond_true11.i101.i ], [ %UnifiedRetVal.i102.i, %round_coord.exit104.i ] ; <i32> [#uses=1]
%tmp174.i = icmp eq i32 %tmp153127.i, 0 ; <i1> [#uses=1]
%bothcond.i = and i1 false, %tmp174.i ; <i1> [#uses=1]
%tmp235.i = call fastcc i32 @put_int( %struct.status* null, i32 %tmp149138.i ) ; <i32> [#uses=0]
%tmp245.i = load i8** null, align 8 ; <i8*> [#uses=2]
%tmp246.i = getelementptr i8* %tmp245.i, i64 1 ; <i8*> [#uses=1]
br i1 %bothcond.i, label %cond_next254.i, label %bb259.i
cond_next254.i: ; preds = %cond_next172.i
store i8 13, i8* %tmp245.i, align 1
br label %bb259.i
bb259.i: ; preds = %cond_next254.i, %cond_next172.i
%storemerge.i = phi i8* [ %tmp246.i, %cond_next254.i ], [ null, %cond_next172.i ] ; <i8*> [#uses=0]
%tmp261.i = shl i32 %lsbx.0.reg2mem.1.i, 2 ; <i32> [#uses=1]
store i32 %tmp261.i, i32* null, align 8
%tmp270.i = add i32 0, %tmp157116.i ; <i32> [#uses=1]
store i32 %tmp270.i, i32* null, align 8
%tmp275.i = add i32 0, %tmp161105.reg2mem.0.i ; <i32> [#uses=0]
br i1 false, label %trace_cells.exit.i, label %bb.preheader.i.i
bb.preheader.i.i: ; preds = %bb259.i
ret i32 0
trace_cells.exit.i: ; preds = %bb259.i
free i8* %tmp5.i.i
ret i32 0
UnifiedReturnBlock: ; preds = %cond_next, %entry
ret i32 -20
}
declare fastcc i32 @put_int(%struct.status*, i32)

View File

@ -1,680 +0,0 @@
; RUN: llc < %s -mtriple=i686-apple-darwin | not grep IMPLICIT_DEF
%struct.__sbuf = type { i8*, i32 }
%struct.ggBRDF = type { i32 (...)** }
%"struct.ggBST<ggMaterial>" = type { %"struct.ggBSTNode<ggMaterial>"*, i32 }
%"struct.ggBST<ggRasterSurfaceTexture>" = type { %"struct.ggBSTNode<ggRasterSurfaceTexture>"*, i32 }
%"struct.ggBST<ggSolidTexture>" = type { %"struct.ggBSTNode<ggSolidTexture>"*, i32 }
%"struct.ggBST<ggSpectrum>" = type { %"struct.ggBSTNode<ggSpectrum>"*, i32 }
%"struct.ggBST<mrObjectRecord>" = type { %"struct.ggBSTNode<mrObjectRecord>"*, i32 }
%"struct.ggBSTNode<ggMaterial>" = type { %"struct.ggBSTNode<ggMaterial>"*, %"struct.ggBSTNode<ggMaterial>"*, %struct.ggString, %struct.ggMaterial* }
%"struct.ggBSTNode<ggRasterSurfaceTexture>" = type { %"struct.ggBSTNode<ggRasterSurfaceTexture>"*, %"struct.ggBSTNode<ggRasterSurfaceTexture>"*, %struct.ggString, %struct.ggRasterSurfaceTexture* }
%"struct.ggBSTNode<ggSolidTexture>" = type { %"struct.ggBSTNode<ggSolidTexture>"*, %"struct.ggBSTNode<ggSolidTexture>"*, %struct.ggString, %struct.ggBRDF* }
%"struct.ggBSTNode<ggSpectrum>" = type { %"struct.ggBSTNode<ggSpectrum>"*, %"struct.ggBSTNode<ggSpectrum>"*, %struct.ggString, %struct.ggSpectrum* }
%"struct.ggBSTNode<mrObjectRecord>" = type { %"struct.ggBSTNode<mrObjectRecord>"*, %"struct.ggBSTNode<mrObjectRecord>"*, %struct.ggString, %struct.mrObjectRecord* }
%"struct.ggDictionary<ggMaterial>" = type { %"struct.ggBST<ggMaterial>" }
%"struct.ggDictionary<ggRasterSurfaceTexture>" = type { %"struct.ggBST<ggRasterSurfaceTexture>" }
%"struct.ggDictionary<ggSolidTexture>" = type { %"struct.ggBST<ggSolidTexture>" }
%"struct.ggDictionary<ggSpectrum>" = type { %"struct.ggBST<ggSpectrum>" }
%"struct.ggDictionary<mrObjectRecord>" = type { %"struct.ggBST<mrObjectRecord>" }
%struct.ggHAffineMatrix3 = type { %struct.ggHMatrix3 }
%struct.ggHBoxMatrix3 = type { %struct.ggHAffineMatrix3 }
%struct.ggHMatrix3 = type { [4 x [4 x double]] }
%struct.ggMaterial = type { i32 (...)**, %struct.ggBRDF* }
%struct.ggPoint3 = type { [3 x double] }
%"struct.ggRGBPixel<char>" = type { [3 x i8], i8 }
%"struct.ggRaster<ggRGBPixel<unsigned char> >" = type { i32, i32, %"struct.ggRGBPixel<char>"* }
%struct.ggRasterSurfaceTexture = type { %"struct.ggRaster<ggRGBPixel<unsigned char> >"* }
%struct.ggSolidNoise3 = type { i32, [256 x %struct.ggPoint3], [256 x i32] }
%struct.ggSpectrum = type { [8 x float] }
%struct.ggString = type { %"struct.ggString::StringRep"* }
%"struct.ggString::StringRep" = type { i32, i32, [1 x i8] }
%"struct.ggTrain<mrPixelRenderer*>" = type { %struct.ggBRDF**, i32, i32 }
%struct.mrObjectRecord = type { %struct.ggHBoxMatrix3, %struct.ggHBoxMatrix3, %struct.mrSurfaceList, %struct.ggMaterial*, i32, %struct.ggRasterSurfaceTexture*, %struct.ggBRDF*, i32, i32 }
%struct.mrScene = type { %struct.ggSpectrum, %struct.ggSpectrum, %struct.ggBRDF*, %struct.ggBRDF*, %struct.ggBRDF*, i32, double, %"struct.ggDictionary<mrObjectRecord>", %"struct.ggDictionary<ggRasterSurfaceTexture>", %"struct.ggDictionary<ggSolidTexture>", %"struct.ggDictionary<ggSpectrum>", %"struct.ggDictionary<ggMaterial>" }
%struct.mrSurfaceList = type { %struct.ggBRDF, %"struct.ggTrain<mrPixelRenderer*>" }
%"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { %"struct.std::locale::facet" }
%"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<char,std::char_traits<char> >"*, i8, i8, %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, %"struct.std::ctype<char>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* }
%"struct.std::basic_istream<char,std::char_traits<char> >" = type { i32 (...)**, i32, %"struct.std::basic_ios<char,std::char_traits<char> >" }
%"struct.std::basic_ostream<char,std::char_traits<char> >" = type { i32 (...)**, %"struct.std::basic_ios<char,std::char_traits<char> >" }
%"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"struct.std::locale" }
%"struct.std::ctype<char>" = type { %"struct.std::locale::facet", i32*, i8, i32*, i32*, i32*, i8, [256 x i8], [256 x i8], i8 }
%"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %struct.__sbuf, [8 x %struct.__sbuf], i32, %struct.__sbuf*, %"struct.std::locale" }
%"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 }
%"struct.std::locale" = type { %"struct.std::locale::_Impl"* }
%"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** }
%"struct.std::locale::facet" = type { i32 (...)**, i32 }
@.str80 = external constant [7 x i8] ; <[7 x i8]*> [#uses=1]
@.str81 = external constant [11 x i8] ; <[11 x i8]*> [#uses=1]
define fastcc void @_ZN7mrScene4ReadERSi(%struct.mrScene* %this, %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces) {
entry:
%tmp6.i.i8288 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit unwind label %lpad ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit: ; preds = %entry
%tmp6.i.i8995 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit96 unwind label %lpad3825 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit96: ; preds = %_ZN8ggStringC1Ei.exit
%tmp6.i.i97103 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit104 unwind label %lpad3829 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit104: ; preds = %_ZN8ggStringC1Ei.exit96
%tmp6.i.i105111 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit112 unwind label %lpad3833 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit112: ; preds = %_ZN8ggStringC1Ei.exit104
%tmp6.i.i122128 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit129 unwind label %lpad3837 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit129: ; preds = %_ZN8ggStringC1Ei.exit112
%tmp6.i.i132138 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit139 unwind label %lpad3841 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit139: ; preds = %_ZN8ggStringC1Ei.exit129
%tmp295 = invoke i8* @_Znwm( i32 16 )
to label %invcont294 unwind label %lpad3845 ; <i8*> [#uses=0]
invcont294: ; preds = %_ZN8ggStringC1Ei.exit139
%tmp10.i.i141 = invoke i8* @_Znam( i32 16 )
to label %_ZN13mrSurfaceListC1Ev.exit unwind label %lpad3849 ; <i8*> [#uses=0]
_ZN13mrSurfaceListC1Ev.exit: ; preds = %invcont294
%tmp3.i148 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i.noexc: ; preds = %_ZN13mrSurfaceListC1Ev.exit
%tmp15.i149 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i.noexc: ; preds = %tmp3.i.noexc
br i1 false, label %bb308, label %bb.i
bb.i: ; preds = %tmp15.i.noexc
ret void
bb308: ; preds = %tmp15.i.noexc
br i1 false, label %bb3743.preheader, label %bb315
bb3743.preheader: ; preds = %bb308
%tmp16.i3862 = getelementptr %struct.ggPoint3* null, i32 0, i32 0, i32 0 ; <double*> [#uses=1]
%tmp16.i3859 = getelementptr %struct.ggPoint3* null, i32 0, i32 0, i32 0 ; <double*> [#uses=3]
br label %bb3743
bb315: ; preds = %bb308
ret void
bb333: ; preds = %invcont3758, %invcont335
%tmp3.i167180 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i167.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i167.noexc: ; preds = %bb333
%tmp15.i182 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i.noexc181 unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i.noexc181: ; preds = %tmp3.i167.noexc
br i1 false, label %invcont335, label %bb.i178
bb.i178: ; preds = %tmp15.i.noexc181
ret void
invcont335: ; preds = %tmp15.i.noexc181
br i1 false, label %bb3743, label %bb333
bb345: ; preds = %invcont3758
br i1 false, label %bb353, label %bb360
bb353: ; preds = %bb345
%tmp356 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %bb3743 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
bb360: ; preds = %bb345
br i1 false, label %bb368, label %bb374
bb368: ; preds = %bb360
%tmp373 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %bb3743 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
bb374: ; preds = %bb360
br i1 false, label %bb396, label %bb421
bb396: ; preds = %bb374
ret void
bb421: ; preds = %bb374
br i1 false, label %bb429, label %bb530
bb429: ; preds = %bb421
ret void
bb530: ; preds = %bb421
br i1 false, label %bb538, label %bb673
bb538: ; preds = %bb530
ret void
bb673: ; preds = %bb530
br i1 false, label %bb681, label %bb778
bb681: ; preds = %bb673
ret void
bb778: ; preds = %bb673
br i1 false, label %bb786, label %bb891
bb786: ; preds = %bb778
ret void
bb891: ; preds = %bb778
br i1 false, label %bb899, label %bb998
bb899: ; preds = %bb891
ret void
bb998: ; preds = %bb891
br i1 false, label %bb1168, label %bb1190
bb1168: ; preds = %bb998
ret void
bb1190: ; preds = %bb998
br i1 false, label %bb1198, label %bb1220
bb1198: ; preds = %bb1190
ret void
bb1220: ; preds = %bb1190
br i1 false, label %bb1228, label %bb1250
bb1228: ; preds = %bb1220
ret void
bb1250: ; preds = %bb1220
br i1 false, label %bb1258, label %bb1303
bb1258: ; preds = %bb1250
ret void
bb1303: ; preds = %bb1250
br i1 false, label %bb1311, label %bb1366
bb1311: ; preds = %bb1303
ret void
bb1366: ; preds = %bb1303
br i1 false, label %bb1374, label %bb1432
bb1374: ; preds = %bb1366
ret void
bb1432: ; preds = %bb1366
br i1 false, label %bb1440, label %bb1495
bb1440: ; preds = %bb1432
ret void
bb1495: ; preds = %bb1432
br i1 false, label %bb1503, label %bb1561
bb1503: ; preds = %bb1495
ret void
bb1561: ; preds = %bb1495
br i1 false, label %bb1569, label %bb1624
bb1569: ; preds = %bb1561
ret void
bb1624: ; preds = %bb1561
br i1 false, label %bb1632, label %bb1654
bb1632: ; preds = %bb1624
store double 0.000000e+00, double* %tmp16.i3859, align 8
%tmp3.i38383852 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3838.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3838.noexc: ; preds = %bb1632
%tmp15.i38473853 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3847.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3847.noexc: ; preds = %tmp3.i3838.noexc
br i1 false, label %invcont1634, label %bb.i3850
bb.i3850: ; preds = %tmp15.i3847.noexc
ret void
invcont1634: ; preds = %tmp15.i3847.noexc
%tmp3.i38173831 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3817.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3817.noexc: ; preds = %invcont1634
%tmp15.i38263832 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3826.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3826.noexc: ; preds = %tmp3.i3817.noexc
br i1 false, label %invcont1636, label %bb.i3829
bb.i3829: ; preds = %tmp15.i3826.noexc
ret void
invcont1636: ; preds = %tmp15.i3826.noexc
%tmp8.i38083811 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* %tmp16.i3862 )
to label %tmp8.i3808.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp8.i3808.noexc: ; preds = %invcont1636
%tmp9.i38093812 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp8.i38083811, double* null )
to label %tmp9.i3809.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp9.i3809.noexc: ; preds = %tmp8.i3808.noexc
%tmp10.i38103813 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp9.i38093812, double* null )
to label %invcont1638 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont1638: ; preds = %tmp9.i3809.noexc
%tmp8.i37983801 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* %tmp16.i3859 )
to label %tmp8.i3798.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp8.i3798.noexc: ; preds = %invcont1638
%tmp9.i37993802 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp8.i37983801, double* null )
to label %tmp9.i3799.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp9.i3799.noexc: ; preds = %tmp8.i3798.noexc
%tmp10.i38003803 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp9.i37993802, double* null )
to label %invcont1640 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont1640: ; preds = %tmp9.i3799.noexc
%tmp3.i3778 = load double* %tmp16.i3859, align 8 ; <double> [#uses=1]
%tmp1643 = invoke i8* @_Znwm( i32 76 )
to label %invcont1642 unwind label %lpad3845 ; <i8*> [#uses=0]
invcont1642: ; preds = %invcont1640
%tmp18.i3770 = fsub double %tmp3.i3778, 0.000000e+00 ; <double> [#uses=0]
invoke fastcc void @_ZN7mrScene9AddObjectEP9mrSurfaceRK8ggStringS4_i( %struct.mrScene* %this, %struct.ggBRDF* null, %struct.ggString* null, %struct.ggString* null, i32 0 )
to label %bb3743 unwind label %lpad3845
bb1654: ; preds = %bb1624
br i1 false, label %bb1662, label %bb1693
bb1662: ; preds = %bb1654
%tmp3.i37143728 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3714.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3714.noexc: ; preds = %bb1662
%tmp15.i37233729 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3723.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3723.noexc: ; preds = %tmp3.i3714.noexc
ret void
bb1693: ; preds = %bb1654
br i1 false, label %bb1701, label %bb1745
bb1701: ; preds = %bb1693
%tmp3.i36493663 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3649.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3649.noexc: ; preds = %bb1701
ret void
bb1745: ; preds = %bb1693
br i1 false, label %bb1753, label %bb1797
bb1753: ; preds = %bb1745
ret void
bb1797: ; preds = %bb1745
br i1 false, label %bb1805, label %bb1847
bb1805: ; preds = %bb1797
ret void
bb1847: ; preds = %bb1797
br i1 false, label %bb1855, label %bb1897
bb1855: ; preds = %bb1847
%tmp3.i34633477 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3463.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3463.noexc: ; preds = %bb1855
%tmp15.i34723478 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3472.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3472.noexc: ; preds = %tmp3.i3463.noexc
br i1 false, label %invcont1857, label %bb.i3475
bb.i3475: ; preds = %tmp15.i3472.noexc
invoke fastcc void @_ZN8ggStringaSEPKc( %struct.ggString* null, i8* null )
to label %invcont1857 unwind label %lpad3845
invcont1857: ; preds = %bb.i3475, %tmp15.i3472.noexc
%tmp1860 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %invcont1859 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont1859: ; preds = %invcont1857
%tmp1862 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp1860, double* null )
to label %invcont1861 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont1861: ; preds = %invcont1859
%tmp1864 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp1862, double* null )
to label %invcont1863 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont1863: ; preds = %invcont1861
%tmp1866 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp1864, double* null )
to label %invcont1865 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont1865: ; preds = %invcont1863
%tmp1868 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp1866, double* null )
to label %invcont1867 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont1867: ; preds = %invcont1865
%tmp1881 = invoke i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null ) zeroext
to label %invcont1880 unwind label %lpad3845 ; <i8> [#uses=0]
invcont1880: ; preds = %invcont1867
%tmp1883 = invoke i8* @_Znwm( i32 24 )
to label %invcont1882 unwind label %lpad3845 ; <i8*> [#uses=0]
invcont1882: ; preds = %invcont1880
invoke fastcc void @_ZN7mrScene9AddObjectEP9mrSurfaceRK8ggStringS4_i( %struct.mrScene* %this, %struct.ggBRDF* null, %struct.ggString* null, %struct.ggString* null, i32 0 )
to label %bb3743 unwind label %lpad3845
bb1897: ; preds = %bb1847
br i1 false, label %bb1905, label %bb1947
bb1905: ; preds = %bb1897
ret void
bb1947: ; preds = %bb1897
br i1 false, label %bb1955, label %bb2000
bb1955: ; preds = %bb1947
ret void
bb2000: ; preds = %bb1947
br i1 false, label %bb2008, label %bb2053
bb2008: ; preds = %bb2000
ret void
bb2053: ; preds = %bb2000
br i1 false, label %bb2061, label %bb2106
bb2061: ; preds = %bb2053
%tmp3.i32433257 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3243.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3243.noexc: ; preds = %bb2061
%tmp15.i32523258 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %bb.i3255 unwind label %lpad3845 ; <i8*> [#uses=0]
bb.i3255: ; preds = %tmp3.i3243.noexc
invoke fastcc void @_ZN8ggStringaSEPKc( %struct.ggString* null, i8* null )
to label %invcont2063 unwind label %lpad3845
invcont2063: ; preds = %bb.i3255
ret void
bb2106: ; preds = %bb2053
%tmp7.i3214 = call i32 @strcmp( i8* %tmp5.i161, i8* getelementptr ([7 x i8]* @.str80, i32 0, i32 0) ) nounwind readonly ; <i32> [#uses=0]
br i1 false, label %bb2114, label %bb2136
bb2114: ; preds = %bb2106
%tmp3.i31923206 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3192.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3192.noexc: ; preds = %bb2114
%tmp15.i32013207 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3201.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3201.noexc: ; preds = %tmp3.i3192.noexc
br i1 false, label %invcont2116, label %bb.i3204
bb.i3204: ; preds = %tmp15.i3201.noexc
ret void
invcont2116: ; preds = %tmp15.i3201.noexc
%tmp3.i31713185 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3171.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3171.noexc: ; preds = %invcont2116
%tmp15.i31803186 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3180.noexc unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i3180.noexc: ; preds = %tmp3.i3171.noexc
br i1 false, label %invcont2118, label %bb.i3183
bb.i3183: ; preds = %tmp15.i3180.noexc
ret void
invcont2118: ; preds = %tmp15.i3180.noexc
%tmp8.i31623165 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %tmp8.i3162.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp8.i3162.noexc: ; preds = %invcont2118
%tmp9.i31633166 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp8.i31623165, double* null )
to label %tmp9.i3163.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
tmp9.i3163.noexc: ; preds = %tmp8.i3162.noexc
%tmp10.i31643167 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp9.i31633166, double* null )
to label %invcont2120 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont2120: ; preds = %tmp9.i3163.noexc
%tmp2123 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %invcont2122 unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont2122: ; preds = %invcont2120
%tmp2125 = invoke i8* @_Znwm( i32 36 )
to label %invcont2124 unwind label %lpad3845 ; <i8*> [#uses=0]
invcont2124: ; preds = %invcont2122
invoke fastcc void @_ZN7mrScene9AddObjectEP9mrSurfaceRK8ggStringS4_i( %struct.mrScene* %this, %struct.ggBRDF* null, %struct.ggString* null, %struct.ggString* null, i32 0 )
to label %bb3743 unwind label %lpad3845
bb2136: ; preds = %bb2106
%tmp7.i3128 = call i32 @strcmp( i8* %tmp5.i161, i8* getelementptr ([11 x i8]* @.str81, i32 0, i32 0) ) nounwind readonly ; <i32> [#uses=0]
br i1 false, label %bb2144, label %bb3336
bb2144: ; preds = %bb2136
%tmp6.i.i31173123 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit3124 unwind label %lpad3845 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit3124: ; preds = %bb2144
%tmp3.i30983112 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i3098.noexc unwind label %lpad3921 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i3098.noexc: ; preds = %_ZN8ggStringC1Ei.exit3124
%tmp15.i31073113 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i3107.noexc unwind label %lpad3921 ; <i8*> [#uses=0]
tmp15.i3107.noexc: ; preds = %tmp3.i3098.noexc
br i1 false, label %invcont2147, label %bb.i3110
bb.i3110: ; preds = %tmp15.i3107.noexc
ret void
invcont2147: ; preds = %tmp15.i3107.noexc
%tmp2161 = invoke i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null ) zeroext
to label %invcont2160 unwind label %lpad3921 ; <i8> [#uses=0]
invcont2160: ; preds = %invcont2147
%tmp4.i30933094 = invoke fastcc %struct.ggSpectrum* @_ZN5ggBSTI10ggSpectrumE4findERK8ggString3( %"struct.ggBSTNode<ggSpectrum>"* null, %struct.ggString* null )
to label %invcont2164 unwind label %lpad3921 ; <%struct.ggSpectrum*> [#uses=0]
invcont2164: ; preds = %invcont2160
br i1 false, label %bb2170, label %bb2181
bb2170: ; preds = %invcont2164
ret void
bb2181: ; preds = %invcont2164
invoke fastcc void @_ZN8ggStringD1Ev( %struct.ggString* null )
to label %bb3743 unwind label %lpad3845
bb3336: ; preds = %bb2136
br i1 false, label %bb3344, label %bb3734
bb3344: ; preds = %bb3336
%tmp6.i.i773779 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit780 unwind label %lpad3845 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit780: ; preds = %bb3344
%tmp6.i.i765771 = invoke i8* @_Znam( i32 12 )
to label %_ZN8ggStringC1Ei.exit772 unwind label %lpad4025 ; <i8*> [#uses=0]
_ZN8ggStringC1Ei.exit772: ; preds = %_ZN8ggStringC1Ei.exit780
%tmp3.i746760 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i746.noexc unwind label %lpad4029 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i746.noexc: ; preds = %_ZN8ggStringC1Ei.exit772
%tmp15.i755761 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i755.noexc unwind label %lpad4029 ; <i8*> [#uses=0]
tmp15.i755.noexc: ; preds = %tmp3.i746.noexc
br i1 false, label %invcont3348, label %bb.i758
bb.i758: ; preds = %tmp15.i755.noexc
ret void
invcont3348: ; preds = %tmp15.i755.noexc
%tmp3.i726740 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i726.noexc unwind label %lpad4029 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i726.noexc: ; preds = %invcont3348
%tmp15.i735741 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i735.noexc unwind label %lpad4029 ; <i8*> [#uses=0]
tmp15.i735.noexc: ; preds = %tmp3.i726.noexc
br i1 false, label %bb3458, label %bb.i738
bb.i738: ; preds = %tmp15.i735.noexc
ret void
bb3458: ; preds = %tmp15.i735.noexc
br i1 false, label %bb3466, label %bb3491
bb3466: ; preds = %bb3458
%tmp3469 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, double* null )
to label %invcont3468 unwind label %lpad4029 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont3468: ; preds = %bb3466
%tmp3471 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp3469, double* null )
to label %invcont3470 unwind label %lpad4029 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=1]
invcont3470: ; preds = %invcont3468
%tmp3473 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERi( %"struct.std::basic_istream<char,std::char_traits<char> >"* %tmp3471, i32* null )
to label %invcont3472 unwind label %lpad4029 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
invcont3472: ; preds = %invcont3470
%tmp3475 = invoke i8* @_Znwm( i32 7196 )
to label %invcont3474 unwind label %lpad4029 ; <i8*> [#uses=1]
invcont3474: ; preds = %invcont3472
invoke fastcc void @_ZN13ggSolidNoise3C1Ev( %struct.ggSolidNoise3* null )
to label %_ZN22ggCoverageSolidTextureC1Eddi.exit unwind label %lpad4045
_ZN22ggCoverageSolidTextureC1Eddi.exit: ; preds = %invcont3474
%tmp34823483 = bitcast i8* %tmp3475 to %struct.ggBRDF* ; <%struct.ggBRDF*> [#uses=2]
invoke fastcc void @_ZN5ggBSTI14ggSolidTextureE17InsertIntoSubtreeERK8ggStringPS0_RP9ggBSTNodeIS0_E( %"struct.ggBST<ggSolidTexture>"* null, %struct.ggString* null, %struct.ggBRDF* %tmp34823483, %"struct.ggBSTNode<ggSolidTexture>"** null )
to label %bb3662 unwind label %lpad4029
bb3491: ; preds = %bb3458
ret void
bb3662: ; preds = %_ZN22ggCoverageSolidTextureC1Eddi.exit
invoke fastcc void @_ZN8ggStringD1Ev( %struct.ggString* null )
to label %invcont3663 unwind label %lpad4025
invcont3663: ; preds = %bb3662
invoke fastcc void @_ZN8ggStringD1Ev( %struct.ggString* null )
to label %bb3743 unwind label %lpad3845
bb3734: ; preds = %bb3336
ret void
bb3743: ; preds = %invcont3663, %bb2181, %invcont2124, %invcont1882, %invcont1642, %bb368, %bb353, %invcont335, %bb3743.preheader
%tex1.3 = phi %struct.ggBRDF* [ undef, %bb3743.preheader ], [ %tex1.3, %bb368 ], [ %tex1.3, %invcont1642 ], [ %tex1.3, %invcont1882 ], [ %tex1.3, %invcont2124 ], [ %tex1.3, %bb2181 ], [ %tex1.3, %invcont335 ], [ %tmp34823483, %invcont3663 ], [ %tex1.3, %bb353 ] ; <%struct.ggBRDF*> [#uses=7]
%tmp3.i312325 = invoke %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_( %"struct.std::basic_istream<char,std::char_traits<char> >"* %surfaces, i8* null )
to label %tmp3.i312.noexc unwind label %lpad3845 ; <%"struct.std::basic_istream<char,std::char_traits<char> >"*> [#uses=0]
tmp3.i312.noexc: ; preds = %bb3743
%tmp15.i327 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %tmp15.i.noexc326 unwind label %lpad3845 ; <i8*> [#uses=0]
tmp15.i.noexc326: ; preds = %tmp3.i312.noexc
br i1 false, label %invcont3745, label %bb.i323
bb.i323: ; preds = %tmp15.i.noexc326
ret void
invcont3745: ; preds = %tmp15.i.noexc326
%tmp3759 = invoke i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv( %"struct.std::basic_ios<char,std::char_traits<char> >"* null )
to label %invcont3758 unwind label %lpad3845 ; <i8*> [#uses=0]
invcont3758: ; preds = %invcont3745
%tmp5.i161 = getelementptr %"struct.ggString::StringRep"* null, i32 0, i32 2, i32 0 ; <i8*> [#uses=2]
br i1 false, label %bb333, label %bb345
lpad: ; preds = %entry
ret void
lpad3825: ; preds = %_ZN8ggStringC1Ei.exit
ret void
lpad3829: ; preds = %_ZN8ggStringC1Ei.exit96
ret void
lpad3833: ; preds = %_ZN8ggStringC1Ei.exit104
ret void
lpad3837: ; preds = %_ZN8ggStringC1Ei.exit112
ret void
lpad3841: ; preds = %_ZN8ggStringC1Ei.exit129
ret void
lpad3845: ; preds = %invcont3745, %tmp3.i312.noexc, %bb3743, %invcont3663, %bb3344, %bb2181, %bb2144, %invcont2124, %invcont2122, %invcont2120, %tmp9.i3163.noexc, %tmp8.i3162.noexc, %invcont2118, %tmp3.i3171.noexc, %invcont2116, %tmp3.i3192.noexc, %bb2114, %bb.i3255, %tmp3.i3243.noexc, %bb2061, %invcont1882, %invcont1880, %invcont1867, %invcont1865, %invcont1863, %invcont1861, %invcont1859, %invcont1857, %bb.i3475, %tmp3.i3463.noexc, %bb1855, %bb1701, %tmp3.i3714.noexc, %bb1662, %invcont1642, %invcont1640, %tmp9.i3799.noexc, %tmp8.i3798.noexc, %invcont1638, %tmp9.i3809.noexc, %tmp8.i3808.noexc, %invcont1636, %tmp3.i3817.noexc, %invcont1634, %tmp3.i3838.noexc, %bb1632, %bb368, %bb353, %tmp3.i167.noexc, %bb333, %tmp3.i.noexc, %_ZN13mrSurfaceListC1Ev.exit, %_ZN8ggStringC1Ei.exit139
ret void
lpad3849: ; preds = %invcont294
ret void
lpad3921: ; preds = %invcont2160, %invcont2147, %tmp3.i3098.noexc, %_ZN8ggStringC1Ei.exit3124
ret void
lpad4025: ; preds = %bb3662, %_ZN8ggStringC1Ei.exit780
ret void
lpad4029: ; preds = %_ZN22ggCoverageSolidTextureC1Eddi.exit, %invcont3472, %invcont3470, %invcont3468, %bb3466, %tmp3.i726.noexc, %invcont3348, %tmp3.i746.noexc, %_ZN8ggStringC1Ei.exit772
ret void
lpad4045: ; preds = %invcont3474
ret void
}
declare fastcc void @_ZN8ggStringD1Ev(%struct.ggString*)
declare i8* @_Znam(i32)
declare fastcc void @_ZN8ggStringaSEPKc(%struct.ggString*, i8*)
declare i32 @strcmp(i8*, i8*) nounwind readonly
declare %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERi(%"struct.std::basic_istream<char,std::char_traits<char> >"*, i32*)
declare i8* @_Znwm(i32)
declare i8* @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv(%"struct.std::basic_ios<char,std::char_traits<char> >"*)
declare %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZNSirsERd(%"struct.std::basic_istream<char,std::char_traits<char> >"*, double*)
declare %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(%"struct.std::basic_istream<char,std::char_traits<char> >"*, i8*)
declare fastcc void @_ZN13ggSolidNoise3C1Ev(%struct.ggSolidNoise3*)
declare i8 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(%"struct.std::basic_ios<char,std::char_traits<char> >"*) zeroext
declare fastcc %struct.ggSpectrum* @_ZN5ggBSTI10ggSpectrumE4findERK8ggString3(%"struct.ggBSTNode<ggSpectrum>"*, %struct.ggString*)
declare fastcc void @_ZN5ggBSTI14ggSolidTextureE17InsertIntoSubtreeERK8ggStringPS0_RP9ggBSTNodeIS0_E(%"struct.ggBST<ggSolidTexture>"*, %struct.ggString*, %struct.ggBRDF*, %"struct.ggBSTNode<ggSolidTexture>"**)
declare fastcc void @_ZN7mrScene9AddObjectEP9mrSurfaceRK8ggStringS4_i(%struct.mrScene*, %struct.ggBRDF*, %struct.ggString*, %struct.ggString*, i32)

View File

@ -4,7 +4,7 @@
%struct.YY = type { i64 }
%struct.ZZ = type opaque
define i8 @f(%struct.XX*** %fontMap, %struct.XX* %uen) signext {
define signext i8 @f(%struct.XX*** %fontMap, %struct.XX* %uen) {
entry:
%tmp45 = add i16 0, 1 ; <i16> [#uses=2]
br i1 false, label %bb124, label %bb53

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86
define i16 @t(i32 %depth) signext nounwind {
define signext i16 @t(i32 %depth) nounwind {
entry:
br i1 false, label %bb74, label %bb
bb: ; preds = %entry

View File

@ -6,7 +6,7 @@
%struct.pthread_mutex_t = type { i32, [40 x i8] }
@iodbcdm_global_lock = external global %struct.pthread_mutex_t ; <%struct.pthread_mutex_t*> [#uses=1]
define i16 @SQLDriversW(i8* %henv, i16 zeroext %fDir, i32* %szDrvDesc, i16 signext %cbDrvDescMax, i16* %pcbDrvDesc, i32* %szDrvAttr, i16 signext %cbDrvAttrMax, i16* %pcbDrvAttr) signext nounwind {
define i16 @SQLDriversW(i8* %henv, i16 zeroext %fDir, i32* %szDrvDesc, i16 signext %cbDrvDescMax, i16* %pcbDrvDesc, i32* %szDrvAttr, i16 signext %cbDrvAttrMax, i16* %pcbDrvAttr) nounwind {
entry:
%tmp12 = bitcast i8* %henv to %struct.GENV_t* ; <%struct.GENV_t*> [#uses=1]
br i1 true, label %bb28, label %bb
@ -23,7 +23,7 @@ bb74: ; preds = %bb37
bb92: ; preds = %bb74, %bb37
%tmp95180 = shl i16 %cbDrvAttrMax, 2 ; <i16> [#uses=1]
%tmp100178 = shl i16 %cbDrvDescMax, 2 ; <i16> [#uses=1]
%tmp113 = tail call i16 @SQLDrivers_Internal( i8* %henv, i16 zeroext %fDir, i8* null, i16 signext %tmp100178, i16* %pcbDrvDesc, i8* null, i16 signext %tmp95180, i16* %pcbDrvAttr, i8 zeroext 87 ) signext nounwind ; <i16> [#uses=1]
%tmp113 = tail call i16 @SQLDrivers_Internal( i8* %henv, i16 zeroext %fDir, i8* null, i16 signext %tmp100178, i16* %pcbDrvDesc, i8* null, i16 signext %tmp95180, i16* %pcbDrvAttr, i8 zeroext 87 ) nounwind ; <i16> [#uses=1]
br i1 false, label %done, label %bb137
bb137: ; preds = %bb92
ret i16 0
@ -41,6 +41,6 @@ bb167: ; preds = %done
declare i32 @pthread_mutex_unlock(%struct.pthread_mutex_t*)
declare i16 @SQLDrivers_Internal(i8*, i16 zeroext , i8*, i16 signext , i16*, i8*, i16 signext , i16*, i8 zeroext ) signext nounwind
declare i16 @SQLDrivers_Internal(i8*, i16 zeroext , i8*, i16 signext , i16*, i8*, i16 signext , i16*, i8 zeroext ) nounwind
declare void @trace_SQLDriversW(i32, i32, i8*, i16 zeroext , i32*, i16 signext , i16*, i32*, i16 signext , i16*)

View File

@ -75,7 +75,7 @@ bb5334: ; preds = %bb3314
bb5484: ; preds = %bb3314
ret void
bb5657: ; preds = %bb3314
%tmp5661 = invoke i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE( %struct.wxDateTime* %this, %"struct.wxDateTime::TimeZone"* %tz ) zeroext
%tmp5661 = invoke zeroext i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE( %struct.wxDateTime* %this, %"struct.wxDateTime::TimeZone"* %tz )
to label %invcont5660 unwind label %lpad ; <i16> [#uses=0]
invcont5660: ; preds = %bb5657
ret void
@ -120,7 +120,7 @@ invcont5814: ; preds = %bb448.i8694, %bb265.i8606
invoke void (%struct.wxString*, i32*, ...)* @_ZN8wxString6FormatEPKwz( %struct.wxString* noalias sret null, i32* null, i32 %tmp58165817 )
to label %invcont5831 unwind label %lpad
invcont5831: ; preds = %invcont5814
%tmp5862 = invoke i8 @_ZN12wxStringBase10ConcatSelfEmPKwm( %struct.wxStringBase* null, i32 0, i32* null, i32 0 ) zeroext
%tmp5862 = invoke zeroext i8 @_ZN12wxStringBase10ConcatSelfEmPKwm( %struct.wxStringBase* null, i32 0, i32* null, i32 0 )
to label %bb7834 unwind label %lpad8185 ; <i8> [#uses=0]
bb5968: ; preds = %bb3314
invoke void (%struct.wxString*, i32*, ...)* @_ZN8wxString6FormatEPKwz( %struct.wxString* noalias sret null, i32* null, i32 0 )
@ -158,11 +158,11 @@ lpad8185: ; preds = %invcont5831
declare void @_Z10wxOnAssertPKwiPKcS0_S0_(i32*, i32, i8*, i32*, i32*)
declare i8 @_ZN12wxStringBase10ConcatSelfEmPKwm(%struct.wxStringBase*, i32, i32*, i32) zeroext
declare zeroext i8 @_ZN12wxStringBase10ConcatSelfEmPKwm(%struct.wxStringBase*, i32, i32*, i32)
declare %struct.tm* @gmtime_r(i32*, %struct.tm*)
declare i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE(%struct.wxDateTime*, %"struct.wxDateTime::TimeZone"*) zeroext
declare zeroext i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE(%struct.wxDateTime*, %"struct.wxDateTime::TimeZone"*)
declare %struct.wxStringBase* @_ZN12wxStringBase6appendEmw(%struct.wxStringBase*, i32, i32)

View File

@ -1,59 +0,0 @@
; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep movd | count 1
; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep movq
; PR2677
%struct.Bigint = type { %struct.Bigint*, i32, i32, i32, i32, [1 x i32] }
define double @_Z7qstrtodPKcPS0_Pb(i8* %s00, i8** %se, i8* %ok) nounwind {
entry:
br label %bb163
bb151: ; preds = %entry
br label %bb163
bb163: ; preds = %bb151, %entry
%tmp366 = load double* null, align 8 ; <double> [#uses=1]
%tmp368 = fmul double %tmp366, 0.000000e+00 ; <double> [#uses=1]
%tmp368226 = bitcast double %tmp368 to i64 ; <i64> [#uses=1]
br label %bb5.i
bb5.i: ; preds = %bb5.i57.i, %bb163
%b.0.i = phi %struct.Bigint* [ null, %bb163 ] ; <%struct.Bigint*> [#uses=1]
%tmp3.i7.i728 = load i32* null, align 4 ; <i32> [#uses=1]
br label %bb.i27.i
bb.i27.i: ; preds = %bb.i27.i, %bb5.i
%tmp23.i20.i = lshr i32 0, 16 ; <i32> [#uses=1]
br label %bb5.i57.i
bb5.i57.i: ; preds = %bb.i27.i
%tmp50.i35.i = load i32* null, align 4 ; <i32> [#uses=1]
%tmp51.i36.i = add i32 %tmp50.i35.i, 1 ; <i32> [#uses=2]
%tmp2.i.i37.i = shl i32 1, %tmp51.i36.i ; <i32> [#uses=2]
%tmp4.i.i38.i = shl i32 %tmp2.i.i37.i, 2 ; <i32> [#uses=1]
%tmp7.i.i39.i = add i32 %tmp4.i.i38.i, 28 ; <i32> [#uses=1]
%tmp8.i.i40.i = malloc i8, i32 %tmp7.i.i39.i ; <i8*> [#uses=1]
%tmp9.i.i41.i = bitcast i8* %tmp8.i.i40.i to %struct.Bigint* ; <%struct.Bigint*> [#uses=2]
store i32 %tmp51.i36.i, i32* null, align 8
store i32 %tmp2.i.i37.i, i32* null, align 4
free %struct.Bigint* %b.0.i
store i32 %tmp23.i20.i, i32* null, align 4
%tmp74.i61.i = add i32 %tmp3.i7.i728, 1 ; <i32> [#uses=1]
store i32 %tmp74.i61.i, i32* null, align 4
br label %bb7.i
bb7.i: ; preds = %bb5.i57.i
%tmp514 = load i32* null, align 4 ; <i32> [#uses=1]
%tmp515 = sext i32 %tmp514 to i64 ; <i64> [#uses=1]
%tmp516 = shl i64 %tmp515, 2 ; <i64> [#uses=1]
%tmp517 = add i64 %tmp516, 8 ; <i64> [#uses=1]
%tmp519 = getelementptr %struct.Bigint* %tmp9.i.i41.i, i32 0, i32 3 ; <i32*> [#uses=1]
%tmp523 = bitcast i32* %tmp519 to i8* ; <i8*> [#uses=1]
call void @llvm.memcpy.i64( i8* null, i8* %tmp523, i64 %tmp517, i32 1 )
%tmp524136 = bitcast i64 %tmp368226 to double ; <double> [#uses=1]
store double %tmp524136, double* null
unreachable
}
declare void @llvm.memcpy.i64(i8*, i8*, i64, i32) nounwind

View File

@ -2,11 +2,11 @@
; RUN: llc < %s -march=x86 -mattr=+sse2 | grep fld | count 2
; check 'inreg' attribute for sse_regparm
define double @foo1() inreg nounwind {
define inreg double @foo1() nounwind {
ret double 1.0
}
define float @foo2() inreg nounwind {
define inreg float @foo2() nounwind {
ret float 1.0
}

View File

@ -1,38 +0,0 @@
; RUN: llc < %s -mtriple=i386-apple-darwin9.6 -regalloc=fast -disable-fp-elim
; rdar://6538384
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
%struct.Lit = type { i32 }
%struct.StreamBuffer = type { %struct.FILE*, [1048576 x i8], i32, i32 }
%struct.__sFILEX = type opaque
%struct.__sbuf = type { i8*, i32 }
declare fastcc i32 @_Z8parseIntI12StreamBufferEiRT_(%struct.StreamBuffer*)
declare i8* @llvm.eh.exception() nounwind
define i32 @main(i32 %argc, i8** nocapture %argv) noreturn {
entry:
%0 = invoke fastcc i32 @_Z8parseIntI12StreamBufferEiRT_(%struct.StreamBuffer* null)
to label %bb1.i16.i.i unwind label %lpad.i.i ; <i32> [#uses=0]
bb1.i16.i.i: ; preds = %entry
br i1 false, label %bb.i.i.i.i, label %_ZN3vecI3LitE4pushERKS0_.exit.i.i.i
bb.i.i.i.i: ; preds = %bb1.i16.i.i
br label %_ZN3vecI3LitE4pushERKS0_.exit.i.i.i
_ZN3vecI3LitE4pushERKS0_.exit.i.i.i: ; preds = %bb.i.i.i.i, %bb1.i16.i.i
%lits.i.i.0.0 = phi %struct.Lit* [ null, %bb1.i16.i.i ], [ null, %bb.i.i.i.i ] ; <%struct.Lit*> [#uses=1]
%1 = invoke fastcc i32 @_Z8parseIntI12StreamBufferEiRT_(%struct.StreamBuffer* null)
to label %.noexc21.i.i unwind label %lpad.i.i ; <i32> [#uses=0]
.noexc21.i.i: ; preds = %_ZN3vecI3LitE4pushERKS0_.exit.i.i.i
unreachable
lpad.i.i: ; preds = %_ZN3vecI3LitE4pushERKS0_.exit.i.i.i, %entry
%lits.i.i.0.3 = phi %struct.Lit* [ %lits.i.i.0.0, %_ZN3vecI3LitE4pushERKS0_.exit.i.i.i ], [ null, %entry ] ; <%struct.Lit*> [#uses=1]
%eh_ptr.i.i = call i8* @llvm.eh.exception() ; <i8*> [#uses=0]
free %struct.Lit* %lits.i.i.0.3
unreachable
}

View File

@ -1,71 +0,0 @@
; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin8 -pre-alloc-split -regalloc=linearscan
define i32 @main() nounwind {
bb4.i.thread:
br label %bb5.i4
bb16: ; preds = %bb111.i
%phitmp = add i32 %indvar.reg2mem.4, 1 ; <i32> [#uses=2]
switch i32 %indvar.reg2mem.4, label %bb100.i [
i32 0, label %bb5.i4
i32 1, label %bb5.i4
i32 2, label %bb5.i4
i32 5, label %bb.i14.i
i32 6, label %bb.i14.i
i32 7, label %bb.i14.i
]
bb5.i4: ; preds = %bb16, %bb16, %bb16, %bb4.i.thread
br i1 false, label %bb102.i, label %bb103.i
bb.i14.i: ; preds = %bb16, %bb16, %bb16
%0 = malloc [600 x i32] ; <[600 x i32]*> [#uses=0]
%1 = icmp eq i32 %phitmp, 7 ; <i1> [#uses=1]
%tl.0.i = select i1 %1, float 1.000000e+02, float 1.000000e+00 ; <float> [#uses=1]
%2 = icmp eq i32 %phitmp, 8 ; <i1> [#uses=1]
%tu.0.i = select i1 %2, float 1.000000e+02, float 1.000000e+00 ; <float> [#uses=1]
br label %bb30.i
bb30.i: ; preds = %bb36.i, %bb.i14.i
%i.1173.i = phi i32 [ 0, %bb.i14.i ], [ %indvar.next240.i, %bb36.i ] ; <i32> [#uses=3]
%3 = icmp eq i32 0, %i.1173.i ; <i1> [#uses=1]
br i1 %3, label %bb33.i, label %bb34.i
bb33.i: ; preds = %bb30.i
store float %tl.0.i, float* null, align 4
br label %bb36.i
bb34.i: ; preds = %bb30.i
%4 = icmp eq i32 0, %i.1173.i ; <i1> [#uses=1]
br i1 %4, label %bb35.i, label %bb36.i
bb35.i: ; preds = %bb34.i
store float %tu.0.i, float* null, align 4
br label %bb36.i
bb36.i: ; preds = %bb35.i, %bb34.i, %bb33.i
%indvar.next240.i = add i32 %i.1173.i, 1 ; <i32> [#uses=1]
br label %bb30.i
bb100.i: ; preds = %bb16
ret i32 0
bb102.i: ; preds = %bb5.i4
br label %bb103.i
bb103.i: ; preds = %bb102.i, %bb5.i4
%indvar.reg2mem.4 = phi i32 [ 0, %bb5.i4 ], [ 0, %bb102.i ] ; <i32> [#uses=2]
%n.0.reg2mem.1.i = phi i32 [ 0, %bb102.i ], [ 0, %bb5.i4 ] ; <i32> [#uses=1]
%5 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %5, label %bb111.i, label %bb108.i
bb108.i: ; preds = %bb103.i
ret i32 0
bb111.i: ; preds = %bb103.i
%6 = icmp sgt i32 %n.0.reg2mem.1.i, 7 ; <i1> [#uses=1]
br i1 %6, label %bb16, label %bb112.i
bb112.i: ; preds = %bb111.i
unreachable
}

View File

@ -1,264 +0,0 @@
; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic -stats |& grep {machine-licm} | grep 2
; rdar://7274692
%0 = type { [125 x i32] }
%1 = type { i32 }
%struct..5sPragmaType = type { i8*, i32 }
%struct.AggInfo = type { i8, i8, i32, %struct.ExprList*, i32, %struct.AggInfo_col*, i32, i32, i32, %struct.AggInfo_func*, i32, i32 }
%struct.AggInfo_col = type { %struct.Table*, i32, i32, i32, i32, %struct.Expr* }
%struct.AggInfo_func = type { %struct.Expr*, %struct.FuncDef*, i32, i32 }
%struct.AuxData = type { i8*, void (i8*)* }
%struct.Bitvec = type { i32, i32, i32, %0 }
%struct.BtCursor = type { %struct.Btree*, %struct.BtShared*, %struct.BtCursor*, %struct.BtCursor*, i32 (i8*, i32, i8*, i32, i8*)*, i8*, i32, %struct.MemPage*, i32, %struct.CellInfo, i8, i8, i8*, i64, i32, i8, i32* }
%struct.BtLock = type { %struct.Btree*, i32, i8, %struct.BtLock* }
%struct.BtShared = type { %struct.Pager*, %struct.sqlite3*, %struct.BtCursor*, %struct.MemPage*, i8, i8, i8, i8, i8, i8, i8, i8, i32, i16, i16, i32, i32, i32, i32, i8, i32, i8*, void (i8*)*, %struct.sqlite3_mutex*, %struct.BusyHandler, i32, %struct.BtShared*, %struct.BtLock*, %struct.Btree* }
%struct.Btree = type { %struct.sqlite3*, %struct.BtShared*, i8, i8, i8, i32, %struct.Btree*, %struct.Btree* }
%struct.BtreeMutexArray = type { i32, [11 x %struct.Btree*] }
%struct.BusyHandler = type { i32 (i8*, i32)*, i8*, i32 }
%struct.CellInfo = type { i8*, i64, i32, i32, i16, i16, i16, i16 }
%struct.CollSeq = type { i8*, i8, i8, i8*, i32 (i8*, i32, i8*, i32, i8*)*, void (i8*)* }
%struct.Column = type { i8*, %struct.Expr*, i8*, i8*, i8, i8, i8, i8 }
%struct.Context = type { i64, i32, %struct.Fifo }
%struct.CountCtx = type { i64 }
%struct.Cursor = type { %struct.BtCursor*, i32, i64, i64, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i64, %struct.Btree*, i32, i8*, i64, i8*, %struct.KeyInfo*, i32, i64, %struct.sqlite3_vtab_cursor*, %struct.sqlite3_module*, i32, i32, i32*, i32*, i8* }
%struct.Db = type { i8*, %struct.Btree*, i8, i8, i8*, void (i8*)*, %struct.Schema* }
%struct.DbPage = type { %struct.Pager*, i32, %struct.DbPage*, %struct.DbPage*, %struct.PagerLruLink, %struct.DbPage*, i8, i8, i8, i8, i8, i16, %struct.DbPage*, %struct.DbPage*, i8* }
%struct.Expr = type { i8, i8, i16, %struct.CollSeq*, %struct.Expr*, %struct.Expr*, %struct.ExprList*, %struct..5sPragmaType, %struct..5sPragmaType, i32, i32, %struct.AggInfo*, i32, i32, %struct.Select*, %struct.Table*, i32 }
%struct.ExprList = type { i32, i32, i32, %struct.ExprList_item* }
%struct.ExprList_item = type { %struct.Expr*, i8*, i8, i8, i8 }
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct..5sPragmaType, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct..5sPragmaType, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct..5sPragmaType, i32, i64 }
%struct.FKey = type { %struct.Table*, %struct.FKey*, i8*, %struct.FKey*, i32, %struct.sColMap*, i8, i8, i8, i8 }
%struct.Fifo = type { i32, %struct.FifoPage*, %struct.FifoPage* }
%struct.FifoPage = type { i32, i32, i32, %struct.FifoPage*, [1 x i64] }
%struct.FuncDef = type { i16, i8, i8, i8, i8*, %struct.FuncDef*, void (%struct.sqlite3_context*, i32, %struct.Mem**)*, void (%struct.sqlite3_context*, i32, %struct.Mem**)*, void (%struct.sqlite3_context*)*, [1 x i8] }
%struct.Hash = type { i8, i8, i32, i32, %struct.HashElem*, %struct._ht* }
%struct.HashElem = type { %struct.HashElem*, %struct.HashElem*, i8*, i8*, i32 }
%struct.IdList = type { %struct..5sPragmaType*, i32, i32 }
%struct.Index = type { i8*, i32, i32*, i32*, %struct.Table*, i32, i8, i8, i8*, %struct.Index*, %struct.Schema*, i8*, i8** }
%struct.KeyInfo = type { %struct.sqlite3*, i8, i8, i8, i32, i8*, [1 x %struct.CollSeq*] }
%struct.Mem = type { %struct.CountCtx, double, %struct.sqlite3*, i8*, i32, i16, i8, i8, void (i8*)* }
%struct.MemPage = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, [5 x %struct._OvflCell], %struct.BtShared*, i8*, %struct.DbPage*, i32, %struct.MemPage* }
%struct.Module = type { %struct.sqlite3_module*, i8*, i8*, void (i8*)* }
%struct.Op = type { i8, i8, i8, i8, i32, i32, i32, %1 }
%struct.Pager = type { %struct.sqlite3_vfs*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.Bitvec*, %struct.Bitvec*, i8*, i8*, i8*, i8*, %struct.sqlite3_file*, %struct.sqlite3_file*, %struct.sqlite3_file*, %struct.BusyHandler*, %struct.PagerLruList, %struct.DbPage*, %struct.DbPage*, %struct.DbPage*, i64, i64, i64, i64, i64, i32, void (%struct.DbPage*, i32)*, void (%struct.DbPage*, i32)*, i32, %struct.DbPage**, i8*, [16 x i8] }
%struct.PagerLruLink = type { %struct.DbPage*, %struct.DbPage* }
%struct.PagerLruList = type { %struct.DbPage*, %struct.DbPage*, %struct.DbPage* }
%struct.Schema = type { i32, %struct.Hash, %struct.Hash, %struct.Hash, %struct.Hash, %struct.Table*, i8, i8, i16, i32, %struct.sqlite3* }
%struct.Select = type { %struct.ExprList*, i8, i8, i8, i8, i8, i8, i8, %struct.SrcList*, %struct.Expr*, %struct.ExprList*, %struct.Expr*, %struct.ExprList*, %struct.Select*, %struct.Select*, %struct.Select*, %struct.Expr*, %struct.Expr*, i32, i32, [3 x i32] }
%struct.SrcList = type { i16, i16, [1 x %struct.SrcList_item] }
%struct.SrcList_item = type { i8*, i8*, i8*, %struct.Table*, %struct.Select*, i8, i8, i32, %struct.Expr*, %struct.IdList*, i64 }
%struct.Table = type { i8*, i32, %struct.Column*, i32, %struct.Index*, i32, %struct.Select*, i32, %struct.Trigger*, %struct.FKey*, i8*, %struct.Expr*, i32, i8, i8, i8, i8, i8, i8, i8, %struct.Module*, %struct.sqlite3_vtab*, i32, i8**, %struct.Schema* }
%struct.Trigger = type { i8*, i8*, i8, i8, %struct.Expr*, %struct.IdList*, %struct..5sPragmaType, %struct.Schema*, %struct.Schema*, %struct.TriggerStep*, %struct.Trigger* }
%struct.TriggerStep = type { i32, i32, %struct.Trigger*, %struct.Select*, %struct..5sPragmaType, %struct.Expr*, %struct.ExprList*, %struct.IdList*, %struct.TriggerStep*, %struct.TriggerStep* }
%struct.Vdbe = type { %struct.sqlite3*, %struct.Vdbe*, %struct.Vdbe*, i32, i32, %struct.Op*, i32, i32, i32*, %struct.Mem**, %struct.Mem*, i32, %struct.Cursor**, i32, %struct.Mem*, i8**, i32, i32, i32, %struct.Mem*, i32, i32, %struct.Fifo, i32, i32, %struct.Context*, i32, i32, i32, i32, i32, [25 x i32], i32, i32, i8**, i8*, %struct.Mem*, i8, i8, i8, i8, i8, i8, i32, i64, i32, %struct.BtreeMutexArray, i32, i8*, i32 }
%struct.VdbeFunc = type { %struct.FuncDef*, i32, [1 x %struct.AuxData] }
%struct._OvflCell = type { i8*, i16 }
%struct._RuneCharClass = type { [14 x i8], i32 }
%struct._RuneEntry = type { i32, i32, i32, i32* }
%struct._RuneLocale = type { [8 x i8], [32 x i8], i32 (i8*, i32, i8**)*, i32 (i32, i8*, i32, i8**)*, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, i8*, i32, i32, %struct._RuneCharClass* }
%struct._RuneRange = type { i32, %struct._RuneEntry* }
%struct.__sFILEX = type opaque
%struct._ht = type { i32, %struct.HashElem* }
%struct.callback_data = type { %struct.sqlite3*, i32, i32, %struct.FILE*, i32, i32, i32, i8*, [20 x i8], [100 x i32], [100 x i32], [20 x i8], %struct.previous_mode_data, [1024 x i8], i8* }
%struct.previous_mode_data = type { i32, i32, i32, [100 x i32] }
%struct.sColMap = type { i32, i8* }
%struct.sqlite3 = type { %struct.sqlite3_vfs*, i32, %struct.Db*, i32, i32, i32, i32, i8, i8, i8, i8, i32, %struct.CollSeq*, i64, i64, i32, i32, i32, %struct.sqlite3_mutex*, %struct.sqlite3InitInfo, i32, i8**, %struct.Vdbe*, i32, void (i8*, i8*)*, i8*, void (i8*, i8*, i64)*, i8*, i8*, i32 (i8*)*, i8*, void (i8*)*, i8*, void (i8*, i32, i8*, i8*, i64)*, void (i8*, %struct.sqlite3*, i32, i8*)*, void (i8*, %struct.sqlite3*, i32, i8*)*, i8*, %struct.Mem*, i8*, i8*, %union.anon, i32 (i8*, i32, i8*, i8*, i8*, i8*)*, i8*, i32 (i8*)*, i8*, i32, %struct.Hash, %struct.Table*, %struct.sqlite3_vtab**, i32, %struct.Hash, %struct.Hash, %struct.BusyHandler, i32, [2 x %struct.Db], i8 }
%struct.sqlite3InitInfo = type { i32, i32, i8 }
%struct.sqlite3_context = type { %struct.FuncDef*, %struct.VdbeFunc*, %struct.Mem, %struct.Mem*, i32, %struct.CollSeq* }
%struct.sqlite3_file = type { %struct.sqlite3_io_methods* }
%struct.sqlite3_index_constraint = type { i32, i8, i8, i32 }
%struct.sqlite3_index_constraint_usage = type { i32, i8 }
%struct.sqlite3_index_info = type { i32, %struct.sqlite3_index_constraint*, i32, %struct.sqlite3_index_constraint_usage*, %struct.sqlite3_index_constraint_usage*, i32, i8*, i32, i32, double }
%struct.sqlite3_io_methods = type { i32, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*, i8*, i32, i64)*, i32 (%struct.sqlite3_file*, i8*, i32, i64)*, i32 (%struct.sqlite3_file*, i64)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*, i64*)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*, i32, i8*)*, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*)* }
%struct.sqlite3_module = type { i32, i32 (%struct.sqlite3*, i8*, i32, i8**, %struct.sqlite3_vtab**, i8**)*, i32 (%struct.sqlite3*, i8*, i32, i8**, %struct.sqlite3_vtab**, i8**)*, i32 (%struct.sqlite3_vtab*, %struct.sqlite3_index_info*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*, %struct.sqlite3_vtab_cursor**)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*, i32, i8*, i32, %struct.Mem**)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*, %struct.sqlite3_context*, i32)*, i32 (%struct.sqlite3_vtab_cursor*, i64*)*, i32 (%struct.sqlite3_vtab*, i32, %struct.Mem**, i64*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*, i32, i8*, void (%struct.sqlite3_context*, i32, %struct.Mem**)**, i8**)*, i32 (%struct.sqlite3_vtab*, i8*)* }
%struct.sqlite3_mutex = type opaque
%struct.sqlite3_vfs = type { i32, i32, i32, %struct.sqlite3_vfs*, i8*, i8*, i32 (%struct.sqlite3_vfs*, i8*, %struct.sqlite3_file*, i32, i32*)*, i32 (%struct.sqlite3_vfs*, i8*, i32)*, i32 (%struct.sqlite3_vfs*, i8*, i32)*, i32 (%struct.sqlite3_vfs*, i32, i8*)*, i32 (%struct.sqlite3_vfs*, i8*, i32, i8*)*, i8* (%struct.sqlite3_vfs*, i8*)*, void (%struct.sqlite3_vfs*, i32, i8*)*, i8* (%struct.sqlite3_vfs*, i8*, i8*)*, void (%struct.sqlite3_vfs*, i8*)*, i32 (%struct.sqlite3_vfs*, i32, i8*)*, i32 (%struct.sqlite3_vfs*, i32)*, i32 (%struct.sqlite3_vfs*, double*)* }
%struct.sqlite3_vtab = type { %struct.sqlite3_module*, i32, i8* }
%struct.sqlite3_vtab_cursor = type { %struct.sqlite3_vtab* }
%union.anon = type { double }
@_DefaultRuneLocale = external global %struct._RuneLocale ; <%struct._RuneLocale*> [#uses=2]
@__stderrp = external global %struct.FILE* ; <%struct.FILE**> [#uses=1]
@.str10 = internal constant [16 x i8] c"Out of memory!\0A\00", align 1 ; <[16 x i8]*> [#uses=1]
@llvm.used = appending global [1 x i8*] [i8* bitcast (void (%struct.callback_data*, i8*)* @set_table_name to i8*)], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
define fastcc void @set_table_name(%struct.callback_data* nocapture %p, i8* %zName) nounwind ssp {
entry:
%0 = getelementptr inbounds %struct.callback_data* %p, i32 0, i32 7 ; <i8**> [#uses=3]
%1 = load i8** %0, align 4 ; <i8*> [#uses=2]
%2 = icmp eq i8* %1, null ; <i1> [#uses=1]
br i1 %2, label %bb1, label %bb
bb: ; preds = %entry
free i8* %1
store i8* null, i8** %0, align 4
br label %bb1
bb1: ; preds = %bb, %entry
%3 = icmp eq i8* %zName, null ; <i1> [#uses=1]
br i1 %3, label %return, label %bb2
bb2: ; preds = %bb1
%4 = load i8* %zName, align 1 ; <i8> [#uses=2]
%5 = zext i8 %4 to i32 ; <i32> [#uses=2]
%6 = icmp sgt i8 %4, -1 ; <i1> [#uses=1]
br i1 %6, label %bb.i.i, label %bb1.i.i
bb.i.i: ; preds = %bb2
%7 = getelementptr inbounds %struct._RuneLocale* @_DefaultRuneLocale, i32 0, i32 5, i32 %5 ; <i32*> [#uses=1]
%8 = load i32* %7, align 4 ; <i32> [#uses=1]
%9 = and i32 %8, 256 ; <i32> [#uses=1]
br label %isalpha.exit
bb1.i.i: ; preds = %bb2
%10 = tail call i32 @__maskrune(i32 %5, i32 256) nounwind ; <i32> [#uses=1]
br label %isalpha.exit
isalpha.exit: ; preds = %bb1.i.i, %bb.i.i
%storemerge.in.in.i.i = phi i32 [ %9, %bb.i.i ], [ %10, %bb1.i.i ] ; <i32> [#uses=1]
%storemerge.in.i.i = icmp eq i32 %storemerge.in.in.i.i, 0 ; <i1> [#uses=1]
br i1 %storemerge.in.i.i, label %bb3, label %bb5
bb3: ; preds = %isalpha.exit
%11 = load i8* %zName, align 1 ; <i8> [#uses=2]
%12 = icmp eq i8 %11, 95 ; <i1> [#uses=1]
br i1 %12, label %bb5, label %bb12.preheader
bb5: ; preds = %bb3, %isalpha.exit
%.pre = load i8* %zName, align 1 ; <i8> [#uses=1]
br label %bb12.preheader
bb12.preheader: ; preds = %bb5, %bb3
%13 = phi i8 [ %.pre, %bb5 ], [ %11, %bb3 ] ; <i8> [#uses=1]
%needQuote.1.ph = phi i32 [ 0, %bb5 ], [ 1, %bb3 ] ; <i32> [#uses=2]
%14 = icmp eq i8 %13, 0 ; <i1> [#uses=1]
br i1 %14, label %bb13, label %bb7
bb7: ; preds = %bb11, %bb12.preheader
%i.011 = phi i32 [ %tmp17, %bb11 ], [ 0, %bb12.preheader ] ; <i32> [#uses=2]
%n.110 = phi i32 [ %26, %bb11 ], [ 0, %bb12.preheader ] ; <i32> [#uses=3]
%needQuote.19 = phi i32 [ %needQuote.0, %bb11 ], [ %needQuote.1.ph, %bb12.preheader ] ; <i32> [#uses=2]
%scevgep16 = getelementptr i8* %zName, i32 %i.011 ; <i8*> [#uses=2]
%tmp17 = add i32 %i.011, 1 ; <i32> [#uses=2]
%scevgep18 = getelementptr i8* %zName, i32 %tmp17 ; <i8*> [#uses=1]
%15 = load i8* %scevgep16, align 1 ; <i8> [#uses=2]
%16 = zext i8 %15 to i32 ; <i32> [#uses=2]
%17 = icmp sgt i8 %15, -1 ; <i1> [#uses=1]
br i1 %17, label %bb.i.i2, label %bb1.i.i3
bb.i.i2: ; preds = %bb7
%18 = getelementptr inbounds %struct._RuneLocale* @_DefaultRuneLocale, i32 0, i32 5, i32 %16 ; <i32*> [#uses=1]
%19 = load i32* %18, align 4 ; <i32> [#uses=1]
%20 = and i32 %19, 1280 ; <i32> [#uses=1]
br label %isalnum.exit
bb1.i.i3: ; preds = %bb7
%21 = tail call i32 @__maskrune(i32 %16, i32 1280) nounwind ; <i32> [#uses=1]
br label %isalnum.exit
isalnum.exit: ; preds = %bb1.i.i3, %bb.i.i2
%storemerge.in.in.i.i4 = phi i32 [ %20, %bb.i.i2 ], [ %21, %bb1.i.i3 ] ; <i32> [#uses=1]
%storemerge.in.i.i5 = icmp eq i32 %storemerge.in.in.i.i4, 0 ; <i1> [#uses=1]
br i1 %storemerge.in.i.i5, label %bb8, label %bb11
bb8: ; preds = %isalnum.exit
%22 = load i8* %scevgep16, align 1 ; <i8> [#uses=2]
%23 = icmp eq i8 %22, 95 ; <i1> [#uses=1]
br i1 %23, label %bb11, label %bb9
bb9: ; preds = %bb8
%24 = icmp eq i8 %22, 39 ; <i1> [#uses=1]
%25 = zext i1 %24 to i32 ; <i32> [#uses=1]
%.n.1 = add i32 %n.110, %25 ; <i32> [#uses=1]
br label %bb11
bb11: ; preds = %bb9, %bb8, %isalnum.exit
%needQuote.0 = phi i32 [ 1, %bb9 ], [ %needQuote.19, %isalnum.exit ], [ %needQuote.19, %bb8 ] ; <i32> [#uses=2]
%n.0 = phi i32 [ %.n.1, %bb9 ], [ %n.110, %isalnum.exit ], [ %n.110, %bb8 ] ; <i32> [#uses=1]
%26 = add nsw i32 %n.0, 1 ; <i32> [#uses=2]
%27 = load i8* %scevgep18, align 1 ; <i8> [#uses=1]
%28 = icmp eq i8 %27, 0 ; <i1> [#uses=1]
br i1 %28, label %bb13, label %bb7
bb13: ; preds = %bb11, %bb12.preheader
%n.1.lcssa = phi i32 [ 0, %bb12.preheader ], [ %26, %bb11 ] ; <i32> [#uses=2]
%needQuote.1.lcssa = phi i32 [ %needQuote.1.ph, %bb12.preheader ], [ %needQuote.0, %bb11 ] ; <i32> [#uses=1]
%29 = add nsw i32 %n.1.lcssa, 2 ; <i32> [#uses=1]
%30 = icmp eq i32 %needQuote.1.lcssa, 0 ; <i1> [#uses=3]
%n.1. = select i1 %30, i32 %n.1.lcssa, i32 %29 ; <i32> [#uses=1]
%31 = add nsw i32 %n.1., 1 ; <i32> [#uses=1]
%32 = malloc i8, i32 %31 ; <i8*> [#uses=7]
store i8* %32, i8** %0, align 4
%33 = icmp eq i8* %32, null ; <i1> [#uses=1]
br i1 %33, label %bb16, label %bb17
bb16: ; preds = %bb13
%34 = load %struct.FILE** @__stderrp, align 4 ; <%struct.FILE*> [#uses=1]
%35 = bitcast %struct.FILE* %34 to i8* ; <i8*> [#uses=1]
%36 = tail call i32 @"\01_fwrite$UNIX2003"(i8* getelementptr inbounds ([16 x i8]* @.str10, i32 0, i32 0), i32 1, i32 15, i8* %35) nounwind ; <i32> [#uses=0]
tail call void @exit(i32 1) noreturn nounwind
unreachable
bb17: ; preds = %bb13
br i1 %30, label %bb23.preheader, label %bb18
bb18: ; preds = %bb17
store i8 39, i8* %32, align 4
br label %bb23.preheader
bb23.preheader: ; preds = %bb18, %bb17
%n.3.ph = phi i32 [ 1, %bb18 ], [ 0, %bb17 ] ; <i32> [#uses=2]
%37 = load i8* %zName, align 1 ; <i8> [#uses=1]
%38 = icmp eq i8 %37, 0 ; <i1> [#uses=1]
br i1 %38, label %bb24, label %bb20
bb20: ; preds = %bb22, %bb23.preheader
%storemerge18 = phi i32 [ %tmp, %bb22 ], [ 0, %bb23.preheader ] ; <i32> [#uses=2]
%n.37 = phi i32 [ %n.4, %bb22 ], [ %n.3.ph, %bb23.preheader ] ; <i32> [#uses=3]
%scevgep = getelementptr i8* %zName, i32 %storemerge18 ; <i8*> [#uses=1]
%tmp = add i32 %storemerge18, 1 ; <i32> [#uses=2]
%scevgep15 = getelementptr i8* %zName, i32 %tmp ; <i8*> [#uses=1]
%39 = load i8* %scevgep, align 1 ; <i8> [#uses=2]
%40 = getelementptr inbounds i8* %32, i32 %n.37 ; <i8*> [#uses=1]
store i8 %39, i8* %40, align 1
%41 = add nsw i32 %n.37, 1 ; <i32> [#uses=2]
%42 = icmp eq i8 %39, 39 ; <i1> [#uses=1]
br i1 %42, label %bb21, label %bb22
bb21: ; preds = %bb20
%43 = getelementptr inbounds i8* %32, i32 %41 ; <i8*> [#uses=1]
store i8 39, i8* %43, align 1
%44 = add nsw i32 %n.37, 2 ; <i32> [#uses=1]
br label %bb22
bb22: ; preds = %bb21, %bb20
%n.4 = phi i32 [ %44, %bb21 ], [ %41, %bb20 ] ; <i32> [#uses=2]
%45 = load i8* %scevgep15, align 1 ; <i8> [#uses=1]
%46 = icmp eq i8 %45, 0 ; <i1> [#uses=1]
br i1 %46, label %bb24, label %bb20
bb24: ; preds = %bb22, %bb23.preheader
%n.3.lcssa = phi i32 [ %n.3.ph, %bb23.preheader ], [ %n.4, %bb22 ] ; <i32> [#uses=3]
br i1 %30, label %bb26, label %bb25
bb25: ; preds = %bb24
%47 = getelementptr inbounds i8* %32, i32 %n.3.lcssa ; <i8*> [#uses=1]
store i8 39, i8* %47, align 1
%48 = add nsw i32 %n.3.lcssa, 1 ; <i32> [#uses=1]
br label %bb26
bb26: ; preds = %bb25, %bb24
%n.5 = phi i32 [ %48, %bb25 ], [ %n.3.lcssa, %bb24 ] ; <i32> [#uses=1]
%49 = getelementptr inbounds i8* %32, i32 %n.5 ; <i8*> [#uses=1]
store i8 0, i8* %49, align 1
ret void
return: ; preds = %bb1
ret void
}
declare i32 @"\01_fwrite$UNIX2003"(i8*, i32, i32, i8*)
declare void @exit(i32) noreturn nounwind
declare i32 @__maskrune(i32, i32)

View File

@ -1,42 +0,0 @@
; RUN: llc < %s | grep caml.*__frametable
; RUN: llc < %s -march=x86 | grep {movl .0}
%struct.obj = type { i8*, %struct.obj* }
define %struct.obj* @fun(%struct.obj* %head) gc "ocaml" {
entry:
%gcroot.0 = alloca i8*
%gcroot.1 = alloca i8*
call void @llvm.gcroot(i8** %gcroot.0, i8* null)
call void @llvm.gcroot(i8** %gcroot.1, i8* null)
%local.0 = bitcast i8** %gcroot.0 to %struct.obj**
%local.1 = bitcast i8** %gcroot.1 to %struct.obj**
store %struct.obj* %head, %struct.obj** %local.0
br label %bb.loop
bb.loop:
%t0 = load %struct.obj** %local.0
%t1 = getelementptr %struct.obj* %t0, i32 0, i32 1
%t2 = bitcast %struct.obj* %t0 to i8*
%t3 = bitcast %struct.obj** %t1 to i8**
%t4 = call i8* @llvm.gcread(i8* %t2, i8** %t3)
%t5 = bitcast i8* %t4 to %struct.obj*
%t6 = icmp eq %struct.obj* %t5, null
br i1 %t6, label %bb.loop, label %bb.end
bb.end:
%t7 = malloc %struct.obj
store %struct.obj* %t7, %struct.obj** %local.1
%t8 = bitcast %struct.obj* %t7 to i8*
%t9 = load %struct.obj** %local.0
%t10 = getelementptr %struct.obj* %t9, i32 0, i32 1
%t11 = bitcast %struct.obj* %t9 to i8*
%t12 = bitcast %struct.obj** %t10 to i8**
call void @llvm.gcwrite(i8* %t8, i8* %t11, i8** %t12)
ret %struct.obj* %t7
}
declare void @llvm.gcroot(i8** %value, i8* %tag)
declare void @llvm.gcwrite(i8* %value, i8* %obj, i8** %field)
declare i8* @llvm.gcread(i8* %obj, i8** %field)

View File

@ -37,8 +37,8 @@ entry:
store i64 %b, i64* %tmp2, align 16
%tmp4 = getelementptr %struct.s* %d, i32 0, i32 2
store i64 %c, i64* %tmp4, align 16
call void @f( %struct.s* %d byval)
call void @f( %struct.s* %d byval)
call void @f( %struct.s*byval %d )
call void @f( %struct.s*byval %d )
ret void
}

View File

@ -45,8 +45,8 @@ entry:
store i32 %a5, i32* %tmp8, align 16
%tmp10 = getelementptr %struct.s* %d, i32 0, i32 5
store i32 %a6, i32* %tmp10, align 16
call void @f( %struct.s* %d byval)
call void @f( %struct.s* %d byval)
call void @f( %struct.s* byval %d)
call void @f( %struct.s* byval %d)
ret void
}

View File

@ -51,8 +51,8 @@ entry:
store i16 %a5, i16* %tmp8, align 16
%tmp10 = getelementptr %struct.s* %a, i32 0, i32 5
store i16 %a6, i16* %tmp10, align 16
call void @f( %struct.s* %a byval )
call void @f( %struct.s* %a byval )
call void @f( %struct.s* byval %a )
call void @f( %struct.s* byval %a )
ret void
}

View File

@ -59,8 +59,8 @@ entry:
store i8 %a5, i8* %tmp8, align 8
%tmp10 = getelementptr %struct.s* %a, i32 0, i32 5
store i8 %a6, i8* %tmp10, align 8
call void @f( %struct.s* %a byval )
call void @f( %struct.s* %a byval )
call void @f( %struct.s* byval %a )
call void @f( %struct.s* byval %a )
ret void
}

View File

@ -14,12 +14,12 @@ BB2:
; CHECK: calll
; CHECK-NEXT: testb $1
}
declare i1 @foo() zeroext nounwind
declare zeroext i1 @foo() nounwind
declare void @foo2(%struct.s* byval)
define void @test2(%struct.s* %d) nounwind {
call void @foo2(%struct.s* %d byval)
call void @foo2(%struct.s* byval %d )
ret void
; CHECK: test2:
; CHECK: movl (%eax)

View File

@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86 | grep movw | count 1
define i16 @t() signext {
define signext i16 @t() {
entry:
%tmp180 = load i16* null, align 2 ; <i16> [#uses=3]
%tmp180181 = sext i16 %tmp180 to i32 ; <i32> [#uses=1]

View File

@ -3,7 +3,7 @@
; RUN: not grep movz %t
; RUN: not grep and %t
define i8 @foo(i16 signext %x) signext nounwind {
define signext i8 @foo(i16 signext %x) nounwind {
%retval56 = trunc i16 %x to i8
ret i8 %retval56
}

View File

@ -13,6 +13,6 @@ entry:
define fastcc i32 @tailcaller(%struct.s* byval %a) nounwind {
entry:
%tmp4 = tail call fastcc i32 @tailcallee(%struct.s* %a byval)
%tmp4 = tail call fastcc i32 @tailcallee(%struct.s* byval %a )
ret i32 %tmp4
}

View File

@ -37,6 +37,6 @@ define fastcc i64 @tailcaller(i64 %b, %struct.s* byval %a) {
entry:
%tmp2 = getelementptr %struct.s* %a, i32 0, i32 1
%tmp3 = load i64* %tmp2, align 8
%tmp4 = tail call fastcc i64 @tailcallee(%struct.s* %a byval, i64 %tmp3, i64 %b, i64 7, i64 13, i64 17)
%tmp4 = tail call fastcc i64 @tailcallee(%struct.s* byval %a , i64 %tmp3, i64 %b, i64 7, i64 13, i64 17)
ret i64 %tmp4
}

View File

@ -3,7 +3,7 @@
; value and as the operand of a branch.
; RUN: llc < %s -march=x86 | FileCheck %s
define i1 @test1(i32 %X) zeroext nounwind {
define zeroext i1 @test1(i32 %X) nounwind {
%Y = trunc i32 %X to i1
ret i1 %Y
}

View File

@ -1,7 +1,7 @@
; RUN: llc < %s -march=x86 | FileCheck %s
declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
define i1 @a(i32 %x) zeroext nounwind {
define zeroext i1 @a(i32 %x) nounwind {
%res = call {i32, i1} @llvm.umul.with.overflow.i32(i32 %x, i32 3)
%obil = extractvalue {i32, i1} %res, 1
ret i1 %obil

View File

@ -1,12 +0,0 @@
; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
; CHECK: shll $3, {{%edi|%ecx}}
; PR3829
; The generated code should multiply by 3 (sizeof i8*) as an i32,
; not as an i64!
define i8** @test(i32 %sz) {
%sub = add i32 %sz, 536870911 ; <i32> [#uses=1]
%call = malloc i8*, i32 %sub ; <i8**> [#uses=1]
ret i8** %call
}

View File

@ -5,7 +5,7 @@ target triple = "x86_64-apple-darwin8"
define void @bar(i16 zeroext %A) {
tail call void @foo( i16 %A signext )
tail call void @foo( i16 signext %A )
ret void
}
declare void @foo(i16 signext )

View File

@ -1,13 +0,0 @@
; RUN: lli %s > /dev/null
define i32 @main() {
%X = malloc i32 ; <i32*> [#uses=1]
%Y = malloc i32, i32 100 ; <i32*> [#uses=1]
%u = add i32 1, 2 ; <i32> [#uses=1]
%Z = malloc i32, i32 %u ; <i32*> [#uses=1]
free i32* %X
free i32* %Y
free i32* %Z
ret i32 0
}

View File

@ -10,15 +10,6 @@ define i32* @test() align 32 {
%Z = alloca i32 ; <i32*> [#uses=0]
ret i32* %X
}
define i32* @test2() {
%X = malloc i32, align 4 ; <i32*> [#uses=1]
%Y = malloc i32, i32 42, align 16 ; <i32*> [#uses=0]
%Z = malloc i32 ; <i32*> [#uses=0]
%T = malloc i32, align 256 ; <i32*> [#uses=0]
ret i32* %X
}
define void @test3() alignstack(16) {
ret void
}

View File

@ -1,6 +0,0 @@
; RUN: llvm-as < %s
define noalias i8* @_Znwj(i32 %x) nounwind {
%A = malloc i8, i32 %x
ret i8* %A
}

View File

@ -5,8 +5,8 @@
%ZFunTy = type i32(i8 zeroext)
%SFunTy = type i32(i8 signext)
declare i16 @"test"(i16 signext %arg) signext
declare i8 @"test2" (i16 zeroext %a2) zeroext
declare signext i16 @"test"(i16 signext %arg)
declare zeroext i8 @"test2" (i16 zeroext %a2)
declare i32 @"test3"(i32* noalias %p)
@ -14,9 +14,9 @@ declare void @exit(i32) noreturn nounwind
define i32 @main(i32 inreg %argc, i8 ** inreg %argv) nounwind {
%val = trunc i32 %argc to i16
%res1 = call i16 (i16 signext) signext *@test(i16 signext %val) signext
%res1 = call signext i16 (i16 signext) *@test(i16 signext %val)
%two = add i16 %res1, %res1
%res2 = call i8 @test2(i16 %two zeroext) zeroext
%res2 = call zeroext i8 @test2(i16 zeroext %two )
%retVal = sext i16 %two to i32
ret i32 %retVal
}

View File

@ -1,36 +0,0 @@
; RUN: llvm-as < %s | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
%complexty = type { i32, { [4 x i8*], float }, double }
%struct = type { i32, { float, { i8 } }, i64 }
define i32 @main() {
call i32 @testfunction( i64 0, i64 1 ) ; <i32>:1 [#uses=0]
ret i32 0
}
define i32 @testfunction(i64 %i0, i64 %j0) {
%array0 = malloc [4 x i8] ; <[4 x i8]*> [#uses=2]
%size = add i32 2, 2 ; <i32> [#uses=1]
%array1 = malloc i8, i32 4 ; <i8*> [#uses=1]
%array2 = malloc i8, i32 %size ; <i8*> [#uses=1]
%idx = getelementptr [4 x i8]* %array0, i64 0, i64 2 ; <i8*> [#uses=1]
store i8 123, i8* %idx
free [4 x i8]* %array0
free i8* %array1
free i8* %array2
%aa = alloca %complexty, i32 5 ; <%complexty*> [#uses=1]
%idx2 = getelementptr %complexty* %aa, i64 %i0, i32 1, i32 0, i64 %j0 ; <i8**> [#uses=1]
store i8* null, i8** %idx2
%ptr = alloca i32 ; <i32*> [#uses=2]
store i32 3, i32* %ptr
%val = load i32* %ptr ; <i32> [#uses=0]
%sptr = alloca %struct ; <%struct*> [#uses=1]
%ubsptr = getelementptr %struct* %sptr, i64 0, i32 1, i32 1 ; <{ i8 }*> [#uses=1]
%idx3 = getelementptr { i8 }* %ubsptr, i64 0, i32 0 ; <i8*> [#uses=1]
store i8 4, i8* %idx3
ret i32 3
}

View File

@ -1,29 +0,0 @@
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
declare void @"foo"()
; foo test basic arith operations
define void @"foo"() {
%t1 = malloc i31, i32 4
%t2 = malloc i31, i32 7, align 1024
%t3 = malloc [4 x i15]
%idx = getelementptr [4 x i15]* %t3, i64 0, i64 2
store i15 -123, i15* %idx
free [4 x i15]* %t3
free i31* %t2
free i31* %t1
%t4 = alloca i12, i32 100
free i12* %t4
%t5 = alloca i31
store i31 -123, i31* %t5
free i31* %t5
ret void
}

View File

@ -1,21 +0,0 @@
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
@X = global i19 4, align 16
define i19 *@test() align 32 {
%X = alloca i19, align 4
%Y = alloca i51, i32 42, align 16
%Z = alloca i32, align 1
ret i19 *%X
}
define i19 *@test2() {
%X = malloc i19, align 4
%Y = malloc i51, i32 42, align 16
%Z = malloc i32, align 1
ret i19 *%X
}

View File

@ -5,15 +5,15 @@
%ZFunTy = type i33(i8 zeroext)
%SFunTy = type i33(i8 signext)
declare i16 @"test"(i16 signext %arg) signext
declare i8 @"test2" (i16 zeroext %a2) zeroext
declare signext i16 @"test"(i16 signext %arg)
declare zeroext i8 @"test2" (i16 zeroext %a2)
define i33 @main(i33 %argc, i8 **%argv) {
%val = trunc i33 %argc to i16
%res = call i16 (i16 signext) signext *@test(i16 signext %val) signext
%res = call signext i16 (i16 signext) *@test(i16 signext %val)
%two = add i16 %res, %res
%res2 = call i8 @test2(i16 %two zeroext) zeroext
%res2 = call zeroext i8 @test2(i16 zeroext %two )
%retVal = sext i16 %two to i33
ret i33 %retVal
}

View File

@ -1,45 +0,0 @@
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
%struct = type { i31 , {float, {i9 } } , i64 }
%complexty = type {i31, {[4 x i9 *], float}, double}
define i31 @"main"()
begin
call i31 @testfunction(i64 0, i64 1)
ret i31 0
end
define i31 @"testfunction"(i64 %i0, i64 %j0)
begin
%array0 = malloc [4 x i9] ; yields {[4 x i9]*}:array0
%size = add i32 2, 2 ; yields {i31}:size = i31 %4
%array1 = malloc i9, i32 4 ; yields {i9*}:array1
%array2 = malloc i9, i32 %size ; yields {i9*}:array2
%idx = getelementptr [4 x i9]* %array0, i64 0, i64 2
store i9 123, i9* %idx
free [4x i9]* %array0
free i9* %array1
free i9* %array2
%aa = alloca %complexty, i32 5
%idx2 = getelementptr %complexty* %aa, i64 %i0, i32 1, i32 0, i64 %j0
store i9 *null, i9** %idx2
%ptr = alloca i31 ; yields {i31*}:ptr
store i31 3, i31* %ptr ; yields {void}
%val = load i31* %ptr ; yields {i31}:val = i31 %3
%sptr = alloca %struct ; yields {%struct*}:sptr
%ubsptr = getelementptr %struct * %sptr, i64 0, i32 1, i32 1 ; yields {{i9}*}:ubsptr
%idx3 = getelementptr {i9} * %ubsptr, i64 0, i32 0
store i9 4, i9* %idx3
ret i31 3
end

Some files were not shown because too many files have changed in this diff Show More