mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-30 06:40:53 +00:00
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. llvm-svn: 106670
This commit is contained in:
parent
f0763e6300
commit
fe5b207577
24
test/TableGen/usevalname.td
Normal file
24
test/TableGen/usevalname.td
Normal file
@ -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>;
|
@ -1262,7 +1262,7 @@ Init *DagInit::resolveReferences(Record &R, const RecordVal *RV) {
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user