llvm-cxxfilt.cpp revision 311116
1217044Snwhitehorn//===-- llvm-c++filt.cpp --------------------------------------------------===// 2217044Snwhitehorn// 3217044Snwhitehorn// The LLVM Compiler Infrastructure 4217044Snwhitehorn// 5217044Snwhitehorn// This file is distributed under the University of Illinois Open Source 6217044Snwhitehorn// License. See LICENSE.TXT for details. 7217044Snwhitehorn// 8217044Snwhitehorn//===----------------------------------------------------------------------===// 9217044Snwhitehorn 10217044Snwhitehorn#include "llvm/Demangle/Demangle.h" 11217044Snwhitehorn#include "llvm/Support/raw_ostream.h" 12217044Snwhitehorn#include <cstdlib> 13217044Snwhitehorn#include <iostream> 14217044Snwhitehorn 15217044Snwhitehornusing namespace llvm; 16217044Snwhitehorn 17217044Snwhitehornstatic void demangle(llvm::raw_ostream &OS, const char *Mangled) { 18217044Snwhitehorn int Status; 19217044Snwhitehorn char *Demangled = itaniumDemangle(Mangled, nullptr, nullptr, &Status); 20217044Snwhitehorn OS << (Demangled ? Demangled : Mangled) << '\n'; 21217044Snwhitehorn free(Demangled); 22217044Snwhitehorn} 23217044Snwhitehorn 24217044Snwhitehornint main(int argc, char **argv) { 25217044Snwhitehorn if (argc == 1) 26217044Snwhitehorn for (std::string Mangled; std::getline(std::cin, Mangled);) 27217044Snwhitehorn demangle(llvm::outs(), Mangled.c_str()); 28233666Snwhitehorn else 29233666Snwhitehorn for (int I = 1; I < argc; ++I) 30265998Sian demangle(llvm::outs(), argv[I]); 31217044Snwhitehorn 32217044Snwhitehorn return EXIT_SUCCESS; 33217044Snwhitehorn} 34217044Snwhitehorn