MachineCSE: Report this requires SSA
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 13 Apr 2022 14:45:27 +0000 (10:45 -0400)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 15 Apr 2022 00:21:21 +0000 (20:21 -0400)
llvm/lib/CodeGen/MachineCSE.cpp
llvm/test/CodeGen/AMDGPU/machine-cse-ssa.mir [new file with mode: 0644]

index 1489474..e60fd9f 100644 (file)
@@ -90,6 +90,11 @@ namespace {
       AU.addPreserved<MachineBlockFrequencyInfo>();
     }
 
+    MachineFunctionProperties getRequiredProperties() const override {
+      return MachineFunctionProperties()
+        .set(MachineFunctionProperties::Property::IsSSA);
+    }
+
     void releaseMemory() override {
       ScopeMap.clear();
       PREMap.clear();
diff --git a/llvm/test/CodeGen/AMDGPU/machine-cse-ssa.mir b/llvm/test/CodeGen/AMDGPU/machine-cse-ssa.mir
new file mode 100644 (file)
index 0000000..89b204d
--- /dev/null
@@ -0,0 +1,15 @@
+# REQUIRES: asserts
+# RUN: not --crash llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=machine-cse -o /dev/null %s 2>&1 | FileCheck -check-prefix=ERR %s
+
+# ERR: MachineFunctionProperties required by Machine Common Subexpression Elimination pass are not met by function not_ssa.
+# ERR-NEXT: Required properties: IsSSA
+# ERR-NEXT: Current properties: NoPHIs
+
+---
+name: not_ssa
+body: |
+  bb.0:
+    %0:sgpr_32 = S_MOV_B32 0
+    %0:sgpr_32 = S_MOV_B32 1
+    S_ENDPGM 0, implicit %0
+...