mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
53a98f46fd
delete a node even if it was not dead in some cases. Instead, just add it to the worklist. Also, make sure to use the CombineTo methods, as it was doing things that were unsafe: the top level combine loop could touch dangling memory. This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll llvm-svn: 46384
32 lines
1.3 KiB
LLVM
32 lines
1.3 KiB
LLVM
; RUN: llvm-as < %s | llc
|
|
; rdar://5707064
|
|
|
|
define i32 @f(i16* %pc) {
|
|
entry:
|
|
%acc = alloca i64, align 8 ; <i64*> [#uses=4]
|
|
%tmp97 = load i64* %acc, align 8 ; <i64> [#uses=1]
|
|
%tmp98 = and i64 %tmp97, 4294967295 ; <i64> [#uses=1]
|
|
%tmp99 = load i64* null, align 8 ; <i64> [#uses=1]
|
|
%tmp100 = and i64 %tmp99, 4294967295 ; <i64> [#uses=1]
|
|
%tmp101 = mul i64 %tmp98, %tmp100 ; <i64> [#uses=1]
|
|
%tmp103 = lshr i64 %tmp101, 0 ; <i64> [#uses=1]
|
|
%tmp104 = load i64* %acc, align 8 ; <i64> [#uses=1]
|
|
%.cast105 = zext i32 32 to i64 ; <i64> [#uses=1]
|
|
%tmp106 = lshr i64 %tmp104, %.cast105 ; <i64> [#uses=1]
|
|
%tmp107 = load i64* null, align 8 ; <i64> [#uses=1]
|
|
%tmp108 = and i64 %tmp107, 4294967295 ; <i64> [#uses=1]
|
|
%tmp109 = mul i64 %tmp106, %tmp108 ; <i64> [#uses=1]
|
|
%tmp112 = add i64 %tmp109, 0 ; <i64> [#uses=1]
|
|
%tmp116 = add i64 %tmp112, 0 ; <i64> [#uses=1]
|
|
%tmp117 = add i64 %tmp103, %tmp116 ; <i64> [#uses=1]
|
|
%tmp118 = load i64* %acc, align 8 ; <i64> [#uses=1]
|
|
%tmp120 = lshr i64 %tmp118, 0 ; <i64> [#uses=1]
|
|
%tmp121 = load i64* null, align 8 ; <i64> [#uses=1]
|
|
%tmp123 = lshr i64 %tmp121, 0 ; <i64> [#uses=1]
|
|
%tmp124 = mul i64 %tmp120, %tmp123 ; <i64> [#uses=1]
|
|
%tmp126 = shl i64 %tmp124, 0 ; <i64> [#uses=1]
|
|
%tmp127 = add i64 %tmp117, %tmp126 ; <i64> [#uses=1]
|
|
store i64 %tmp127, i64* %acc, align 8
|
|
ret i32 0
|
|
}
|