blob: 80a54bbf63d80604291565027363d6e64b82223d [file] [log] [blame]
Rafael Espindolab940b662016-09-06 19:16:48 +00001//===-- llvm-c++filt.cpp --------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "llvm/Demangle/Demangle.h"
Davide Italianoc37eb112016-09-27 18:50:30 +000011#include "llvm/Support/raw_ostream.h"
Saleem Abdulrasool70918202016-11-13 20:43:38 +000012#include <cstdlib>
13#include <iostream>
Rafael Espindolab940b662016-09-06 19:16:48 +000014
15using namespace llvm;
16
Saleem Abdulrasool70918202016-11-13 20:43:38 +000017static void demangle(llvm::raw_ostream &OS, const char *Mangled) {
18 int Status;
19 char *Demangled = itaniumDemangle(Mangled, nullptr, nullptr, &Status);
20 OS << (Demangled ? Demangled : Mangled) << '\n';
21 free(Demangled);
22}
23
Rafael Espindolab940b662016-09-06 19:16:48 +000024int main(int argc, char **argv) {
Saleem Abdulrasool70918202016-11-13 20:43:38 +000025 if (argc == 1)
26 for (std::string Mangled; std::getline(std::cin, Mangled);)
27 demangle(llvm::outs(), Mangled.c_str());
28 else
29 for (int I = 1; I < argc; ++I)
30 demangle(llvm::outs(), argv[I]);
31
32 return EXIT_SUCCESS;
Rafael Espindolab940b662016-09-06 19:16:48 +000033}