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

             Bug #: 12460
           Summary: load not folded if ShouldEmitAsBranches is true
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    Classification: Unclassified


In

%struct.cmdline_options = type { i8*, i8*, i8, i8, i8, i8 }
@g_options = global %struct.cmdline_options zeroinitializer, align 8
@foobar = global i32* null, align 8
define void @_Z11processargsv() uwtable ssp {
  %1 = load i8* getelementptr inbounds (%struct.cmdline_options* @g_options,
i64 0, i32 3), align 1, !range !0
  %2 = icmp eq i8 %1, 0
  %3 = load i8* getelementptr inbounds (%struct.cmdline_options* @g_options,
i64 0, i32 5), align 1, !range !0
  %4 = icmp eq i8 %3, 0
  %or.cond = or i1 %2, %4
  br i1 %or.cond, label %6, label %5
; <label>:5                                       ; preds = %0
  tail call void @_Z3foov()
  br label %6
; <label>:6                                       ; preds = %0, %5
  ret void
}
declare void @_Z3foov()
!0 = metadata !{i8 0, i8 2} 

We decide to split the or into multiple branches and produce

    cmpb    $0, _g_options+17(%rip)
    je    LBB0_2
    movb    _g_options+19(%rip), %al
    testb    %al, %al
    jne    LBB0_3

The first load is folded into the compare, but the second one is not.

In this particular testcase the best is probably to not split, but the issues
is more general. llc -view-isel-dags shows both loads in the first BB, so we
are probably just splitting the 'or' too late.

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to