| // RUN: rm -rf %t && split-file %s %t | |
| // RUN: not llvm-tblgen -gen-subtarget -I %p/../../include %t/non-existent.td 2>&1 \ | |
| // RUN: | FileCheck %t/non-existent.td -DFILE=%t/non-existent.td --implicit-check-not="error:" | |
| // RUN: not llvm-tblgen -gen-subtarget -I %p/../../include %t/dup-processor.td 2>&1 \ | |
| // RUN: | FileCheck %t/dup-processor.td -DFILE=%t/dup-processor.td --implicit-check-not="error:" | |
| // RUN: not llvm-tblgen -gen-subtarget -I %p/../../include %t/dup-alias.td 2>&1 \ | |
| // RUN: | FileCheck %t/dup-alias.td -DFILE=%t/dup-alias.td --implicit-check-not="error:" | |
| // Verify the ProcessorAlias validation performed by the subtarget emitter. | |
| //--- non-existent.td | |
| include "llvm/Target/Target.td" | |
| def MyTarget : Target; | |
| def ProcA : ProcessorModel<"cpu-a", NoSchedModel, []>; | |
| // An alias must resolve to an existing processor. | |
| // CHECK: [[FILE]]:[[#@LINE+1]]:1: error: Alias 'bad-alias' references a non-existent Processor 'cpu-missing' | |
| def : ProcessorAlias<"bad-alias", "cpu-missing">; | |
| //--- dup-processor.td | |
| include "llvm/Target/Target.td" | |
| def MyTarget : Target; | |
| def ProcA : ProcessorModel<"cpu-a", NoSchedModel, []>; | |
| // An alias name must not collide with a real processor. | |
| // CHECK: [[FILE]]:[[#@LINE+1]]:1: error: Alias 'cpu-a' duplicates an existing Processor | |
| def : ProcessorAlias<"cpu-a", "cpu-a">; | |
| //--- dup-alias.td | |
| include "llvm/Target/Target.td" | |
| def MyTarget : Target; | |
| def ProcA : ProcessorModel<"cpu-a", NoSchedModel, []>; | |
| def DupA : ProcessorAlias<"dup", "cpu-a">; | |
| // Two aliases must not share the same name. | |
| // CHECK: [[FILE]]:[[#@LINE+1]]:5: error: Alias 'dup' duplicates an existing alias | |
| def DupB : ProcessorAlias<"dup", "cpu-a">; |