mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-24 09:29:42 +00:00
When visiting the initial list of "root" instructions (those which must always be alive), for those that are integer-valued (such as invokes returning an integer), we mark their bits as (initially) all dead (we might, obviously, find uses of those bits later, but all bits are assumed dead until proven otherwise). Don't do so, however, if we're already seen a use of those bits by another root instruction (such as a store). Fixes a miscompile of the sanitizer unit tests on x86_64. Also, add a debug line for visiting the root instructions, and remove a debug line which tried to print instructions being removed (printing dead instructions is dangerous, and can sometimes crash). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229618 91177308-0d34-0410-b5e6-96231b3b80d8
38 lines
1.1 KiB
LLVM
38 lines
1.1 KiB
LLVM
; RUN: opt -bdce -S < %s | FileCheck %s
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
declare i32 @__gxx_personality_v0(...)
|
|
|
|
define fastcc void @_ZN11__sanitizerL12TestRegistryEPNS_14ThreadRegistryEb() #0 {
|
|
entry:
|
|
br i1 undef, label %if.else, label %entry.if.end_crit_edge
|
|
|
|
if.else:
|
|
ret void
|
|
|
|
invoke.cont70:
|
|
store i32 %call71, i32* undef, align 4
|
|
br label %if.else
|
|
|
|
; CHECK-LABEL: @_ZN11__sanitizerL12TestRegistryEPNS_14ThreadRegistryEb
|
|
; CHECK: store i32 %call71
|
|
|
|
lpad65.loopexit.split-lp.loopexit.split-lp:
|
|
br label %if.else
|
|
|
|
lpad65.loopexit.split-lp.loopexit.split-lp.loopexit:
|
|
%lpad.loopexit1121 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
|
|
cleanup
|
|
br label %lpad65.loopexit.split-lp.loopexit.split-lp
|
|
|
|
entry.if.end_crit_edge:
|
|
%call71 = invoke i32 @_ZN11__sanitizer14ThreadRegistry12CreateThreadEmbjPv()
|
|
to label %invoke.cont70 unwind label %lpad65.loopexit.split-lp.loopexit.split-lp.loopexit
|
|
}
|
|
|
|
declare i32 @_ZN11__sanitizer14ThreadRegistry12CreateThreadEmbjPv()
|
|
|
|
attributes #0 = { uwtable }
|
|
|