plotfi created this revision.
plotfi added a reviewer: compnerd.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Working on a new tool, llvm-ifs, for merging interface stub files generated by 
clang and I've iterated on my derivative format of TBE to a newer format. This 
format is pretty straight forward and mainly has two fields which are the LLVM 
triple and the object format (since the triple doesn't encode that). For 
instance, you may want PE/COFF on Linux or something like that so a triple like 
x86_64-linux-gnu can't really tell you what the object is. Anyways, I think 
this format is more straight forward than something derived from objyaml and 
more intended for merging than TBE (also more platform agnostic).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D66573

Files:
  clang/include/clang/Frontend/FrontendActions.h
  clang/include/clang/Frontend/FrontendOptions.h
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
  clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
  clang/test/InterfaceStubs/bad-format.cpp
  clang/test/InterfaceStubs/class-template-specialization.cpp
  clang/test/InterfaceStubs/externstatic.c
  clang/test/InterfaceStubs/function-template-specialization.cpp
  clang/test/InterfaceStubs/hidden-class-inheritance.cpp
  clang/test/InterfaceStubs/inline.c
  clang/test/InterfaceStubs/object.cpp
  clang/test/InterfaceStubs/template-namespace-function.cpp
  clang/test/InterfaceStubs/virtual.cpp
  clang/test/InterfaceStubs/visibility.cpp
  clang/test/InterfaceStubs/weak.cpp

Index: clang/test/InterfaceStubs/weak.cpp
===================================================================
--- clang/test/InterfaceStubs/weak.cpp
+++ clang/test/InterfaceStubs/weak.cpp
@@ -1,12 +1,8 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck %s
 
-// RUN: %clang -target x86_64-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \
-// RUN: FileCheck --check-prefix=CHECK-YAML %s
-
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
 // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
 
@@ -14,14 +10,6 @@
 // CHECK-DAG:  _Z8weakFuncv: { Type: Func, Weak: true }
 // CHECK-DAG:  _Z10strongFuncv: { Type: Func }
 
-// CHECK-YAML: Symbols:
-// CHECK-YAML-DAG:   - Name:            _Z8weakFuncv
-// CHECK-YAML-DAG:     Type:            STT_FUNC
-// CHECK-YAML-DAG:     Binding:         STB_WEAK
-// CHECK-YAML-DAG:   - Name:            _Z10strongFuncv
-// CHECK-YAML-DAG:     Type:            STT_FUNC
-// CHECK-YAML-DAG:     Binding:         STB_GLOBAL
-
 // CHECK-SYMBOLS-DAG: _Z10strongFuncv
 // CHECK-SYMBOLS-DAG: _Z8weakFuncv
 __attribute__((weak)) void weakFunc() {}
Index: clang/test/InterfaceStubs/visibility.cpp
===================================================================
--- clang/test/InterfaceStubs/visibility.cpp
+++ clang/test/InterfaceStubs/visibility.cpp
@@ -1,26 +1,26 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 -fvisibility=hidden \
+// RUN: -interface-stub-version=experimental-ifs-v1 -fvisibility=hidden \
 // RUN: %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -fvisibility=hidden \
+// RUN: -interface-stub-version=experimental-ifs-v1 -fvisibility=hidden \
 // RUN: %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck --check-prefix=CHECK-CMD %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck --check-prefix=CHECK-CMD %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck --check-prefix=CHECK-CMD2 %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck --check-prefix=CHECK-CMD2 %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-readelf -s - 2>&1 | \
Index: clang/test/InterfaceStubs/virtual.cpp
===================================================================
--- clang/test/InterfaceStubs/virtual.cpp
+++ clang/test/InterfaceStubs/virtual.cpp
@@ -1,9 +1,9 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-TAPI %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-TAPI2 %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | \
 // RUN: llvm-readelf -s - 2>&1 | FileCheck -check-prefix=CHECK-SYMBOLS %s
Index: clang/test/InterfaceStubs/template-namespace-function.cpp
===================================================================
--- clang/test/InterfaceStubs/template-namespace-function.cpp
+++ clang/test/InterfaceStubs/template-namespace-function.cpp
@@ -1,6 +1,6 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
Index: clang/test/InterfaceStubs/object.cpp
===================================================================
--- clang/test/InterfaceStubs/object.cpp
+++ clang/test/InterfaceStubs/object.cpp
@@ -1,10 +1,10 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-TAPI %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-nm - 2>&1 | \
 // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
Index: clang/test/InterfaceStubs/inline.c
===================================================================
--- clang/test/InterfaceStubs/inline.c
+++ clang/test/InterfaceStubs/inline.c
@@ -1,14 +1,14 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -DINLINE=inline -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=gnu89 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=gnu89 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-GNU %s
 // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -O0 -o - -c \
 // RUN: -std=gnu89 -xc %s | llvm-nm - | FileCheck -check-prefix=CHECK-GNU %s
 
 // RUN: %clang -DINLINE="__attribute__((always_inline))" \
 // RUN: -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-GNU %s
 // RUN: %clang -DINLINE="__attribute__((always_inline))" \
 // RUN: -target x86_64-linux-gnu -O0 -o - -c -xc %s | \
@@ -16,14 +16,14 @@
 
 // RUN: %clang -DINLINE=inline -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-STD %s
 // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -O0 -o - -c -std=c99 \
 // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-STD %s
 
 // RUN: %clang -DINLINE="__attribute__((noinline))" \
 // RUN: -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-NOINLINE %s
 // RUN: %clang -DINLINE="__attribute__((noinline))" -target x86_64-linux-gnu \
 // RUN: -O0 -o - -c -std=c99 -xc %s | llvm-nm - 2>&1 | \
@@ -31,7 +31,7 @@
 
 // RUN: %clang -DINLINE="static" -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-STATIC %s
 // RUN: %clang -DINLINE="static" -target x86_64-linux-gnu -O0 -o - -c \
 // RUN: -std=c99 -xc %s | llvm-nm - 2>&1 | \
@@ -51,11 +51,11 @@
 }
 
 // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \
-// RUN: -emit-interface-stubs -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -emit-interface-stubs -interface-stub-version=experimental-ifs-v1 \
 // RUN: -std=gnu89 -xc %s | FileCheck -check-prefix=CHECK-TAPI %s
 
 // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \
-// RUN: -emit-interface-stubs -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -emit-interface-stubs -interface-stub-version=experimental-ifs-v1 \
 // RUN: -std=gnu89 -xc %s | FileCheck -check-prefix=CHECK-SYMBOLS %s
 // RUN: %clang -DINLINE=inline -target x86_64-linux-gnu -o - \
 // RUN: -c -std=gnu89 -xc %s | llvm-nm - 2>&1 | \
Index: clang/test/InterfaceStubs/hidden-class-inheritance.cpp
===================================================================
--- clang/test/InterfaceStubs/hidden-class-inheritance.cpp
+++ clang/test/InterfaceStubs/hidden-class-inheritance.cpp
@@ -1,6 +1,6 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY="" \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-X %s
@@ -11,12 +11,12 @@
 // RUN: FileCheck -check-prefix=CHECK-X-RE %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-HP %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-HP2 %s
@@ -27,12 +27,12 @@
 // RUN: FileCheck -check-prefix=CHECK-HP-RE %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-HC %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-HC2 %s
@@ -43,7 +43,7 @@
 // RUN: FileCheck -check-prefix=CHECK-HC-RE %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY=HIDDEN \
 // RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \
 // RUN: FileCheck -check-prefix=CHECK-HP-HC %s
Index: clang/test/InterfaceStubs/function-template-specialization.cpp
===================================================================
--- clang/test/InterfaceStubs/function-template-specialization.cpp
+++ clang/test/InterfaceStubs/function-template-specialization.cpp
@@ -1,14 +1,14 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | FileCheck %s
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | FileCheck %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DUSE_TEMPLATE_FUNCTION=1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-USES-TEMPLATE-FUNCTION %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 \
+// RUN: -interface-stub-version=experimental-ifs-v1 \
 // RUN: -DSPECIALIZE_TEMPLATE_FUNCTION=1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-SPECIALIZES-TEMPLATE-FUNCTION %s
 
Index: clang/test/InterfaceStubs/externstatic.c
===================================================================
--- clang/test/InterfaceStubs/externstatic.c
+++ clang/test/InterfaceStubs/externstatic.c
@@ -1,21 +1,21 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -DSTORAGE="extern" -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-EXTERN %s
 // RUN: %clang -DSTORAGE="extern" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \
 // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-EXTERN %s
 
 // RUN: %clang -DSTORAGE="extern" -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-EXTERN2 %s
 // RUN: %clang -DSTORAGE="extern" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \
 // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-EXTERN2 %s
 
 // RUN: %clang -DSTORAGE="static" -target x86_64-unknown-linux-gnu -o - \
 // RUN: -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-yaml-elf-v1 -std=c99 -xc %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 -std=c99 -xc %s | \
 // RUN: FileCheck -check-prefix=CHECK-STATIC %s
 // RUN: %clang -DSTORAGE="static" -target x86_64-linux-gnu -O0 -o - -c -std=c99 \
 // RUN: -xc %s | llvm-nm - 2>&1 | FileCheck -check-prefix=CHECK-STATIC %s
Index: clang/test/InterfaceStubs/class-template-specialization.cpp
===================================================================
--- clang/test/InterfaceStubs/class-template-specialization.cpp
+++ clang/test/InterfaceStubs/class-template-specialization.cpp
@@ -1,10 +1,10 @@
 // REQUIRES: x86-registered-target
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-TAPI %s
 
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
-// RUN: -interface-stub-version=experimental-tapi-elf-v1 %s | \
+// RUN: -interface-stub-version=experimental-ifs-v1 %s | \
 // RUN: FileCheck -check-prefix=CHECK-TAPI2 %s
 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | \
 // RUN: llvm-readelf -s - 2>&1 | \
Index: clang/test/InterfaceStubs/bad-format.cpp
===================================================================
--- clang/test/InterfaceStubs/bad-format.cpp
+++ clang/test/InterfaceStubs/bad-format.cpp
@@ -3,6 +3,6 @@
 // RUN: -interface-stub-version=bar-format %s 2>&1 | FileCheck %s
 
 // CHECK: error: invalid value
-// CHECK: '-interface-stub-version=<experimental-tapi-elf-v1 |
-// CHECK: experimental-yaml-elf-v1>' in 'Must specify a valid interface
+// CHECK: '-interface-stub-version=<experimental-ifs-v1>' in 'Must specify a
+// CHECK: valid interface
 // CHECK: stub format type using
Index: clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
===================================================================
--- clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
+++ clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
@@ -64,10 +64,6 @@
   case GenerateHeaderModule:
     return std::make_unique<GenerateHeaderModuleAction>();
   case GeneratePCH:            return std::make_unique<GeneratePCHAction>();
-  case GenerateInterfaceYAMLExpV1:
-    return std::make_unique<GenerateInterfaceYAMLExpV1Action>();
-  case GenerateInterfaceTBEExpV1:
-    return std::make_unique<GenerateInterfaceTBEExpV1Action>();
   case GenerateInterfaceIfsExpV1:
     return std::make_unique<GenerateInterfaceIfsExpV1Action>();
   case InitOnly:               return std::make_unique<InitOnlyAction>();
Index: clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
===================================================================
--- clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
+++ clang/lib/Frontend/InterfaceStubFunctionsConsumer.cpp
@@ -246,114 +246,6 @@
     for (const NamedDecl *ND : v.NamedDecls)
       HandleNamedDecl(ND, Symbols, FromTU);
 
-    auto writeIfoYaml = [this](const llvm::Triple &T,
-                               const MangledSymbols &Symbols,
-                               const ASTContext &context, StringRef Format,
-                               raw_ostream &OS) -> void {
-      OS << "--- !" << Format << "\n";
-      OS << "FileHeader:\n";
-      OS << "  Class:           ELFCLASS";
-      OS << (T.isArch64Bit() ? "64" : "32");
-      OS << "\n";
-      OS << "  Data:            ELFDATA2";
-      OS << (T.isLittleEndian() ? "LSB" : "MSB");
-      OS << "\n";
-      OS << "  Type:            ET_REL\n";
-      OS << "  Machine:         "
-         << llvm::StringSwitch<llvm::StringRef>(T.getArchName())
-                .Case("x86_64", "EM_X86_64")
-                .Case("i386", "EM_386")
-                .Case("i686", "EM_386")
-                .Case("aarch64", "EM_AARCH64")
-                .Case("amdgcn", "EM_AMDGPU")
-                .Case("r600", "EM_AMDGPU")
-                .Case("arm", "EM_ARM")
-                .Case("thumb", "EM_ARM")
-                .Case("avr", "EM_AVR")
-                .Case("mips", "EM_MIPS")
-                .Case("mipsel", "EM_MIPS")
-                .Case("mips64", "EM_MIPS")
-                .Case("mips64el", "EM_MIPS")
-                .Case("msp430", "EM_MSP430")
-                .Case("ppc", "EM_PPC")
-                .Case("ppc64", "EM_PPC64")
-                .Case("ppc64le", "EM_PPC64")
-                .Case("x86", T.isOSIAMCU() ? "EM_IAMCU" : "EM_386")
-                .Case("x86_64", "EM_X86_64")
-                .Default("EM_NONE")
-         << "\nSymbols:\n";
-      for (const auto &E : Symbols) {
-        const MangledSymbol &Symbol = E.second;
-        for (auto Name : Symbol.Names) {
-          OS << "  - Name:            "
-             << (Symbol.ParentName.empty() || Instance.getLangOpts().CPlusPlus
-                     ? ""
-                     : (Symbol.ParentName + "."))
-             << Name << "\n"
-             << "    Type:            STT_";
-          switch (Symbol.Type) {
-          default:
-          case llvm::ELF::STT_NOTYPE:
-            OS << "NOTYPE";
-            break;
-          case llvm::ELF::STT_OBJECT:
-            OS << "OBJECT";
-            break;
-          case llvm::ELF::STT_FUNC:
-            OS << "FUNC";
-            break;
-          }
-          OS << "\n    Binding:         STB_"
-             << ((Symbol.Binding == llvm::ELF::STB_WEAK) ? "WEAK" : "GLOBAL")
-             << "\n";
-        }
-      }
-      OS << "...\n";
-      OS.flush();
-    };
-
-    auto writeIfoElfAbiYaml =
-        [this](const llvm::Triple &T, const MangledSymbols &Symbols,
-               const ASTContext &context, StringRef Format,
-               raw_ostream &OS) -> void {
-      OS << "--- !" << Format << "\n";
-      OS << "TbeVersion: 1.0\n";
-      OS << "Arch: " << T.getArchName() << "\n";
-      OS << "Symbols:\n";
-      for (const auto &E : Symbols) {
-        const MangledSymbol &Symbol = E.second;
-        for (auto Name : Symbol.Names) {
-          OS << "  "
-             << (Symbol.ParentName.empty() || Instance.getLangOpts().CPlusPlus
-                     ? ""
-                     : (Symbol.ParentName + "."))
-             << Name << ": { Type: ";
-          switch (Symbol.Type) {
-          default:
-            llvm_unreachable(
-                "clang -emit-iterface-stubs: Unexpected symbol type.");
-          case llvm::ELF::STT_NOTYPE:
-            OS << "NoType";
-            break;
-          case llvm::ELF::STT_OBJECT: {
-            auto VD = cast<ValueDecl>(E.first)->getType();
-            OS << "Object, Size: "
-               << context.getTypeSizeInChars(VD).getQuantity();
-            break;
-          }
-          case llvm::ELF::STT_FUNC:
-            OS << "Func";
-            break;
-          }
-          if (Symbol.Binding == llvm::ELF::STB_WEAK)
-            OS << ", Weak: true";
-          OS << " }\n";
-        }
-      }
-      OS << "...\n";
-      OS.flush();
-    };
-
     auto writeIfsV1 =
         [this](const llvm::Triple &T, const MangledSymbols &Symbols,
                const ASTContext &context, StringRef Format,
@@ -397,32 +289,11 @@
       OS.flush();
     };
 
-    if (Format == "experimental-yaml-elf-v1")
-      writeIfoYaml(Instance.getTarget().getTriple(), Symbols, context, Format,
-                   *OS);
-    else if (Format == "experimental-ifs-v1")
-      writeIfsV1(Instance.getTarget().getTriple(), Symbols, context, Format,
-                 *OS);
-    else
-      writeIfoElfAbiYaml(Instance.getTarget().getTriple(), Symbols, context,
-                         Format, *OS);
+    assert(Format == "experimental-ifs-v1" && "Unexpected IFS Format.");
+    writeIfsV1(Instance.getTarget().getTriple(), Symbols, context, Format, *OS);
   }
 };
 
-std::unique_ptr<ASTConsumer>
-GenerateInterfaceYAMLExpV1Action::CreateASTConsumer(CompilerInstance &CI,
-                                                    StringRef InFile) {
-  return std::make_unique<InterfaceStubFunctionsConsumer>(
-      CI, InFile, "experimental-yaml-elf-v1");
-}
-
-std::unique_ptr<ASTConsumer>
-GenerateInterfaceTBEExpV1Action::CreateASTConsumer(CompilerInstance &CI,
-                                                   StringRef InFile) {
-  return std::make_unique<InterfaceStubFunctionsConsumer>(
-      CI, InFile, "experimental-tapi-elf-v1");
-}
-
 std::unique_ptr<ASTConsumer>
 GenerateInterfaceIfsExpV1Action::CreateASTConsumer(CompilerInstance &CI,
                                                    StringRef InFile) {
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -1733,19 +1733,13 @@
               Args.hasArg(OPT_iterface_stub_version_EQ)
                   ? Args.getLastArgValue(OPT_iterface_stub_version_EQ)
                   : "")
-              .Case("experimental-yaml-elf-v1",
-                    frontend::GenerateInterfaceYAMLExpV1)
-              .Case("experimental-tapi-elf-v1",
-                    frontend::GenerateInterfaceTBEExpV1)
               .Case("experimental-ifs-v1",
                     frontend::GenerateInterfaceIfsExpV1)
               .Default(llvm::None);
       if (!ProgramAction)
         Diags.Report(diag::err_drv_invalid_value)
             << "Must specify a valid interface stub format type using "
-            << "-interface-stub-version=<experimental-tapi-elf-v1 | "
-               "experimental-ifs-v1 | "
-               "experimental-yaml-elf-v1>";
+            << "-interface-stub-version=<experimental-ifs-v1>";
       Opts.ProgramAction = *ProgramAction;
       break;
     }
@@ -3186,8 +3180,6 @@
   case frontend::GenerateModuleInterface:
   case frontend::GenerateHeaderModule:
   case frontend::GeneratePCH:
-  case frontend::GenerateInterfaceYAMLExpV1:
-  case frontend::GenerateInterfaceTBEExpV1:
   case frontend::GenerateInterfaceIfsExpV1:
   case frontend::ParseSyntaxOnly:
   case frontend::ModuleFileInfo:
Index: clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -3636,17 +3636,13 @@
               Args.hasArg(options::OPT_iterface_stub_version_EQ)
                   ? Args.getLastArgValue(options::OPT_iterface_stub_version_EQ)
                   : "")
-              .Case("experimental-yaml-elf-v1", "experimental-yaml-elf-v1")
-              .Case("experimental-tapi-elf-v1", "experimental-tapi-elf-v1")
               .Case("experimental-ifs-v1", "experimental-ifs-v1")
               .Default("");
 
       if (StubFormat.empty())
         D.Diag(diag::err_drv_invalid_value)
             << "Must specify a valid interface stub format type using "
-            << "-interface-stub-version=<experimental-tapi-elf-v1 | "
-               "experimental-ifs-v1 | "
-               "experimental-yaml-elf-v1>";
+            << "-interface-stub-version=<experimental-ifs-v1>";
 
       CmdArgs.push_back("-emit-interface-stubs");
       CmdArgs.push_back(
Index: clang/include/clang/Frontend/FrontendOptions.h
===================================================================
--- clang/include/clang/Frontend/FrontendOptions.h
+++ clang/include/clang/Frontend/FrontendOptions.h
@@ -90,8 +90,6 @@
   GeneratePCH,
 
   /// Generate Interface Stub Files.
-  GenerateInterfaceYAMLExpV1,
-  GenerateInterfaceTBEExpV1,
   GenerateInterfaceIfsExpV1,
 
   /// Only execute frontend initialization.
Index: clang/include/clang/Frontend/FrontendActions.h
===================================================================
--- clang/include/clang/Frontend/FrontendActions.h
+++ clang/include/clang/Frontend/FrontendActions.h
@@ -126,19 +126,6 @@
   bool hasASTFileSupport() const override { return false; }
 };
 
-// Support different interface stub formats this way:
-class GenerateInterfaceYAMLExpV1Action : public GenerateInterfaceStubAction {
-protected:
-  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
-                                                 StringRef InFile) override;
-};
-
-class GenerateInterfaceTBEExpV1Action : public GenerateInterfaceStubAction {
-protected:
-  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
-                                                 StringRef InFile) override;
-};
-
 class GenerateInterfaceIfsExpV1Action : public GenerateInterfaceStubAction {
 protected:
   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to