[PATCH] D128830: [Pipelines] Introduce DAE after ArgumentPromotion

Pavel Samolysov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 24 03:13:43 PDT 2022


psamolysov added a comment.

I tried to triage a bit. The test `lldb\test\API\functionalities\unused-inlined-parameters\TestUnusedInlinedParameters.py` compiles the code in `main.c` with `-O1` and generates the following IR for the `@f` function:

  ; Function Attrs: alwaysinline nounwind uwtable
  define dso_local void @f(ptr nocapture noundef readnone %unused1, i32 noundef %used, i32 noundef %unused2) local_unnamed_addr #1 {
  entry:
    tail call void @use(i32 noundef %used)
    ret void
  }

With the reverted patch, the IR looks like the follow:

  ; Function Attrs: alwaysinline nounwind uwtable
  define dso_local void @f(ptr nocapture readnone %unused1, i32 noundef %used, i32 %unused2) local_unnamed_addr #1 {
  entry:
    tail call void @use(i32 noundef %used)
    ret void
  }

So, as we can see, the attribute `readnone` is present for the first unused argument for which an additional piece of the DWARF code is generated in both IRs but the `noundef` attribute is omitted in the second case (so, this attribute is introduces by some changes in the patch and this is "documented" by the changes in the `llvm/test/Transforms/InstCombine/unused-nonnull.ll` test).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D128830



More information about the llvm-commits mailing list