[llvm-dev] Question about llvm::Value::print performance

Dr.-Ing. Christoph Cullmann via llvm-dev llvm-dev at lists.llvm.org
Sun Jun 11 08:21:44 PDT 2017


> Hi,
>> Hi Christoph,
>> is it possible to reduce the amount of "work" for every process and
>> iterate over all functions in different processes?
>> I mean: Debug the first 100 functions, then in the socond step, debug
>> function 101 till 200, and so on. So you summarize and complete your
>> result over several, standalone debugs steps.
> not really, I need the graph with instruction labels in one go, as it will be
> used to visualize things,
> e.g. like this example that works on PPC assembly. (a bit like writing a dot
> graph of the IR)
> https://www.absint.com/stackanalyzer/shot5.png
> Beside, as the printing seems really like "per instruction redo all type
> importing and co."
> it won't even scale if I let all cores do things.
> The AssemblyWriter that is internal has rather clever caching for that which I
> can't access
> from the outside, if I am not wrong.
> But perhaps somebody has a clever way around this issue.

Would be some patch acceptable that allows to pass in some TypePrinting object to

void Value::print(raw_ostream &ROS, ModuleSlotTracker &MST,
                  bool IsForDebug) const

like it was done for the ModuleSlotTracker &MST parameter?

TypeFinder is already exposed, would it be possible to expose the

class TypePrinting {
  TypePrinting(const TypePrinting &) = delete;
  void operator=(const TypePrinting&) = delete;

  /// NamedTypes - The named types that are used by the current module.
  TypeFinder NamedTypes;

  /// NumberedTypes - The numbered types, along with their value.
  DenseMap<StructType*, unsigned> NumberedTypes;

  TypePrinting() = default;

  void incorporateTypes(const Module &M);

  void print(Type *Ty, raw_ostream &OS);

  void printStructBody(StructType *Ty, raw_ostream &OS);

class for that purpose, too?


----------------------------- Dr.-Ing. Christoph Cullmann ---------
AbsInt Angewandte Informatik GmbH      Email: cullmann at AbsInt.com
Science Park 1                         Tel:   +49-681-38360-22
66123 Saarbrücken                      Fax:   +49-681-38360-20
GERMANY                                WWW:   http://www.AbsInt.com
Geschäftsführung: Dr.-Ing. Christian Ferdinand
Eingetragen im Handelsregister des Amtsgerichts Saarbrücken, HRB 11234

More information about the llvm-dev mailing list