[LLVMbugs] [Bug 11243] New: -deadargelim changes function return value

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Oct 26 14:37:40 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=11243

           Summary: -deadargelim changes function return value
           Product: new-bugs
           Version: 2.9
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: tbfleming at gmail.com
                CC: llvmbugs at cs.uiuc.edu


-deadargelim replaces a constant pointer with null

Source
======
%InnerStruct = type { i8* }
%OuterStruct = type { i32, %InnerStruct }

@str = internal constant [4 x i8] c"aaa\00"

declare void @externalFunction(i8*)

define private fastcc %OuterStruct @privateFunction(%OuterStruct %a) {
entry:
  ret %OuterStruct %a
}

define void @main() {
entry:
  %0 = call fastcc %OuterStruct @privateFunction(%OuterStruct { i32 9,
%InnerStruct { i8* getelementptr inbounds ([4 x i8]* @str, i32 0, i32 0) } })
  %s = extractvalue %OuterStruct %0, 1, 0
  call void @externalFunction(i8* %s)
  ret void
}

After -deadargelim
==================
%InnerStruct = type { i8* }
%OuterStruct = type { i32, %InnerStruct }

@str = internal constant [4 x i8] c"aaa\00"

declare void @externalFunction(i8*)

define private fastcc %InnerStruct @privateFunction() {
entry:
  %oldret = extractvalue %OuterStruct zeroinitializer, 1
  ret %InnerStruct %oldret
}

define void @main() {
entry:
  %0 = call fastcc %InnerStruct @privateFunction()
  %oldret = insertvalue %OuterStruct undef, %InnerStruct %0, 1
  %s = extractvalue %OuterStruct %oldret, 1, 0
  call void @externalFunction(i8* %s)
  ret void
}

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list