InlineAsm.cpp revision 863517aea0b06770c809396be985c1c4cc50d3c4
1cc041ba03aed685400197fb938b7a583713d25afChris Lattner//===-- InlineAsm.cpp - Implement the InlineAsm class ---------------------===// 2cc041ba03aed685400197fb938b7a583713d25afChris Lattner// 3cc041ba03aed685400197fb938b7a583713d25afChris Lattner// The LLVM Compiler Infrastructure 4cc041ba03aed685400197fb938b7a583713d25afChris Lattner// 5cc041ba03aed685400197fb938b7a583713d25afChris Lattner// This file was developed by Chris Lattner and is distributed under the 6cc041ba03aed685400197fb938b7a583713d25afChris Lattner// University of Illinois Open Source License. See LICENSE.TXT for details. 7cc041ba03aed685400197fb938b7a583713d25afChris Lattner// 8cc041ba03aed685400197fb938b7a583713d25afChris Lattner//===----------------------------------------------------------------------===// 9cc041ba03aed685400197fb938b7a583713d25afChris Lattner// 10cc041ba03aed685400197fb938b7a583713d25afChris Lattner// This file implements the InlineAsm class. 11cc041ba03aed685400197fb938b7a583713d25afChris Lattner// 12cc041ba03aed685400197fb938b7a583713d25afChris Lattner//===----------------------------------------------------------------------===// 13cc041ba03aed685400197fb938b7a583713d25afChris Lattner 14cc041ba03aed685400197fb938b7a583713d25afChris Lattner#include "llvm/InlineAsm.h" 15cc041ba03aed685400197fb938b7a583713d25afChris Lattner#include "llvm/DerivedTypes.h" 16cc041ba03aed685400197fb938b7a583713d25afChris Lattner#include "llvm/Module.h" 17cc041ba03aed685400197fb938b7a583713d25afChris Lattner#include "llvm/Support/LeakDetector.h" 18cc041ba03aed685400197fb938b7a583713d25afChris Lattnerusing namespace llvm; 19cc041ba03aed685400197fb938b7a583713d25afChris Lattner 20cc041ba03aed685400197fb938b7a583713d25afChris LattnerInlineAsm::InlineAsm(const FunctionType *Ty, const std::string &asmString, 21863517aea0b06770c809396be985c1c4cc50d3c4Chris Lattner const std::string &constraints, bool hasSideEffects) 22863517aea0b06770c809396be985c1c4cc50d3c4Chris Lattner : Value(PointerType::get(Ty), Value::InlineAsmVal), AsmString(asmString), 23863517aea0b06770c809396be985c1c4cc50d3c4Chris Lattner Constraints(constraints), HasSideEffects(hasSideEffects) { 24cc041ba03aed685400197fb938b7a583713d25afChris Lattner LeakDetector::addGarbageObject(this); 25cc041ba03aed685400197fb938b7a583713d25afChris Lattner 26863517aea0b06770c809396be985c1c4cc50d3c4Chris Lattner // FIXME: do various checks on the constraint string and type. 27863517aea0b06770c809396be985c1c4cc50d3c4Chris Lattner 28cc041ba03aed685400197fb938b7a583713d25afChris Lattner} 29cc041ba03aed685400197fb938b7a583713d25afChris Lattner 30cc041ba03aed685400197fb938b7a583713d25afChris Lattnerconst FunctionType *InlineAsm::getFunctionType() const { 31cc041ba03aed685400197fb938b7a583713d25afChris Lattner return cast<FunctionType>(getType()->getElementType()); 32cc041ba03aed685400197fb938b7a583713d25afChris Lattner} 33