1*4ba319b5SDimitry Andric //===--- XRayInstr.cpp ------------------------------------------*- C++ -*-===// 2*4ba319b5SDimitry Andric // 3*4ba319b5SDimitry Andric // The LLVM Compiler Infrastructure 4*4ba319b5SDimitry Andric // 5*4ba319b5SDimitry Andric // This file is distributed under the University of Illinois Open Source 6*4ba319b5SDimitry Andric // License. See LICENSE.TXT for details. 7*4ba319b5SDimitry Andric // 8*4ba319b5SDimitry Andric //===----------------------------------------------------------------------===// 9*4ba319b5SDimitry Andric // 10*4ba319b5SDimitry Andric // This is part of XRay, a function call instrumentation system. 11*4ba319b5SDimitry Andric // 12*4ba319b5SDimitry Andric //===----------------------------------------------------------------------===// 13*4ba319b5SDimitry Andric 14*4ba319b5SDimitry Andric #include "clang/Basic/XRayInstr.h" 15*4ba319b5SDimitry Andric #include "llvm/ADT/StringSwitch.h" 16*4ba319b5SDimitry Andric 17*4ba319b5SDimitry Andric namespace clang { 18*4ba319b5SDimitry Andric parseXRayInstrValue(StringRef Value)19*4ba319b5SDimitry AndricXRayInstrMask parseXRayInstrValue(StringRef Value) { 20*4ba319b5SDimitry Andric XRayInstrMask ParsedKind = llvm::StringSwitch<XRayInstrMask>(Value) 21*4ba319b5SDimitry Andric .Case("all", XRayInstrKind::All) 22*4ba319b5SDimitry Andric .Case("custom", XRayInstrKind::Custom) 23*4ba319b5SDimitry Andric .Case("function", XRayInstrKind::Function) 24*4ba319b5SDimitry Andric .Case("typed", XRayInstrKind::Typed) 25*4ba319b5SDimitry Andric .Case("none", XRayInstrKind::None) 26*4ba319b5SDimitry Andric .Default(XRayInstrKind::None); 27*4ba319b5SDimitry Andric return ParsedKind; 28*4ba319b5SDimitry Andric } 29*4ba319b5SDimitry Andric 30*4ba319b5SDimitry Andric } // namespace clang 31