mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 23:32:58 +00:00
Verify that we don't optimize null return checks to the nothrow_t version of operator new.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191325 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4da61345ec
commit
7e720f485f
@ -122,6 +122,29 @@ cast.end: ; preds = %cast.notnull, %entr
|
||||
|
||||
declare noalias i8* @_Znwm(i64)
|
||||
|
||||
%"struct.std::nothrow_t" = type { i8 }
|
||||
@_ZSt7nothrow = external global %"struct.std::nothrow_t"
|
||||
|
||||
define i8* @operator_new_nothrow_t() {
|
||||
entry:
|
||||
%call = tail call noalias i8* @_ZnamRKSt9nothrow_t(i64 8, %"struct.std::nothrow_t"* @_ZSt7nothrow)
|
||||
%cmp = icmp eq i8* %call, null
|
||||
br i1 %cmp, label %cast.end, label %cast.notnull
|
||||
|
||||
cast.notnull: ; preds = %entry
|
||||
%add.ptr = getelementptr inbounds i8* %call, i64 4
|
||||
br label %cast.end
|
||||
|
||||
cast.end: ; preds = %cast.notnull, %entry
|
||||
%cast.result = phi i8* [ %add.ptr, %cast.notnull ], [ null, %entry ]
|
||||
ret i8* %cast.result
|
||||
|
||||
; CHECK-LABEL: @operator_new_nothrow_t
|
||||
; CHECK: br i1 %cmp, label %cast.end, label %cast.notnull
|
||||
}
|
||||
|
||||
declare i8* @_ZnamRKSt9nothrow_t(i64, %"struct.std::nothrow_t"*) nounwind
|
||||
|
||||
define i8* @malloc_can_return_null() {
|
||||
entry:
|
||||
%call = tail call noalias i8* @malloc(i64 8)
|
||||
|
Loading…
x
Reference in New Issue
Block a user