mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-04 04:19:25 +00:00
Fix logical error when detecting lifetime intrinsics.
Don't replace a gep/bitcast with 'undef' because that will form a "free(undef)" which in turn means "unreachable". What we wanted was a no-op. Instead, analyze the whole tree and look for all the instructions we need to delete first, then delete them second, not relying on the use_list to stay consistent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136752 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -35,3 +35,14 @@ define void @test3() {
|
||||
call void @llvm.lifetime.end(i64 10, i8* %a)
|
||||
ret void
|
||||
}
|
||||
|
||||
;; This used to crash.
|
||||
define void @test4() {
|
||||
; CHECK: @test4
|
||||
; CHECK-NEXT: ret void
|
||||
%A = call i8* @malloc(i32 16000)
|
||||
%B = bitcast i8* %A to double*
|
||||
%C = bitcast double* %B to i8*
|
||||
call void @free(i8* %C)
|
||||
ret void
|
||||
}
|
||||
|
Reference in New Issue
Block a user