[PATCH] D60974: Clang IFSO driver action.

Puyan Lotfi via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 7 09:06:52 PDT 2019


plotfi marked 6 inline comments as done.
plotfi added inline comments.


================
Comment at: clang/include/clang/Driver/Options.td:626
   HelpText<"Use the LLVM representation for assembler and object files">;
+def emit_ifso : Flag<["-"], "emit-interface-stubs">, Flags<[CC1Option]>, Group<Action_Group>,
+  HelpText<"Generate Inteface Stub Files.">;
----------------
compnerd wrote:
> I thought that we were going to add `experimental` to this for the time being?
Oh, I was specifying experimental in the -interface-stubs-version=experimental-ifo-elf-v1. Do you want the main flag to also be -emit-interface-stubs-experimental??


================
Comment at: clang/include/clang/Driver/Types.def:91
 TYPE("ast",                      AST,          INVALID,         "ast",   "u")
+TYPE("ifs",                      IFS,          INVALID,         "ifs",   "u")
 TYPE("pcm",                      ModuleFile,   INVALID,         "pcm",   "u")
----------------
compnerd wrote:
> What about `ifo` instead of `ifs`?
I went with ifs because ifo implies the analog of a .o file and ifso implies the analog of a .so file. I want the tbe/ifs text files to just be thought of as something a little different. Like symbol listings that another tool can assemble into whatever format.  


================
Comment at: clang/lib/Frontend/CompilerInvocation.cpp:1649
+    case OPT_emit_ifso:
+      Opts.ProgramAction = frontend::GenerateIfsoTbeExpV1;
+      if (Args.hasArg(OPT_ifso_version_EQ))
----------------
compnerd wrote:
> Can we make this required to be specified instead of defaulting please?  I think that it is more clear.
I think that makes sense. 


================
Comment at: clang/lib/Frontend/FrontendActions.cpp:179
+  };
+  using MangledSymbols = std::map<const NamedDecl *, MangledSymbol>;
+
----------------
compnerd wrote:
> Hmm, I wonder if `DenseSet` is more appropriate here.  Is there some reason that I am overlooking for supporting duplicate entries?  In fact, since the key is a pointer, you could even do a `DenseMap`.
Can we do data-structure improvements post landing the first version? 


================
Comment at: clang/lib/Frontend/FrontendActions.cpp:214
+      ND->dump();
+    }
+    return true;
----------------
compnerd wrote:
> debugging left over?
Ah yeah I need to replace this with an llvm_unreachable or something. 


================
Comment at: clang/lib/Frontend/FrontendActions.cpp:297
+        sema.LateTemplateParser(sema.OpaqueParser, LPT);
+        HandleNamedDecl(FD, Symbols, (FromTU | IsLate));
+      }
----------------
compnerd wrote:
> Typo of `||`?  The field is boolean not a mask.
It is a bitmask. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60974/new/

https://reviews.llvm.org/D60974





More information about the cfe-commits mailing list