[llvm-reduce] Reduce function calling convention
authorArthur Eubanks <aeubanks@google.com>
Mon, 17 Jul 2023 22:17:18 +0000 (15:17 -0700)
committerArthur Eubanks <aeubanks@google.com>
Mon, 17 Jul 2023 22:17:37 +0000 (15:17 -0700)
llvm/test/tools/llvm-reduce/reduce-calling-convention.ll [new file with mode: 0644]
llvm/tools/llvm-reduce/deltas/ReduceFunctionBodies.cpp

diff --git a/llvm/test/tools/llvm-reduce/reduce-calling-convention.ll b/llvm/test/tools/llvm-reduce/reduce-calling-convention.ll
new file mode 100644 (file)
index 0000000..165a2cd
--- /dev/null
@@ -0,0 +1,18 @@
+; Test that llvm-reduce can remove function calling conventions.
+;
+; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=function-data --test FileCheck --test-arg --check-prefixes=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t
+; RUN: FileCheck --check-prefix=CHECK-FINAL --implicit-check-not=fastcc %s < %t
+
+; CHECK-INTERESTINGNESS: declare
+; CHECK-INTERESTINGNESS-SAME: void @f
+
+; CHECK-FINAL: declare void @f()
+
+declare void @f()
+
+; CHECK-INTERESTINGNESS: declare
+; CHECK-INTERESTINGNESS-SAME: void @g
+
+; CHECK-FINAL: declare void @g()
+
+declare fastcc void @g()
index 21875ba..16ab357 100644 (file)
@@ -54,6 +54,9 @@ static void reduceFunctionData(Oracle &O, ReducerWorkItem &WorkItem) {
 
     if (F.hasPrologueData() && !O.shouldKeep())
       F.setPrologueData(nullptr);
+
+    if (F.getCallingConv() != CallingConv::C && !O.shouldKeep())
+      F.setCallingConv(CallingConv::C);
   }
 }