MIR Serialization: Report an error when machine functions have the same name.
authorAlex Lorenz <arphaman@gmail.com>
Mon, 15 Jun 2015 22:23:23 +0000 (22:23 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Mon, 15 Jun 2015 22:23:23 +0000 (22:23 +0000)
This commit reports an error when the MIR parser encounters a machine
function with the name that is the same as the name of a different
machine function.

Reviewers: Duncan P. N. Exon Smith

Differential Revision: http://reviews.llvm.org/D10130

llvm-svn: 239774

llvm/lib/CodeGen/MIRParser/MIRParser.cpp
llvm/test/CodeGen/MIR/machine-function-redefinition-error.mir [new file with mode: 0644]

index 69ecb92..19e845f 100644 (file)
@@ -156,6 +156,9 @@ bool MIRParserImpl::parseMachineFunction(yaml::Input &In) {
   if (In.error())
     return true;
   auto FunctionName = MF->Name;
+  if (Functions.find(FunctionName) != Functions.end())
+    return error(Twine("redefinition of machine function '") + FunctionName +
+                 "'");
   Functions.insert(std::make_pair(FunctionName, std::move(MF)));
   return false;
 }
diff --git a/llvm/test/CodeGen/MIR/machine-function-redefinition-error.mir b/llvm/test/CodeGen/MIR/machine-function-redefinition-error.mir
new file mode 100644 (file)
index 0000000..be84161
--- /dev/null
@@ -0,0 +1,10 @@
+# RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
+# This test ensures that the machine function errors are reported correctly.
+
+---
+name:            foo
+...
+---
+# CHECK: redefinition of machine function 'foo'
+name:            foo
+...