// RUN: llvm-tblgen %s | FileCheck %s class PrintString { string S = s; } def op; def case_01 : PrintString; // CHECK-LABEL: def case_01 { // PrintString // CHECK-NEXT: string S = "(op op, op)"; // CHECK-NEXT: } def case_02 : PrintString; // CHECK-LABEL: def case_02 { // PrintString // CHECK-NEXT: string S = "32"; // CHECK-NEXT: } multiclass Multi b> { defvar IncI = !repr(!add(i,1)); def _IncI : PrintString; def _b : PrintString; } defm case_03 : Multi<2, 0b111>; // CHECK-LABEL: def case_03_IncI { // PrintString // CHECK-NEXT: string S = "3"; // CHECK-NEXT: } // CHECK-LABEL: def case_03_b { // PrintString // CHECK-NEXT: string S = "{ 1, 1, 1 }"; // CHECK-NEXT: } def case_04 : PrintString; // CHECK-LABEL: def case_04 { // PrintString // CHECK-NEXT: string S = "[2, 4, 6]"; // CHECK-NEXT: } // Show the dumping of full records... def case_05 : PrintString; // CHECK-LABEL: def case_05 { // PrintString // CHECK-NEXT: string S = "case_04 { // PrintString // CHECK-NEXT: string S = "[2, 4, 6]"; // CHECK-NEXT: } // CHECK-NEXT: "; // CHECK-NEXT: } // ... and how !repr differs compared to !cast. def case_06 : PrintString(case_04)>; // CHECK-LABEL: def case_06 { // PrintString // CHECK-NEXT: string S = "case_04"; // CHECK-NEXT: }