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