LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LibCallSemantics.cpp
Go to the documentation of this file.
1 //===- LibCallSemantics.cpp - Describe library semantics ------------------===//
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 // This file implements interfaces that can be used to describe language
11 // specific runtime library interfaces (e.g. libc, libm, etc) to LLVM
12 // optimizers.
13 //
14 //===----------------------------------------------------------------------===//
15 
17 #include "llvm/ADT/StringMap.h"
18 #include "llvm/IR/Function.h"
19 using namespace llvm;
20 
21 /// getMap - This impl pointer in ~LibCallInfo is actually a StringMap. This
22 /// helper does the cast.
24  return static_cast<StringMap<const LibCallFunctionInfo*> *>(Ptr);
25 }
26 
28  delete getMap(Impl);
29 }
30 
31 const LibCallLocationInfo &LibCallInfo::getLocationInfo(unsigned LocID) const {
32  // Get location info on the first call.
33  if (NumLocations == 0)
34  NumLocations = getLocationInfo(Locations);
35 
36  assert(LocID < NumLocations && "Invalid location ID!");
37  return Locations[LocID];
38 }
39 
40 
41 /// getFunctionInfo - Return the LibCallFunctionInfo object corresponding to
42 /// the specified function if we have it. If not, return null.
43 const LibCallFunctionInfo *
46 
47  /// If this is the first time we are querying for this info, lazily construct
48  /// the StringMap to index it.
49  if (Map == 0) {
50  Impl = Map = new StringMap<const LibCallFunctionInfo*>();
51 
53  if (Array == 0) return 0;
54 
55  // We now have the array of entries. Populate the StringMap.
56  for (unsigned i = 0; Array[i].Name; ++i)
57  (*Map)[Array[i].Name] = Array+i;
58  }
59 
60  // Look up this function in the string map.
61  return Map->lookup(F->getName());
62 }
63 
const LibCallFunctionInfo * getFunctionInfo(const Function *F) const
F(f)
StringRef getName() const
Definition: Value.cpp:167
virtual const LibCallFunctionInfo * getFunctionInfoArray() const =0
ValueTy lookup(StringRef Key) const
Definition: StringMap.h:305
static StringMap< const LibCallFunctionInfo * > * getMap(void *Ptr)
const LibCallLocationInfo & getLocationInfo(unsigned LocID) const
getLocationInfo - Return information about the specified LocationID.