@@ -483,6 +483,7 @@ def TargetAnyX86 : TargetArch<["x86", "x86_64"]>;
483483def TargetSPIRV : TargetArch<["spirv", "spirv32", "spirv64"]>;
484484def TargetWebAssembly : TargetArch<["wasm32", "wasm64"]>;
485485def TargetNVPTX : TargetArch<["nvptx", "nvptx64"]>;
486+ def TargetPowerPC : TargetArch<["ppc", "ppcle", "ppc64", "ppc64le"]>;
486487def TargetWindows : TargetSpec {
487488 let OSes = ["Win32"];
488489}
@@ -508,6 +509,10 @@ def TargetMicrosoftRecordLayout : TargetArch<["x86", "x86_64", "arm", "thumb",
508509 let CustomCode = [{ Target.hasMicrosoftRecordLayout() }];
509510}
510511
512+ def TargetMustTailAvaiable: TargetArch<!listconcat(TargetARM.Arches, TargetAArch64.Arches, TargetAnyX86.Arches, TargetWebAssembly.Arches, TargetPowerPC.Arches)> {
513+ let CustomCode = [{ Target.hasMustTail() }];
514+ }
515+
511516def TargetELF : TargetSpec {
512517 let ObjectFormats = ["ELF"];
513518}
@@ -1896,7 +1901,7 @@ def NoMerge : DeclOrStmtAttr {
18961901 "functions, statements and variables">;
18971902}
18981903
1899- def MustTail : StmtAttr {
1904+ def MustTail : StmtAttr, TargetSpecificAttr<TargetMustTailAvaiable> {
19001905 let Spellings = [Clang<"musttail">];
19011906 let Documentation = [MustTailDocs];
19021907 let Subjects = SubjectList<[ReturnStmt], ErrorDiag, "return statements">;
0 commit comments