Skip to content

llvm-reduce should remove lifetime.start/end when promoting alloca'd ptr to arg #93713

Open
@ManuelJBrito

Description

@ManuelJBrito

Lifetime.start/end in general should only be used for alloca'd pointers. When running the "operands-to-args" pass the lifetimes should be dropped.

define void @src() {
entry:
  %p = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %p)
  store i32 10, ptr %p, align 4
  %a = load i32, ptr %p, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %p)
  ret void
}

Running llvm-reduce --delta-passes=operands-to-args --test=test.sh src.ll

; ModuleID = 'src.ll'
source_filename = "src.ll"

define void @src(ptr %p) {
entry:
  %p1 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %p)
  store i32 10, ptr %p, align 4
  %a = load i32, ptr %p, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %p)
  ret void
}

cc @nunoplopes @regehr

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions