24 lines
592 B
C++
24 lines
592 B
C++
#pragma once
|
|
|
|
#include "../Pass.h"
|
|
|
|
namespace sysy {
|
|
|
|
class LargeArrayToGlobalPass : public OptimizationPass {
|
|
public:
|
|
static void *ID;
|
|
|
|
LargeArrayToGlobalPass() : OptimizationPass("LargeArrayToGlobal", Granularity::Module) {}
|
|
|
|
bool runOnModule(Module *M, AnalysisManager &AM) override;
|
|
void *getPassID() const override {
|
|
return &ID;
|
|
}
|
|
|
|
private:
|
|
unsigned calculateTypeSize(Type *type);
|
|
void convertAllocaToGlobal(AllocaInst *alloca, Function *F, Module *M);
|
|
std::string generateUniqueGlobalName(AllocaInst *alloca, Function *F);
|
|
};
|
|
|
|
} // namespace sysy
|