mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
d866898775
On ELF and COFF an alias is just another name for a position in the file. There is no way to refer to a position in another file, so an alias to undefined is meaningless. MachO currently doesn't support aliases. The spec has a N_INDR, which when implemented will have a different set of restrictions. Adding support for it shouldn't be harder than any other IR extension. For now, having the IR represent what is actually possible with current tools makes it easier to fix the design of GlobalAlias. llvm-svn: 203705
51 lines
2.3 KiB
LLVM
51 lines
2.3 KiB
LLVM
; RUN: llc < %s -mtriple=i386-pc-linux-gnu
|
|
; PR2138
|
|
|
|
%struct.__locale_struct = type { [13 x %struct.locale_data*], i16*, i32*, i32*, [13 x i8*] }
|
|
%struct.anon = type { i8* }
|
|
%struct.locale_data = type { i8*, i8*, i32, i32, { void (%struct.locale_data*)*, %struct.anon }, i32, i32, i32, [0 x %struct.locale_data_value] }
|
|
%struct.locale_data_value = type { i32* }
|
|
|
|
@wcstoll_l = alias i64 (i32*, i32**, i32, %struct.__locale_struct*)* @__wcstoll_l
|
|
|
|
define i64 @____wcstoll_l_internal(i32* %nptr, i32** %endptr, i32 %base, i32 %group, %struct.__locale_struct* %loc) nounwind {
|
|
entry:
|
|
%tmp27 = load i32* null, align 4 ; <i32> [#uses=1]
|
|
%tmp83 = getelementptr i32* %nptr, i32 1 ; <i32*> [#uses=1]
|
|
%tmp233 = add i32 0, -48 ; <i32> [#uses=1]
|
|
br label %bb271.us
|
|
bb271.us: ; preds = %entry
|
|
br label %bb374.outer
|
|
bb311.split: ; preds = %bb305.us
|
|
%tmp313 = add i32 %tmp378.us, -48 ; <i32> [#uses=1]
|
|
br i1 false, label %bb374.outer, label %bb383
|
|
bb327.split: ; preds = %bb314.us
|
|
ret i64 0
|
|
bb374.outer: ; preds = %bb311.split, %bb271.us
|
|
%tmp370371552.pn.in = phi i32 [ %tmp233, %bb271.us ], [ %tmp313, %bb311.split ] ; <i32> [#uses=1]
|
|
%tmp278279.pn = phi i64 [ 0, %bb271.us ], [ %tmp373.reg2mem.0.ph, %bb311.split ] ; <i64> [#uses=1]
|
|
%s.5.ph = phi i32* [ null, %bb271.us ], [ %tmp376.us, %bb311.split ] ; <i32*> [#uses=1]
|
|
%tmp366367550.pn = sext i32 %base to i64 ; <i64> [#uses=1]
|
|
%tmp370371552.pn = zext i32 %tmp370371552.pn.in to i64 ; <i64> [#uses=1]
|
|
%tmp369551.pn = mul i64 %tmp278279.pn, %tmp366367550.pn ; <i64> [#uses=1]
|
|
%tmp373.reg2mem.0.ph = add i64 %tmp370371552.pn, %tmp369551.pn ; <i64> [#uses=1]
|
|
br label %bb374.us
|
|
bb374.us: ; preds = %bb314.us, %bb374.outer
|
|
%tmp376.us = getelementptr i32* %s.5.ph, i32 0 ; <i32*> [#uses=3]
|
|
%tmp378.us = load i32* %tmp376.us, align 4 ; <i32> [#uses=2]
|
|
%tmp302.us = icmp eq i32* %tmp376.us, %tmp83 ; <i1> [#uses=1]
|
|
%bothcond484.us = or i1 false, %tmp302.us ; <i1> [#uses=1]
|
|
br i1 %bothcond484.us, label %bb383, label %bb305.us
|
|
bb305.us: ; preds = %bb374.us
|
|
br i1 false, label %bb311.split, label %bb314.us
|
|
bb314.us: ; preds = %bb305.us
|
|
%tmp320.us = icmp eq i32 %tmp378.us, %tmp27 ; <i1> [#uses=1]
|
|
br i1 %tmp320.us, label %bb374.us, label %bb327.split
|
|
bb383: ; preds = %bb374.us, %bb311.split
|
|
ret i64 0
|
|
}
|
|
|
|
define i64 @__wcstoll_l(i32*, i32**, i32, %struct.__locale_struct*) nounwind {
|
|
ret i64 0
|
|
}
|