<div class="doc_code">
<pre>
-%someFunc = i16 (i8 sext %someParam) zext
-%someFunc = i16 (i8 zext %someParam) zext
+%someFunc = i16 (i8 signext %someParam) zeroext
+%someFunc = i16 (i8 zeroext %someParam) zeroext
</pre>
</div>
<p>Note that the two function types above are unique because the parameter has
- a different attribute (sext in the first one, zext in the second). Also note
- that the attribute for the function result (zext) comes immediately after the
- argument list.</p>
+ a different attribute (<tt>signext</tt> in the first one, <tt>zeroext</tt> in
+ the second). Also note that the attribute for the function result
+ (<tt>zeroext</tt>) comes immediately after the argument list.</p>
<p>Currently, only the following parameter attributes are defined:</p>
<dl>
- <dt><tt>zext</tt></dt>
+ <dt><tt>zeroext</tt></dt>
<dd>This indicates that the parameter should be zero extended just before
a call to this function.</dd>
- <dt><tt>sext</tt></dt>
+ <dt><tt>signext</tt></dt>
<dd>This indicates that the parameter should be sign extended just before
a call to this function.</dd>
<dt><tt>inreg</tt></dt>
<td class="left">function taking an <tt>i32</tt>, returning an <tt>i32</tt>
</td>
</tr><tr class="layout">
- <td class="left"><tt>float (i16 sext, i32 *) *
+ <td class="left"><tt>float (i16 signext, i32 *) *
</tt></td>
<td class="left"><a href="#t_pointer">Pointer</a> to a function that takes
an <tt>i16</tt> that should be sign extended and a
x86_stdcallcc { return X86_STDCALLCC_TOK; }
x86_fastcallcc { return X86_FASTCALLCC_TOK; }
+signext { return SIGNEXT; }
+zeroext { return ZEROEXT; }
inreg { return INREG; }
sret { return SRET; }
nounwind { return NOUNWIND; }
%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
// Function Attributes
-%token NORETURN INREG SRET NOUNWIND NOALIAS BYVAL
+%token SIGNEXT ZEROEXT NORETURN INREG SRET NOUNWIND NOALIAS BYVAL
// Visibility Styles
%token DEFAULT HIDDEN PROTECTED
CHECK_FOR_ERROR
};
-ParamAttr : ZEXT { $$ = ParamAttr::ZExt; }
- | SEXT { $$ = ParamAttr::SExt; }
+ParamAttr : ZEROEXT { $$ = ParamAttr::ZExt; }
+ | SIGNEXT { $$ = ParamAttr::SExt; }
| INREG { $$ = ParamAttr::InReg; }
| SRET { $$ = ParamAttr::StructRet; }
| NOALIAS { $$ = ParamAttr::NoAlias; }
FuncAttr : NORETURN { $$ = ParamAttr::NoReturn; }
| NOUNWIND { $$ = ParamAttr::NoUnwind; }
- | ParamAttr
+ | ZEROEXT { $$ = ParamAttr::ZExt; }
+ | SIGNEXT { $$ = ParamAttr::SExt; }
;
OptFuncAttrs : /* empty */ { $$ = ParamAttr::None; }
ParamAttrsList::getParamAttrsText(uint16_t Attrs) {
std::string Result;
if (Attrs & ParamAttr::ZExt)
- Result += "zext ";
+ Result += "zeroext ";
if (Attrs & ParamAttr::SExt)
- Result += "sext ";
+ Result += "signext ";
if (Attrs & ParamAttr::NoReturn)
Result += "noreturn ";
if (Attrs & ParamAttr::NoUnwind)
--- /dev/null
+; PR1553
+; RUN: llvm-as < %s > /dev/null
+define void @bar() {
+ %t = call i8 @foo( i8 10 )
+ zext i8 %t to i32
+ ret void
+}
+
+declare i8 @foo(i8)
-// RUN: %llvmgcc %s -o - -S -emit-llvm -O3 | grep {i8 sext}
+// RUN: %llvmgcc %s -o - -S -emit-llvm -O3 | grep {i8 signext}
// PR1513
struct s{
%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*) zext *, i32 (i8*)*, %struct.__fooString* (i8*, %struct.__fooZ*)*, %struct.__fooString* (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 }
@str15 = external constant [24 x i8] ; <[24 x i8]*> [#uses=1]
-define i8 @test(%struct.__fooY* %calendar, double* %atp, i8* %componentDesc, ...) zext {
+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]
%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*, ...) zext * bitcast (%struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* @aa_mm to i8 (i8*, %struct.aa_ss*, ...) zext *)( i8* %tmp6869, %struct.aa_ss* %tmp63, double* %atp, i8* %componentDesc, i8* %tmp66137 ) zext ; <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*, ...) zext * bitcast (%struct.aa_object* (%struct.aa_object*, %struct.aa_ss*, ...)* @aa_mm to i8 (i8*, %struct.aa_ss*, ...) zext *)( i8* %tmp6869, %struct.aa_ss* %tmp59, double* %atp, i8* %componentDesc, i8* %tmp66 ) zext ; <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
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 ) zext ; <i8> [#uses=1]
+ %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) zext
+declare i8 @_fooYCCV(%struct.__fooY*, double*, i8*, i32*, i32) zeroext
declare %struct.aa_object* @aa_mm(%struct.aa_object*, %struct.aa_ss*, ...)
%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) zext *, i8 (i8**) zext *, i8 () zext *, 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*) zext *, %struct.tree_node* (%struct.tree_node*)*, void (%struct.tree_node*)*, void (%struct.tree_node*)*, i8 () zext *, 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 = 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*) zext *, void ()*, void (%struct.tree_node*)*, i8 (%struct.tree_node*) zext *, 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*) zext * }
- %struct.lang_hooks_for_tree_dump = type { i8 (i8*, %struct.tree_node*) zext *, 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*) zext *, 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_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.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*) zext *, i8, i8 }
+ %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 }
declare i32 @alias_sets_conflict_p(i64, i64)
-declare fastcc i8 @cpt_same_type(%struct.tree_node*, %struct.tree_node*) zext
+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* @expr_last(%struct.tree_node*)
-declare i8 @block_may_fallthru(%struct.tree_node*) zext
+declare i8 @block_may_fallthru(%struct.tree_node*) zeroext
declare fastcc void @gimple_pop_condition(%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 zext )
+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*) zext * %gimple_test_f, i32 %fallback) {
+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]
ret i32 0
bb3351: ; preds = %cond_next3074
- %tmp3354 = call i8 @tree_ssa_useless_type_conversion( %struct.tree_node* %tmp2554 ) zext ; <i8> [#uses=1]
+ %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
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*) zext * @is_gimple_val, i32 1 ) ; <i32> [#uses=0]
+ %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
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*) zext * %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*) zext * @is_gimple_val, i32 1 ) ; <i32> [#uses=0]
+ %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
}
-declare i8 @is_gimple_formal_tmp_rhs(%struct.tree_node*) zext
+declare i8 @is_gimple_formal_tmp_rhs(%struct.tree_node*) zeroext
declare void @gimplify_and_add(%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*) zext
+declare i8 @type_contains_placeholder_p(%struct.tree_node*) zeroext
-declare i8 @is_gimple_mem_rhs(%struct.tree_node*) zext
+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 zext )
+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 zext )
+declare fastcc i32 @gimplify_compound_expr(%struct.tree_node**, %struct.tree_node**, i8 zeroext )
-declare i8 @is_gimple_lvalue(%struct.tree_node*) zext
+declare i8 @is_gimple_lvalue(%struct.tree_node*) zeroext
declare void @categorize_ctor_elements(%struct.tree_node*, i64*, i64*, i64*, i8*)
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 zext )
+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*) zext * @rhs_predicate_for(%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*) zext
+declare i8 @is_gimple_val(%struct.tree_node*) zeroext
-declare i8 @is_gimple_reg_type(%struct.tree_node*) zext
+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 zext )
+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_function_call_expr(%struct.tree_node*, %struct.tree_node*)
-declare i8 @is_gimple_addressable(%struct.tree_node*) zext
+declare i8 @is_gimple_addressable(%struct.tree_node*) zeroext
-declare i8 @is_gimple_reg(%struct.tree_node*) zext
+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*) zext
+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 zext )
+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 zext )
+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*) zext
+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*) zext
+declare i8 @is_gimple_call_addr(%struct.tree_node*) zeroext
declare i32 @call_expr_flags(%struct.tree_node*)
declare void @tsi_link_before(%struct.tree_stmt_iterator*, %struct.tree_node*, i32)
-declare i8 @is_gimple_stmt(%struct.tree_node*) zext
+declare i8 @is_gimple_stmt(%struct.tree_node*) zeroext
declare void @print_generic_expr(%struct.FILE*, %struct.tree_node*, i32)
declare void @internal_error(i8*, ...)
-declare %struct.tree_node* @force_gimple_operand(%struct.tree_node*, %struct.tree_node**, i8 zext , %struct.tree_node*)
+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*) zext
+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*) zext
+declare i8 @contains_placeholder_p(%struct.tree_node*) zeroext
declare %struct.varray_head_tag* @varray_init(i32, i32, i8*)
declare %struct.tree_node* @array_ref_low_bound(%struct.tree_node*)
-declare i8 @is_gimple_min_invariant(%struct.tree_node*) zext
+declare i8 @is_gimple_min_invariant(%struct.tree_node*) zeroext
-declare i8 @is_gimple_formal_tmp_reg(%struct.tree_node*) zext
+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*) zext
+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*) zext
+declare i8 @parse_output_constraint(i8**, i32, i32, i32, i8*, i8*, i8*) zeroext
declare i8* @xstrdup(i8*)
declare %struct.tree_node* @chainon(%struct.tree_node*, %struct.tree_node*)
-declare i8 @parse_input_constraint(i8**, i32, i32, i32, i32, i8**, i8*, i8*) zext
+declare i8 @parse_input_constraint(i8**, i32, i32, i32, i32, i8**, i8*, i8*) zeroext
-declare i8 @is_gimple_asm_val(%struct.tree_node*) zext
+declare i8 @is_gimple_asm_val(%struct.tree_node*) zeroext
-declare void @gimplify_body(%struct.tree_node**, %struct.tree_node*, i8 zext )
+declare void @gimplify_body(%struct.tree_node**, %struct.tree_node*, i8 zeroext )
declare void @timevar_push_1(i32)
declare %struct.tree_node* @tsi_split_statement_list_after(%struct.tree_stmt_iterator*)
-declare i8 @is_gimple_condexpr(%struct.tree_node*) zext
+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*) zext
+declare i8 @initializer_zerop(%struct.tree_node*) zeroext
declare i32 @simple_cst_equal(%struct.tree_node*, %struct.tree_node*)
%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*) sext *, i16 (%struct.Point*) sext *, double (%struct.Point*)*, double (%struct.Point*)* }
+ %struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) signext *, i16 (%struct.Point*) signext *, 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 }
declare void @abort()
-define fastcc void @t(%struct.SString* %word, i8 sext %c) {
+define fastcc void @t(%struct.SString* %word, i8 signext %c) {
entry:
%tmp1 = icmp eq %struct.SString* %word, null ; <i1> [#uses=1]
br i1 %tmp1, label %cond_true, label %cond_false
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | \
; RUN: grep sxtab | wc -l | grep 1
-define i8 @test1(i32 %A) sext {
+define i8 @test1(i32 %A) signext {
%B = lshr i32 %A, 8
%C = shl i32 %A, 24
%D = or i32 %B, %C
ret i8 %E
}
-define i32 @test2(i32 %A, i32 %X) sext {
+define i32 @test2(i32 %A, i32 %X) signext {
%B = lshr i32 %A, 8
%C = shl i32 %A, 24
%D = or i32 %B, %C
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | grep uxtab | wc -l | grep 1
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | grep uxth | wc -l | grep 1
-define i8 @test1(i32 %A.u) zext {
+define i8 @test1(i32 %A.u) zeroext {
%B.u = trunc i32 %A.u to i8
ret i8 %B.u
}
-define i32 @test2(i32 %A.u, i32 %B.u) zext {
+define i32 @test2(i32 %A.u, i32 %B.u) zeroext {
%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) zext {
+define i32 @test3(i32 %A.u) zeroext {
%B.u = lshr i32 %A.u, 8
%C.u = shl i32 %A.u, 24
%D.u = or i32 %B.u, %C.u
; RUN: grep {s8subq} %t.s | wc -l | grep 2
-define i32 @al(i32 sext %x.s, i32 sext %y.s) sext {
+define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
entry:
%tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
-define i32 @ali(i32 sext %x.s) sext {
+define i32 @ali(i32 signext %x.s) signext {
entry:
%tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
-define i64 @aq(i64 sext %x.s, i64 sext %y.s) sext {
+define i64 @aq(i64 signext %x.s, i64 signext %y.s) signext {
entry:
%tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
ret i64 %tmp.3.s
ret i64 %tmp.3.s
}
-define i32 @sl(i32 sext %x.s, i32 sext %y.s) sext {
+define i32 @sl(i32 signext %x.s, i32 signext %y.s) signext {
entry:
%tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s
}
-define i32 @sli(i32 sext %x.s) sext {
+define i32 @sli(i32 signext %x.s) signext {
entry:
%tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
ret i32 %tmp.3.s
ret i64 %tmp.3.s
}
-define i32 @a4l(i32 sext %x.s, i32 sext %y.s) sext {
+define i32 @a4l(i32 signext %x.s, i32 signext %y.s) signext {
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 sext %x.s, i32 sext %y.s) sext {
+define i32 @a8l(i32 signext %x.s, i32 signext %y.s) signext {
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]
ret i64 %tmp.3.s
}
-define i32 @a4li(i32 sext %y.s) sext {
+define i32 @a4li(i32 signext %y.s) signext {
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 sext %y.s) sext {
+define i32 @a8li(i32 signext %y.s) signext {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
ret i64 %tmp.3.s
}
-define i32 @s4l(i32 sext %x.s, i32 sext %y.s) sext {
+define i32 @s4l(i32 signext %x.s, i32 signext %y.s) signext {
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 sext %x.s, i32 sext %y.s) sext {
+define i32 @s8l(i32 signext %x.s, i32 signext %y.s) signext {
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]
ret i64 %tmp.3.s
}
-define i32 @s4li(i32 sext %y.s) sext {
+define i32 @s4li(i32 signext %y.s) signext {
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 sext %y.s) sext {
+define i32 @s8li(i32 signext %y.s) signext {
entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
; RUN: llvm-as < %s | llc -march=alpha | grep -i {subl \$16,1,\$0}
-define i32 @foo(i32 sext %x) sext {
+define i32 @foo(i32 signext %x) signext {
entry:
%tmp.1 = add i32 %x, -1 ; <int> [#uses=1]
ret i32 %tmp.1
; RUN: llvm-as < %s | llc -march=alpha | grep zapnot
-define i16 @foo(i64 %y) zext {
+define i16 @foo(i64 %y) zeroext {
entry:
%tmp.1 = trunc i64 %y to i16 ; <ushort> [#uses=1]
ret i16 %tmp.1
; RUN: llvm-as < %s | llc -march=ppc32 | grep {rlwinm r3, r3, 23, 30, 30}
; PR1473
-define i8 @foo(i16 zext %a) zext {
+define i8 @foo(i16 zeroext %a) zeroext {
%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]
ret void
}
-define i16 @test2(i16 zext %crc) zext {
+define i16 @test2(i16 zeroext %crc) zeroext {
; No and's should be needed for the i16s here.
%tmp.1 = lshr i16 %crc, 1
%tmp.7 = xor i16 %tmp.1, 40961
ret i32 %tmp.81
}
-define i16 @test2(i16 sext %X, i16 sext %x) sext {
+define i16 @test2(i16 signext %X, i16 signext %x) signext {
%tmp = sext i16 %X to i32
%tmp1 = sext i16 %x to i32
%tmp2 = add i32 %tmp, %tmp1
ret i16 %retval
}
-define i16 @test3(i32 zext %X) sext {
+define i16 @test3(i32 zeroext %X) signext {
%tmp1 = lshr i32 %X, 16
%tmp2 = trunc i32 %tmp1 to i16
ret i16 %tmp2
; RUN: llvm-as < %s | llc -march=ppc32 | not grep {extsh\\|rlwinm}
-declare i16 @foo() sext
+declare i16 @foo() signext
-define i32 @test1(i16 sext %X) {
+define i32 @test1(i16 signext %X) {
%Y = sext i16 %X to i32 ;; dead
ret i32 %Y
}
-define i32 @test2(i16 zext %X) {
+define i32 @test2(i16 zeroext %X) {
%Y = sext i16 %X to i32
%Z = and i32 %Y, 65535 ;; dead
ret i32 %Z
}
define void @test3() {
- %tmp.0 = call i16 @foo() sext ;; no extsh!
+ %tmp.0 = call i16 @foo() signext ;; no extsh!
%tmp.1 = icmp slt i16 %tmp.0, 1234
br i1 %tmp.1, label %then, label %UnifiedReturnBlock
then:
- call i32 @test1(i16 0 sext)
+ call i32 @test1(i16 0 signext)
ret void
UnifiedReturnBlock:
ret void
ret i32 %tmp.2
}
-define i16 @test7(float %a) zext {
+define i16 @test7(float %a) zeroext {
%tmp.1 = fptoui float %a to i16
ret i16 %tmp.1
}
%struct.XDesc = type <{ i32, %struct.OpaqueXDataStorageType** }>
%struct.OpaqueXDataStorageType = type opaque
-declare i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*) sext
+declare i16 @GetParamDesc(%struct.XDesc*, i32, i32, %struct.XDesc*) signext
declare void @r_raise(i64, i8*, ...)
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 ) sext ; <i16> [#uses=0]
+ %tmp176 = call i16 @GetParamDesc( %struct.XDesc* null, i32 1701999219, i32 1413830740, %struct.XDesc* null ) signext ; <i16> [#uses=0]
call void (i64, i8*, ...)* @r_raise( i64 0, i8* null )
unreachable
declare i8 @report__equal(i32 %x, i32 %y)
-declare i8 @report__ident_char(i8 zext %x)
+declare i8 @report__ident_char(i8 zeroext %x)
-declare i16 @report__ident_wide_char(i16 zext %x)
+declare i16 @report__ident_wide_char(i16 zeroext %x)
declare i8 @report__ident_bool(i8 %x)
declare void @__gnat_rcheck_06(i8*, i32)
-declare void @system__string_ops__str_concat_cs(%struct.string___XUP* sret , i8 zext , i64)
+declare void @system__string_ops__str_concat_cs(%struct.string___XUP* sret , i8 zeroext , i64)
; RUN: llvm-as < %s | llc -march=x86 | grep {\\(and\\)\\|\\(test.*\\\$1\\)} | \
; RUN: wc -l | grep 6
-define i1 @test1(i32 %X) zext {
+define i1 @test1(i32 %X) zeroext {
%Y = trunc i32 %X to i1
ret i1 %Y
}
target triple = "x86_64-apple-darwin8"
-define i32 @test(i16 sext %X) {
+define i32 @test(i16 signext %X) {
entry:
%tmp12 = sext i16 %X to i32 ; <i32> [#uses=1]
ret i32 %tmp12
target triple = "x86_64-apple-darwin8"
-define void @bar(i16 zext %A) {
- tail call void @foo( i16 %A sext )
+define void @bar(i16 zeroext %A) {
+ tail call void @foo( i16 %A signext )
ret void
}
-declare void @foo(i16 sext )
+declare void @foo(i16 signext )
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
-%ZFunTy = type i32(i8 zext)
-%SFunTy = type i32(i8 sext)
+%ZFunTy = type i32(i8 zeroext)
+%SFunTy = type i32(i8 signext)
-declare i16 @"test"(i16 sext %arg) sext
-declare i8 @"test2" (i16 zext %a2) zext
+declare i16 @"test"(i16 signext %arg) signext
+declare i8 @"test2" (i16 zeroext %a2) zeroext
declare i32 @"test3"(i32* noalias %p)
declare void @exit(i32) noreturn nounwind
-define i32 @main(i32 %argc, i8 **%argv) nounwind inreg {
+define i32 @main(i32 inreg %argc, i8 ** inreg %argv) nounwind {
%val = trunc i32 %argc to i16
- %res1 = call i16 (i16 sext) sext *@test(i16 %val)
+ %res1 = call i16 (i16 signext) signext *@test(i16 %val)
%two = add i16 %res1, %res1
- %res2 = call i8 @test2(i16 %two zext) zext
+ %res2 = call i8 @test2(i16 %two zeroext) zeroext
%retVal = sext i16 %two to i32
ret i32 %retVal
}
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll
-%ZFunTy = type i33(i8 zext)
-%SFunTy = type i33(i8 sext)
+%ZFunTy = type i33(i8 zeroext)
+%SFunTy = type i33(i8 signext)
-declare i16 @"test"(i16 sext %arg) sext
-declare i8 @"test2" (i16 zext %a2) zext
+declare i16 @"test"(i16 signext %arg) signext
+declare i8 @"test2" (i16 zeroext %a2) zeroext
define i33 @main(i33 %argc, i8 **%argv) {
%val = trunc i33 %argc to i16
- %res = call i16 (i16 sext) sext *@test(i16 %val)
+ %res = call i16 (i16 signext) signext *@test(i16 %val)
%two = add i16 %res, %res
- %res2 = call i8 @test2(i16 %two zext) zext
+ %res2 = call i8 @test2(i16 %two zeroext) zeroext
%retVal = sext i16 %two to i33
ret i33 %retVal
}
ret i32 0
cond_next: ; preds = %entry
- %tmp10 = invoke i16 @_ZN12token_stream4openEPKc( i8* null, i8* null ) sext
+ %tmp10 = invoke i16 @_ZN12token_stream4openEPKc( i8* null, i8* null ) signext
to label %invcont unwind label %cleanup690 ; <i16> [#uses=0]
invcont: ; preds = %cond_next
ret i32 0
}
-declare i16 @_ZN12token_stream4openEPKc(i8*, i8*) sext
+declare i16 @_ZN12token_stream4openEPKc(i8*, i8*) signext
declare i32 @printf(i8*, ...)
@"\ 1L_OBJC_IMAGE_INFO" = internal global [2 x i32] zeroinitializer ; <[2 x i32]*> [#uses=1]
@llvm.used = appending global [1 x i8*] [ i8* bitcast ([2 x i32]* @"\ 1L_OBJC_IMAGE_INFO" to i8*) ] ; <[1 x i8*]*> [#uses=0]
-define i16 @__NSCharToUnicharCFWrapper(i8 zext %ch) zext {
+define i16 @__NSCharToUnicharCFWrapper(i8 zeroext %ch) zeroext {
entry:
%iftmp.0.0.in.in = select i1 false, i16* @replacementUnichar, i16* null ; <i16*> [#uses=1]
%iftmp.0.0.in = load i16* %iftmp.0.0.in.in ; <i16> [#uses=1]
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"
-define i32 @testcase(i5 zext %k) {
+define i32 @testcase(i5 zeroext %k) {
entry:
br label %bb2