2010-10-06 12:36:30 +08:00
|
|
|
// RUN: tblgen %s | FileCheck %s
|
2010-03-21 07:08:45 +08:00
|
|
|
// XFAIL: vg_leak
|
2010-10-06 12:37:17 +08:00
|
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Substitution of an int.
|
2010-10-06 12:36:30 +08:00
|
|
|
def X1;
|
2006-01-31 14:01:40 +08:00
|
|
|
|
2010-10-06 12:36:30 +08:00
|
|
|
class C1<int N> {
|
|
|
|
dag d = (X1 N);
|
2006-01-31 14:01:40 +08:00
|
|
|
}
|
|
|
|
|
2010-10-06 12:36:30 +08:00
|
|
|
def VAL1 : C1<13>;
|
2006-01-31 14:01:40 +08:00
|
|
|
|
2010-10-06 12:36:30 +08:00
|
|
|
// CHECK: def VAL1 {
|
|
|
|
// CHECK-NEXT: dag d = (X1 13)
|
|
|
|
|
|
|
|
|
2010-10-06 12:37:17 +08:00
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Substitution of a DAG.
|
2010-10-06 12:36:30 +08:00
|
|
|
def X2;
|
|
|
|
|
|
|
|
class yclass;
|
|
|
|
def Y2 : yclass;
|
|
|
|
|
|
|
|
class C2<yclass N> {
|
|
|
|
dag d = (X2 N);
|
|
|
|
dag e = (N X2);
|
|
|
|
}
|
|
|
|
|
|
|
|
def VAL2 : C2<Y2>;
|
|
|
|
|
|
|
|
// CHECK: def VAL2 {
|
|
|
|
// CHECK-NEXT: dag d = (X2 Y2)
|
|
|
|
// CHECK-NEXT: dag e = (Y2 X2)
|
2006-01-31 14:01:40 +08:00
|
|
|
|
2010-10-06 12:55:48 +08:00
|
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Complex dag operator (F.TheOp).
|
|
|
|
|
|
|
|
class operator;
|
|
|
|
def somedef1 : operator;
|
|
|
|
def somedef2 : operator;
|
|
|
|
|
|
|
|
class foo<operator a> {
|
|
|
|
operator TheOp = a;
|
|
|
|
}
|
|
|
|
|
|
|
|
class bar<foo F, operator a> {
|
|
|
|
dag Dag1 = (somedef1 1);
|
|
|
|
dag Dag2 = (a 2);
|
|
|
|
dag Dag3 = (F.TheOp 2);
|
|
|
|
}
|
|
|
|
|
|
|
|
def foo1 : foo<somedef1>;
|
|
|
|
def foo2 : foo<somedef2>;
|
|
|
|
|
|
|
|
def VAL3 : bar<foo1, somedef1>;
|
|
|
|
|
|
|
|
// CHECK: def VAL3 { // bar
|
|
|
|
// CHECK-NEXT: dag Dag1 = (somedef1 1);
|
|
|
|
// CHECK-NEXT: dag Dag2 = (somedef1 2);
|
|
|
|
// CHECK-NEXT: dag Dag3 = (somedef1 2);
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
|
|
|
|
|
|
|
|
def VAL4 : bar<foo2, somedef2>;
|
|
|
|
// CHECK: def VAL4 {
|
|
|
|
// CHECK-NEXT: dag Dag1 = (somedef1 1);
|
|
|
|
// CHECK-NEXT: dag Dag2 = (somedef2 2);
|
|
|
|
// CHECK-NEXT: dag Dag3 = (somedef2 2);
|
|
|
|
// CHECK-NEXT: }
|