| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // RUN: llvm-tblgen %s | FileCheck %s
- // XFAIL: vg_leak
- //===----------------------------------------------------------------------===//
- // Substitution of an int.
- def X1;
- class C1<int N> {
- dag d = (X1 N);
- }
- def VAL1 : C1<13>;
- // CHECK: def VAL1 {
- // CHECK-NEXT: dag d = (X1 13)
- //===----------------------------------------------------------------------===//
- // Substitution of a DAG.
- 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)
- //===----------------------------------------------------------------------===//
- // 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: NAME = ?
- // 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: NAME = ?
- // CHECK-NEXT: }
- def VAL5 : bar<foo2, somedef2> {
- // Named operands.
- let Dag1 = (somedef1 1:$name1);
- // Name, no node.
- let Dag2 = (somedef2 $name2, $name3);
- }
- // CHECK: def VAL5 {
- // CHECK-NEXT: dag Dag1 = (somedef1 1:$name1);
- // CHECK-NEXT: dag Dag2 = (somedef2 ?:$name2, ?:$name3);
|