[llvm-commits] [llvm] r106670 - in /llvm/trunk: test/TableGen/usevalname.td utils/TableGen/Record.cpp

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Wed Jun 23 12:50:39 PDT 2010


Author: bruno
Date: Wed Jun 23 14:50:39 2010
New Revision: 106670

URL: http://llvm.org/viewvc/llvm-project?rev=106670&view=rev
Log:
Fix a tblgen bug.

Given the pattern below as an example:
list<dag> Pattern = [(set RC:$dst, (v4f32 (shufp:src3 RC:$src1,
                            (mem_frag addr:$src2))))];

The right reference resolving should lead to:
list<dag> Pattern = [(set VR128:$dst, (v4f32 (shufp:src3 VR128:$src1,
                            (mem_frag addr:$src2))))];
But was yielding:
list<dag> Pattern = [(set VR128:$dst, (v4f32 (shufp VR128:$src1,
                            (mem_frag addr:$src2))))];

Fix this by passing the right name when creating a new DagInit node.


Added:
    llvm/trunk/test/TableGen/usevalname.td
Modified:
    llvm/trunk/utils/TableGen/Record.cpp

Added: llvm/trunk/test/TableGen/usevalname.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/usevalname.td?rev=106670&view=auto
==============================================================================
--- llvm/trunk/test/TableGen/usevalname.td (added)
+++ llvm/trunk/test/TableGen/usevalname.td Wed Jun 23 14:50:39 2010
@@ -0,0 +1,24 @@
+// RUN: tblgen %s | FileCheck %s
+// XFAIL: vg_leak
+
+class Instr<list<dag> pat> {
+  list<dag> Pattern = pat;
+}
+
+class Reg {
+  int a = 3;
+}
+
+def VR128 : Reg;
+def mem_frag;
+def set;
+def addr;
+def shufp : Reg;
+
+multiclass shuffle<Reg RC> {
+  def rri : Instr<[(set RC:$dst, (shufp:$src3
+                                       RC:$src1, RC:$src2))]>;
+}
+
+// CHECK: shufp:src3
+defm ADD : shuffle<VR128>;

Modified: llvm/trunk/utils/TableGen/Record.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/Record.cpp?rev=106670&r1=106669&r2=106670&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/Record.cpp (original)
+++ llvm/trunk/utils/TableGen/Record.cpp Wed Jun 23 14:50:39 2010
@@ -1262,7 +1262,7 @@
   Init *Op = Val->resolveReferences(R, RV);
 
   if (Args != NewArgs || Op != Val)
-    return new DagInit(Op, "", NewArgs, ArgNames);
+    return new DagInit(Op, ValName, NewArgs, ArgNames);
 
   return this;
 }





More information about the llvm-commits mailing list