For PR1553:

Change the keywords for the zext and sext parameter attributes to be 
zeroext and signext so they don't conflict with the keywords for the
instructions of the same name. This gets around the ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40069 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2007-07-19 23:13:04 +00:00
parent 087b72d1bc
commit 9445e9aaa0
29 changed files with 137 additions and 125 deletions

View File

@ -760,22 +760,22 @@ a power of 2.</p>
<div class="doc_code"> <div class="doc_code">
<pre> <pre>
%someFunc = i16 (i8 sext %someParam) zext %someFunc = i16 (i8 signext %someParam) zeroext
%someFunc = i16 (i8 zext %someParam) zext %someFunc = i16 (i8 zeroext %someParam) zeroext
</pre> </pre>
</div> </div>
<p>Note that the two function types above are unique because the parameter has <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 a different attribute (<tt>signext</tt> in the first one, <tt>zeroext</tt> in
that the attribute for the function result (zext) comes immediately after the the second). Also note that the attribute for the function result
argument list.</p> (<tt>zeroext</tt>) comes immediately after the argument list.</p>
<p>Currently, only the following parameter attributes are defined:</p> <p>Currently, only the following parameter attributes are defined:</p>
<dl> <dl>
<dt><tt>zext</tt></dt> <dt><tt>zeroext</tt></dt>
<dd>This indicates that the parameter should be zero extended just before <dd>This indicates that the parameter should be zero extended just before
a call to this function.</dd> 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 <dd>This indicates that the parameter should be sign extended just before
a call to this function.</dd> a call to this function.</dd>
<dt><tt>inreg</tt></dt> <dt><tt>inreg</tt></dt>
@ -1131,7 +1131,7 @@ Variable argument functions can access their arguments with the <a
<td class="left">function taking an <tt>i32</tt>, returning an <tt>i32</tt> <td class="left">function taking an <tt>i32</tt>, returning an <tt>i32</tt>
</td> </td>
</tr><tr class="layout"> </tr><tr class="layout">
<td class="left"><tt>float&nbsp;(i16&nbsp;sext,&nbsp;i32&nbsp;*)&nbsp;* <td class="left"><tt>float&nbsp;(i16&nbsp;signext,&nbsp;i32&nbsp;*)&nbsp;*
</tt></td> </tt></td>
<td class="left"><a href="#t_pointer">Pointer</a> to a function that takes <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 an <tt>i16</tt> that should be sign extended and a

View File

@ -225,6 +225,8 @@ coldcc { return COLDCC_TOK; }
x86_stdcallcc { return X86_STDCALLCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; }
x86_fastcallcc { return X86_FASTCALLCC_TOK; } x86_fastcallcc { return X86_FASTCALLCC_TOK; }
signext { return SIGNEXT; }
zeroext { return ZEROEXT; }
inreg { return INREG; } inreg { return INREG; }
sret { return SRET; } sret { return SRET; }
nounwind { return NOUNWIND; } nounwind { return NOUNWIND; }

View File

@ -1101,7 +1101,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR %token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
// Function Attributes // Function Attributes
%token NORETURN INREG SRET NOUNWIND NOALIAS BYVAL %token SIGNEXT ZEROEXT NORETURN INREG SRET NOUNWIND NOALIAS BYVAL
// Visibility Styles // Visibility Styles
%token DEFAULT HIDDEN PROTECTED %token DEFAULT HIDDEN PROTECTED
@ -1224,8 +1224,8 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } |
CHECK_FOR_ERROR CHECK_FOR_ERROR
}; };
ParamAttr : ZEXT { $$ = ParamAttr::ZExt; } ParamAttr : ZEROEXT { $$ = ParamAttr::ZExt; }
| SEXT { $$ = ParamAttr::SExt; } | SIGNEXT { $$ = ParamAttr::SExt; }
| INREG { $$ = ParamAttr::InReg; } | INREG { $$ = ParamAttr::InReg; }
| SRET { $$ = ParamAttr::StructRet; } | SRET { $$ = ParamAttr::StructRet; }
| NOALIAS { $$ = ParamAttr::NoAlias; } | NOALIAS { $$ = ParamAttr::NoAlias; }
@ -1240,7 +1240,8 @@ OptParamAttrs : /* empty */ { $$ = ParamAttr::None; }
FuncAttr : NORETURN { $$ = ParamAttr::NoReturn; } FuncAttr : NORETURN { $$ = ParamAttr::NoReturn; }
| NOUNWIND { $$ = ParamAttr::NoUnwind; } | NOUNWIND { $$ = ParamAttr::NoUnwind; }
| ParamAttr | ZEROEXT { $$ = ParamAttr::ZExt; }
| SIGNEXT { $$ = ParamAttr::SExt; }
; ;
OptFuncAttrs : /* empty */ { $$ = ParamAttr::None; } OptFuncAttrs : /* empty */ { $$ = ParamAttr::None; }

View File

@ -90,9 +90,9 @@ std::string
ParamAttrsList::getParamAttrsText(uint16_t Attrs) { ParamAttrsList::getParamAttrsText(uint16_t Attrs) {
std::string Result; std::string Result;
if (Attrs & ParamAttr::ZExt) if (Attrs & ParamAttr::ZExt)
Result += "zext "; Result += "zeroext ";
if (Attrs & ParamAttr::SExt) if (Attrs & ParamAttr::SExt)
Result += "sext "; Result += "signext ";
if (Attrs & ParamAttr::NoReturn) if (Attrs & ParamAttr::NoReturn)
Result += "noreturn "; Result += "noreturn ";
if (Attrs & ParamAttr::NoUnwind) if (Attrs & ParamAttr::NoUnwind)

View File

@ -0,0 +1,9 @@
; 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)

View File

@ -1,4 +1,4 @@
// RUN: %llvmgcc %s -o - -S -emit-llvm -O3 | grep {i8 sext} // RUN: %llvmgcc %s -o - -S -emit-llvm -O3 | grep {i8 signext}
// PR1513 // PR1513
struct s{ struct s{

View File

@ -9,7 +9,7 @@
%struct.__fooString = type opaque %struct.__fooString = type opaque
%struct.__fooV = type opaque %struct.__fooV = type opaque
%struct.fooXBase = type { i32, [4 x i8] } %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_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_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 = type { i8*, i8*, i32 }
@ -27,7 +27,7 @@
@str15 = external constant [24 x i8] ; <[24 x i8]*> [#uses=1] @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: entry:
%args = alloca i8*, align 4 ; <i8**> [#uses=5] %args = alloca i8*, align 4 ; <i8**> [#uses=5]
%args4 = bitcast i8** %args to i8* ; <i8*> [#uses=2] %args4 = bitcast i8** %args to i8* ; <i8*> [#uses=2]
@ -75,12 +75,12 @@ 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] %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 store %struct.aa_ss* %tmp63, %struct.aa_ss** @s.10319
%tmp66137 = volatile load i8** %args ; <i8*> [#uses=1] %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 ret i8 %tmp73138
cond_next64: ; preds = %cond_true58 cond_next64: ; preds = %cond_true58
%tmp66 = volatile load i8** %args ; <i8*> [#uses=1] %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 ret i8 %tmp73
cond_true111: ; preds = %cond_true111, %bb48 cond_true111: ; preds = %cond_true111, %bb48
@ -98,13 +98,13 @@ cond_true111: ; preds = %cond_true111, %bb48
bb114: ; preds = %cond_true111, %bb48 bb114: ; preds = %cond_true111, %bb48
call void @llvm.va_end( i8* %args4 ) 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 ret i8 %tmp122
} }
declare i32 @_fooXRegisterClass(%struct.fooXClass*) 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*, ...) declare %struct.aa_object* @aa_mm(%struct.aa_object*, %struct.aa_ss*, ...)

View File

@ -47,12 +47,12 @@ target triple = "arm-linux-gnueabi"
%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.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.initial_value_struct = type opaque
%struct.lang_decl = 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_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_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*) zext * } %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*) zext *, i32 (%struct.tree_node*)* } %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*) 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_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_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.lang_type = type opaque
%struct.language_function = type opaque %struct.language_function = type opaque
@ -64,7 +64,7 @@ target triple = "arm-linux-gnueabi"
%struct.output_buffer = type { %struct.obstack, %struct.FILE*, i32, [128 x i8] } %struct.output_buffer = type { %struct.obstack, %struct.FILE*, i32, [128 x i8] }
%struct.phi_arg_d = type { %struct.tree_node*, i8 } %struct.phi_arg_d = type { %struct.tree_node*, i8 }
%struct.pointer_set_t = type opaque %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.ptr_info_def = type { i8, %struct.bitmap_head_def*, %struct.tree_node* }
%struct.real_value = type { i8, [3 x i8], [5 x i32] } %struct.real_value = type { i8, [3 x i8], [5 x i32] }
%struct.reg_attrs = type { %struct.tree_node*, i64 } %struct.reg_attrs = type { %struct.tree_node*, i64 }
@ -354,7 +354,7 @@ declare i64 @get_alias_set(%struct.tree_node*)
declare i32 @alias_sets_conflict_p(i64, 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* @check_pointer_types_r(%struct.tree_node**, i32*, i8*)
@ -380,7 +380,7 @@ declare fastcc %struct.tree_node* @shortcut_cond_expr(%struct.tree_node*)
declare %struct.tree_node* @expr_last(%struct.tree_node*) 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 fastcc void @gimple_pop_condition(%struct.tree_node**)
@ -388,9 +388,9 @@ declare %struct.tree_node* @gimple_build_eh_filter(%struct.tree_node*, %struct.t
declare void @annotate_all_with_locus(%struct.tree_node**, i32, i32) 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: entry:
%internal_post = alloca %struct.tree_node*, align 4 ; <%struct.tree_node**> [#uses=2] %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] %pre_p_addr.0 = select i1 false, %struct.tree_node** null, %struct.tree_node** %pre_p ; <%struct.tree_node**> [#uses=7]
@ -598,7 +598,7 @@ cond_next3113: ; preds = %cond_next3074
ret i32 0 ret i32 0
bb3351: ; preds = %cond_next3074 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] icmp eq i8 %tmp3354, 0 ; <i1>:7 [#uses=1]
%tmp3424 = load i32* null ; <i32> [#uses=1] %tmp3424 = load i32* null ; <i32> [#uses=1]
br i1 %7, label %cond_next3417, label %cond_true3356 br i1 %7, label %cond_next3417, label %cond_true3356
@ -640,7 +640,7 @@ cond_true4315: ; preds = %cond_next4300
unreachable unreachable
cond_next4327: ; preds = %cond_next4300 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 ret i32 0
bb4339: ; preds = %cond_next298 bb4339: ; preds = %cond_next298
@ -714,8 +714,8 @@ bb6296: ; preds = %cond_next298
cond_next6474: ; preds = %cond_next298 cond_next6474: ; preds = %cond_next298
icmp eq %struct.tree_node** %internal_post, %post_p_addr.0 ; <i1>:11 [#uses=1] 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] %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] %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*) zext * @is_gimple_val, i32 1 ) ; <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 ret i32 0
bb7444: ; preds = %cond_next298 bb7444: ; preds = %cond_next298
@ -728,7 +728,7 @@ bb7478: ; preds = %bb277
ret i32 0 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 void @gimplify_and_add(%struct.tree_node*, %struct.tree_node**)
@ -738,17 +738,17 @@ declare %struct.tree_node* @get_formal_tmp_var(%struct.tree_node*, %struct.tree_
declare fastcc void @gimplify_init_ctor_preeval(%struct.tree_node**, %struct.tree_node**, %struct.tree_node**, %struct.gimplify_init_ctor_preeval_data*) 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 %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 void @categorize_ctor_elements(%struct.tree_node*, i64*, i64*, i64*, i8*)
@ -764,21 +764,21 @@ declare void @gimplify_stmt(%struct.tree_node**)
declare %struct.tree_node* @get_base_address(%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 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 %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 %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_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* @tree_cons_stat(%struct.tree_node*, %struct.tree_node*, %struct.tree_node*)
@ -786,31 +786,31 @@ 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 %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 %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 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* @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 void @error(i8*, ...)
declare %struct.tree_node* @build_empty_stmt() 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 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 i32 @call_expr_flags(%struct.tree_node*)
@ -862,7 +862,7 @@ declare void @tsi_delink(%struct.tree_stmt_iterator*)
declare void @tsi_link_before(%struct.tree_stmt_iterator*, %struct.tree_node*, i32) 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 @print_generic_expr(%struct.FILE*, %struct.tree_node*, i32)
@ -870,13 +870,13 @@ declare void @debug_tree(%struct.tree_node*)
declare void @internal_error(i8*, ...) 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 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.varray_head_tag* @varray_init(i32, i32, i8*)
@ -886,21 +886,21 @@ 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 %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* @array_ref_element_size(%struct.tree_node*)
declare %struct.tree_node* @component_ref_field_offset(%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 void @varray_underflow(%struct.varray_head_tag*, i8*, i32, i8*)
declare i32 @list_length(%struct.tree_node*) 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 i8* @xstrdup(i8*)
@ -912,11 +912,11 @@ declare %struct.tree_node* @build_tree_list_stat(%struct.tree_node*, %struct.tre
declare %struct.tree_node* @chainon(%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*) 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 void @timevar_push_1(i32)
@ -934,11 +934,11 @@ declare %struct.tree_node* @make_tree_vec_stat(i32)
declare %struct.tree_node* @tsi_split_statement_list_after(%struct.tree_stmt_iterator*) 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 %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*) declare i32 @simple_cst_equal(%struct.tree_node*, %struct.tree_node*)

View File

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

@ -8,7 +8,7 @@
declare void @abort() declare void @abort()
define fastcc void @t(%struct.SString* %word, i8 sext %c) { define fastcc void @t(%struct.SString* %word, i8 signext %c) {
entry: entry:
%tmp1 = icmp eq %struct.SString* %word, null ; <i1> [#uses=1] %tmp1 = icmp eq %struct.SString* %word, null ; <i1> [#uses=1]
br i1 %tmp1, label %cond_true, label %cond_false br i1 %tmp1, label %cond_true, label %cond_false

View File

@ -3,7 +3,7 @@
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | \ ; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | \
; RUN: grep sxtab | wc -l | grep 1 ; RUN: grep sxtab | wc -l | grep 1
define i8 @test1(i32 %A) sext { define i8 @test1(i32 %A) signext {
%B = lshr i32 %A, 8 %B = lshr i32 %A, 8
%C = shl i32 %A, 24 %C = shl i32 %A, 24
%D = or i32 %B, %C %D = or i32 %B, %C
@ -11,7 +11,7 @@ define i8 @test1(i32 %A) sext {
ret i8 %E ret i8 %E
} }
define i32 @test2(i32 %A, i32 %X) sext { define i32 @test2(i32 %A, i32 %X) signext {
%B = lshr i32 %A, 8 %B = lshr i32 %A, 8
%C = shl i32 %A, 24 %C = shl i32 %A, 24
%D = or i32 %B, %C %D = or i32 %B, %C

View File

@ -2,19 +2,19 @@
; 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 uxtab | wc -l | grep 1
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6 | grep uxth | 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 %B.u = trunc i32 %A.u to i8
ret i8 %B.u 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 %C.u = trunc i32 %B.u to i8
%D.u = zext i8 %C.u to i32 %D.u = zext i8 %C.u to i32
%E.u = add i32 %A.u, %D.u %E.u = add i32 %A.u, %D.u
ret i32 %E.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 %B.u = lshr i32 %A.u, 8
%C.u = shl i32 %A.u, 24 %C.u = shl i32 %A.u, 24
%D.u = or i32 %B.u, %C.u %D.u = or i32 %B.u, %C.u

View File

@ -18,19 +18,19 @@
; RUN: grep {s8subq} %t.s | wc -l | grep 2 ; 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: entry:
%tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1] %tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s ret i32 %tmp.3.s
} }
define i32 @ali(i32 sext %x.s) sext { define i32 @ali(i32 signext %x.s) signext {
entry: entry:
%tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1] %tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s 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: entry:
%tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1] %tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
ret i64 %tmp.3.s ret i64 %tmp.3.s
@ -42,13 +42,13 @@ entry:
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: entry:
%tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1] %tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s ret i32 %tmp.3.s
} }
define i32 @sli(i32 sext %x.s) sext { define i32 @sli(i32 signext %x.s) signext {
entry: entry:
%tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1] %tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
ret i32 %tmp.3.s ret i32 %tmp.3.s
@ -66,14 +66,14 @@ entry:
ret i64 %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: entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1] %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s 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: entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1] %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
@ -94,14 +94,14 @@ entry:
ret i64 %tmp.3.s ret i64 %tmp.3.s
} }
define i32 @a4li(i32 sext %y.s) sext { define i32 @a4li(i32 signext %y.s) signext {
entry: entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1] %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
ret i32 %tmp.3.s ret i32 %tmp.3.s
} }
define i32 @a8li(i32 sext %y.s) sext { define i32 @a8li(i32 signext %y.s) signext {
entry: entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1] %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
@ -122,14 +122,14 @@ entry:
ret i64 %tmp.3.s 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: entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
ret i32 %tmp.3.s 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: entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
@ -150,14 +150,14 @@ entry:
ret i64 %tmp.3.s ret i64 %tmp.3.s
} }
define i32 @s4li(i32 sext %y.s) sext { define i32 @s4li(i32 signext %y.s) signext {
entry: entry:
%tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
ret i32 %tmp.3.s ret i32 %tmp.3.s
} }
define i32 @s8li(i32 sext %y.s) sext { define i32 @s8li(i32 signext %y.s) signext {
entry: entry:
%tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
%tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1] %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]

View File

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

View File

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

View File

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

View File

@ -9,7 +9,7 @@ define void @test(i8* %P) {
ret void 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. ; No and's should be needed for the i16s here.
%tmp.1 = lshr i16 %crc, 1 %tmp.1 = lshr i16 %crc, 1
%tmp.7 = xor i16 %tmp.1, 40961 %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 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 %tmp = sext i16 %X to i32
%tmp1 = sext i16 %x to i32 %tmp1 = sext i16 %x to i32
%tmp2 = add i32 %tmp, %tmp1 %tmp2 = add i32 %tmp, %tmp1
@ -20,7 +20,7 @@ define i16 @test2(i16 sext %X, i16 sext %x) sext {
ret i16 %retval ret i16 %retval
} }
define i16 @test3(i32 zext %X) sext { define i16 @test3(i32 zeroext %X) signext {
%tmp1 = lshr i32 %X, 16 %tmp1 = lshr i32 %X, 16
%tmp2 = trunc i32 %tmp1 to i16 %tmp2 = trunc i32 %tmp1 to i16
ret i16 %tmp2 ret i16 %tmp2

View File

@ -1,25 +1,25 @@
; RUN: llvm-as < %s | llc -march=ppc32 | not grep {extsh\\|rlwinm} ; 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 %Y = sext i16 %X to i32 ;; dead
ret i32 %Y ret i32 %Y
} }
define i32 @test2(i16 zext %X) { define i32 @test2(i16 zeroext %X) {
%Y = sext i16 %X to i32 %Y = sext i16 %X to i32
%Z = and i32 %Y, 65535 ;; dead %Z = and i32 %Y, 65535 ;; dead
ret i32 %Z ret i32 %Z
} }
define void @test3() { 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 %tmp.1 = icmp slt i16 %tmp.0, 1234
br i1 %tmp.1, label %then, label %UnifiedReturnBlock br i1 %tmp.1, label %then, label %UnifiedReturnBlock
then: then:
call i32 @test1(i16 0 sext) call i32 @test1(i16 0 signext)
ret void ret void
UnifiedReturnBlock: UnifiedReturnBlock:
ret void ret void
@ -46,7 +46,7 @@ define i32 @test6(i32* %P) {
ret i32 %tmp.2 ret i32 %tmp.2
} }
define i16 @test7(float %a) zext { define i16 @test7(float %a) zeroext {
%tmp.1 = fptoui float %a to i16 %tmp.1 = fptoui float %a to i16
ret i16 %tmp.1 ret i16 %tmp.1
} }

View File

@ -3,7 +3,7 @@
%struct.XDesc = type <{ i32, %struct.OpaqueXDataStorageType** }> %struct.XDesc = type <{ i32, %struct.OpaqueXDataStorageType** }>
%struct.OpaqueXDataStorageType = type opaque %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*, ...) declare void @r_raise(i64, i8*, ...)
@ -18,7 +18,7 @@ cond_true109: ; preds = %entry
br i1 false, label %cond_next164, label %cond_true239 br i1 false, label %cond_next164, label %cond_true239
cond_next164: ; preds = %cond_true109 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 ) call void (i64, i8*, ...)* @r_raise( i64 0, i8* null )
unreachable unreachable

View File

@ -431,9 +431,9 @@ declare i32 @report__ident_int(i32 %x)
declare i8 @report__equal(i32 %x, i32 %y) 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 i8 @report__ident_bool(i8 %x)
@ -451,4 +451,4 @@ declare void @report__legal_file_name(%struct.string___XUP* sret %agg.result, i
declare void @__gnat_rcheck_06(i8*, i32) 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)

View File

@ -4,7 +4,7 @@
; RUN: llvm-as < %s | llc -march=x86 | grep {\\(and\\)\\|\\(test.*\\\$1\\)} | \ ; RUN: llvm-as < %s | llc -march=x86 | grep {\\(and\\)\\|\\(test.*\\\$1\\)} | \
; RUN: wc -l | grep 6 ; RUN: wc -l | grep 6
define i1 @test1(i32 %X) zext { define i1 @test1(i32 %X) zeroext {
%Y = trunc i32 %X to i1 %Y = trunc i32 %X to i1
ret i1 %Y ret i1 %Y
} }

View File

@ -7,7 +7,7 @@ target datalayout = "e-p:64:64"
target triple = "x86_64-apple-darwin8" target triple = "x86_64-apple-darwin8"
define i32 @test(i16 sext %X) { define i32 @test(i16 signext %X) {
entry: entry:
%tmp12 = sext i16 %X to i32 ; <i32> [#uses=1] %tmp12 = sext i16 %X to i32 ; <i32> [#uses=1]
ret i32 %tmp12 ret i32 %tmp12

View File

@ -4,9 +4,9 @@ target datalayout = "e-p:64:64"
target triple = "x86_64-apple-darwin8" target triple = "x86_64-apple-darwin8"
define void @bar(i16 zext %A) { define void @bar(i16 zeroext %A) {
tail call void @foo( i16 %A sext ) tail call void @foo( i16 %A signext )
ret void ret void
} }
declare void @foo(i16 sext ) declare void @foo(i16 signext )

View File

@ -2,21 +2,21 @@
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll ; RUN: diff %t1.ll %t2.ll
%ZFunTy = type i32(i8 zext) %ZFunTy = type i32(i8 zeroext)
%SFunTy = type i32(i8 sext) %SFunTy = type i32(i8 signext)
declare i16 @"test"(i16 sext %arg) sext declare i16 @"test"(i16 signext %arg) signext
declare i8 @"test2" (i16 zext %a2) zext declare i8 @"test2" (i16 zeroext %a2) zeroext
declare i32 @"test3"(i32* noalias %p) declare i32 @"test3"(i32* noalias %p)
declare void @exit(i32) noreturn nounwind 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 %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 %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 %retVal = sext i16 %two to i32
ret i32 %retVal ret i32 %retVal
} }

View File

@ -2,18 +2,18 @@
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll ; RUN: diff %t1.ll %t2.ll
%ZFunTy = type i33(i8 zext) %ZFunTy = type i33(i8 zeroext)
%SFunTy = type i33(i8 sext) %SFunTy = type i33(i8 signext)
declare i16 @"test"(i16 sext %arg) sext declare i16 @"test"(i16 signext %arg) signext
declare i8 @"test2" (i16 zext %a2) zext declare i8 @"test2" (i16 zeroext %a2) zeroext
define i33 @main(i33 %argc, i8 **%argv) { define i33 @main(i33 %argc, i8 **%argv) {
%val = trunc i33 %argc to i16 %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 %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 %retVal = sext i16 %two to i33
ret i33 %retVal ret i33 %retVal
} }

View File

@ -11,7 +11,7 @@ cond_true: ; preds = %entry
ret i32 0 ret i32 0
cond_next: ; preds = %entry 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] to label %invcont unwind label %cleanup690 ; <i16> [#uses=0]
invcont: ; preds = %cond_next invcont: ; preds = %cond_next
@ -63,7 +63,7 @@ cleanup690: ; preds = %cond_next
ret i32 0 ret i32 0
} }
declare i16 @_ZN12token_stream4openEPKc(i8*, i8*) sext declare i16 @_ZN12token_stream4openEPKc(i8*, i8*) signext
declare i32 @printf(i8*, ...) declare i32 @printf(i8*, ...)

View File

@ -6,7 +6,7 @@ target triple = "thumb-apple-darwin8"
@"L_OBJC_IMAGE_INFO" = internal global [2 x i32] zeroinitializer ; <[2 x i32]*> [#uses=1] @"L_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]* @"L_OBJC_IMAGE_INFO" to i8*) ] ; <[1 x i8*]*> [#uses=0] @llvm.used = appending global [1 x i8*] [ i8* bitcast ([2 x i32]* @"L_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: entry:
%iftmp.0.0.in.in = select i1 false, i16* @replacementUnichar, i16* null ; <i16*> [#uses=1] %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] %iftmp.0.0.in = load i16* %iftmp.0.0.in.in ; <i16> [#uses=1]

View File

@ -4,7 +4,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" 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" target triple = "i686-pc-linux-gnu"
define i32 @testcase(i5 zext %k) { define i32 @testcase(i5 zeroext %k) {
entry: entry:
br label %bb2 br label %bb2