[llvm-commits] [llvm] r75571 - in /llvm/trunk: lib/Transforms/Scalar/SimplifyCFGPass.cpp test/Transforms/SimplifyCFG/2009-07-13-no-delete-asm.ll
Chris Lattner
clattner at apple.com
Mon Jul 13 21:03:07 PDT 2009
On Jul 13, 2009, at 5:53 PM, Eli Friedman wrote:
> On Mon, Jul 13, 2009 at 5:45 PM, Dale Johannesen<dalej at apple.com>
> wrote:
>> --- llvm/trunk/test/Transforms/SimplifyCFG/2009-07-13-no-delete-
>> asm.ll (added)
>> +++ llvm/trunk/test/Transforms/SimplifyCFG/2009-07-13-no-delete-
>> asm.ll Mon Jul 13 19:45:38 2009
>> @@ -0,0 +1,11 @@
>> +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | grep xor
>> +; ModuleID = '<stdin>'
>> +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-
>> i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-
>> a0:0:64-f80:128:128"
>> +target triple = "i386-apple-darwin9.6"
>> +
>> +define void @bar() nounwind {
>> +entry:
>> + store i16 undef, i16* null
>> + %asmtmp = call i32 asm sideeffect "xor $0, $0",
>> "=={bx},rm,~{dirflag},~{fpsr},~{flags},~{memory}"(i16 undef)
>> nounwind ; <i32> [#uses=0]
>> + ret void
>> +}
>
> Umm, this testcase quite clearly has undefined behavior; what is this
> patch trying to fix?
Beyond that, what does the store have to do with the undef. The store
being undefined means the asm is not reachable, so it should be deleted.
-Chris
More information about the llvm-commits
mailing list