[PATCH] D151276: Weaken MFI Max Call Frame Size Assertion

Oskar Wirga via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 31 11:24:56 PDT 2023


oskarwirga updated this revision to Diff 527142.
oskarwirga added a comment.

Make sure we don't go from false to true.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D151276

Files:
  llvm/lib/CodeGen/PrologEpilogInserter.cpp
  llvm/test/CodeGen/AArch64/compute-call-frame-size-unreachable-pass.ll


Index: llvm/test/CodeGen/AArch64/compute-call-frame-size-unreachable-pass.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AArch64/compute-call-frame-size-unreachable-pass.ll
@@ -0,0 +1,26 @@
+; RUN: llc < %s -mtriple aarch64-none-linux-android21
+
+; This tests that the MFI assert in unreachableblockelim pass
+; does not trigger
+
+%struct.ngtcp2_crypto_aead = type { i8*, i64 }
+%struct.ngtcp2_crypto_aead_ctx = type { i8* }
+
+; Function Attrs: noinline optnone
+define internal fastcc void @decrypt_pkt() unnamed_addr #0 !type !0 !type !1 {
+entry:
+  br i1 false, label %cont, label %trap, !nosanitize !2
+
+trap:                                             ; preds = %entry
+  unreachable, !nosanitize !2
+
+cont:                                             ; preds = %entry
+  %call = call i32 undef(i8* undef, %struct.ngtcp2_crypto_aead* undef, %struct.ngtcp2_crypto_aead_ctx* undef, i8* undef, i64 undef, i8* undef, i64 undef, i8* undef, i64 undef)
+  ret void
+}
+
+attributes #0 = { noinline optnone }
+
+!0 = !{i64 0, !"_ZTSFlPhPK18ngtcp2_crypto_aeadPKhmS4_mlP16ngtcp2_crypto_kmPFiS_S2_PK22ngtcp2_crypto_aead_ctxS4_mS4_mS4_mEE"}
+!1 = !{i64 0, !"_ZTSFlPvPKvS1_mS1_mlS_S_E.generalized"}
+!2 = !{}
Index: llvm/lib/CodeGen/PrologEpilogInserter.cpp
===================================================================
--- llvm/lib/CodeGen/PrologEpilogInserter.cpp
+++ llvm/lib/CodeGen/PrologEpilogInserter.cpp
@@ -376,8 +376,8 @@
       }
 
   assert(!MFI.isMaxCallFrameSizeComputed() ||
-         (MFI.getMaxCallFrameSize() == MaxCallFrameSize &&
-          MFI.adjustsStack() == AdjustsStack));
+         (MFI.getMaxCallFrameSize() >= MaxCallFrameSize &&
+          !(AdjustsStack && !MFI.adjustsStack())));
   MFI.setAdjustsStack(AdjustsStack);
   MFI.setMaxCallFrameSize(MaxCallFrameSize);
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D151276.527142.patch
Type: text/x-patch
Size: 1863 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230531/25778440/attachment.bin>


More information about the llvm-commits mailing list