Index: src/IceConverter.h |
diff --git a/src/IceConverter.h b/src/IceConverter.h |
index 763dcaeb4f13010ed5534b1474770f00cc781ba8..d26c34c0fd66cc146c9857868a8fcd53d828574f 100644 |
--- a/src/IceConverter.h |
+++ b/src/IceConverter.h |
@@ -14,9 +14,11 @@ |
#ifndef SUBZERO_SRC_ICECONVERTER_H |
#define SUBZERO_SRC_ICECONVERTER_H |
+#include "IceDefs.h" |
#include "IceTranslator.h" |
namespace llvm { |
+class GlobalValue; |
class Module; |
} |
@@ -27,18 +29,42 @@ public: |
Converter(llvm::Module *Mod, GlobalContext *Ctx, const Ice::ClFlags &Flags) |
: Translator(Ctx, Flags), Mod(Mod) {} |
+ ~Converter() {} |
+ |
/// Converts the LLVM Module to ICE. Sets exit status to false if successful, |
/// true otherwise. |
void convertToIce(); |
+ llvm::Module *getModule() const { return Mod; } |
+ |
+ // Returns the global declaration associated with the corresponding |
+ // global value V. If no such global address, generates fatal error. |
+ GlobalDeclaration *getGlobalDeclaration(const llvm::GlobalValue *V); |
+ |
private: |
llvm::Module *Mod; |
+ typedef std::map<const llvm::GlobalValue *, GlobalDeclaration *> |
+ GlobalDeclarationMapType; |
+ GlobalDeclarationMapType GlobalDeclarationMap; |
+ |
+ // Walks module and generates names for unnamed globals using prefix |
+ // getFlags().DefaultGlobalPrefix, if the prefix is non-empty. |
+ void nameUnnamedGlobalVariables(llvm::Module *Mod); |
+ |
+ // Walks module and generates names for unnamed functions using |
+ // prefix getFlags().DefaultFunctionPrefix, if the prefix is |
+ // non-empty. |
+ void nameUnnamedFunctions(llvm::Module *Mod); |
+ |
// Converts functions to ICE, and then machine code. |
void convertFunctions(); |
// Converts globals to ICE, and then machine code. |
void convertGlobals(llvm::Module *Mod); |
+ // Installs global declarations into GlobalDeclarationMap. |
+ void installGlobalDeclarations(llvm::Module *Mod); |
+ |
Converter(const Converter &) = delete; |
Converter &operator=(const Converter &) = delete; |
}; |