[PATCH] D129997: [Local] Allow creating callbr with duplicate successors

Nick Desaulniers via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 19 14:28:49 PDT 2022


nickdesaulniers added a comment.

Initial IR reduction:

  ; llc -O2 -mtriple=powerpc64le-unknown-linux-gnu reduced.ll
  target datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
  target triple = "powerpc64le-unknown-linux-gnu"
  
  ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn
  declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0
  
  define void @ceph_con_v2_try_read(i32 %__trans_tmp_3.sroa.0.0.copyload, i1 %tobool.not.i.i) {
  entry:
    %skip.i.i = alloca i32, i32 0, align 4
    br label %for.cond
  
  for.cond:                                         ; preds = %for.cond.backedge, %entry
    %cond = icmp eq i32 %__trans_tmp_3.sroa.0.0.copyload, 0
    br i1 %cond, label %sw.bb, label %for.cond.backedge
  
  sw.bb:                                            ; preds = %for.cond
    %call.i.i2 = call i32 null(ptr %skip.i.i)
    br i1 %tobool.not.i.i, label %if.else.i.i, label %process_message_header.exit.i
  
  if.else.i.i:                                      ; preds = %sw.bb
    callbr void asm sideeffect "", "!i"()
            to label %if.end.i [label %if.end.i]
  
  process_message_header.exit.i:                    ; preds = %sw.bb
    call void @llvm.lifetime.end.p0(i64 0, ptr %skip.i.i)
    br label %for.cond.backedge
  
  if.end.i:                                         ; preds = %if.else.i.i, %if.else.i.i
    call void @llvm.lifetime.end.p0(i64 0, ptr %skip.i.i)
    br label %for.cond.backedge
  
  for.cond.backedge:                                ; preds = %if.end.i, %process_message_header.exit.i, %for.cond
    br label %for.cond
  }
  
  attributes #0 = { argmemonly nocallback nofree nosync nounwind willreturn }


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129997/new/

https://reviews.llvm.org/D129997



More information about the llvm-commits mailing list