Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: src/IceTargetLoweringX8632.cpp

Issue 641193002: Introduce the notion of function addresses in Subzero. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Clean up code and fix nits. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/IceTargetLoweringX8632.cpp
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
index 343113cfeeb16f74ef321bc4dc7867a16567e6ba..07d1867bbc0eb066744c2415b0c3061fd5f09457 100644
--- a/src/IceTargetLoweringX8632.cpp
+++ b/src/IceTargetLoweringX8632.cpp
@@ -4427,7 +4427,7 @@ void ConstantUndef::emit(GlobalContext *) const {
TargetGlobalInitX8632::TargetGlobalInitX8632(GlobalContext *Ctx)
: TargetGlobalInitLowering(Ctx) {}
-void TargetGlobalInitX8632::lower(const GlobalAddress &Global,
+void TargetGlobalInitX8632::lower(const GlobalVariable &Global,
bool DisableTranslation) {
if (Ctx->isVerbose()) {
Global.dump(Ctx->getStrDump());
@@ -4442,17 +4442,15 @@ void TargetGlobalInitX8632::lower(const GlobalAddress &Global,
// will allow us to cross test relocations for references to external
// global variables.
- const GlobalAddress::InitializerListType &Initializers =
+ const GlobalVariable::InitializerListType &Initializers =
Global.getInitializers();
assert(Initializers.size());
- bool HasInitializer =
- !(Initializers.size() == 1 &&
- llvm::isa<GlobalAddress::ZeroInitializer>(Initializers[0]));
+ bool HasInitializer = Global.hasInitializer();
bool IsConstant = Global.getIsConstant();
- bool IsExternal = !Global.getIsInternal();
+ bool IsExternal = Global.getIsExternal();
uint32_t Align = Global.getAlignment();
SizeT Size = Global.getNumBytes();
- IceString MangledName = Ctx->mangleName(Global.getName());
+ IceString MangledName = Global.mangleName(Ctx);
IceString SectionSuffix = "";
if (Ctx->getFlags().DataSections)
SectionSuffix = "." + MangledName;
@@ -4483,29 +4481,25 @@ void TargetGlobalInitX8632::lower(const GlobalAddress &Global,
Str << "\t.comm\t" << MangledName << "," << Size << "," << Align << "\n";
if (HasInitializer) {
- for (GlobalAddress::Initializer *Init : Initializers) {
+ for (GlobalVariable::Initializer *Init : Initializers) {
switch (Init->getKind()) {
- case GlobalAddress::Initializer::DataInitializerKind: {
+ case GlobalVariable::Initializer::DataInitializerKind: {
const auto Data =
- llvm::cast<GlobalAddress::DataInitializer>(Init)->getContents();
+ llvm::cast<GlobalVariable::DataInitializer>(Init)->getContents();
for (SizeT i = 0; i < Init->getNumBytes(); ++i) {
Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n";
}
break;
}
- case GlobalAddress::Initializer::ZeroInitializerKind:
+ case GlobalVariable::Initializer::ZeroInitializerKind:
Str << "\t.zero\t" << Init->getNumBytes() << "\n";
break;
- case GlobalAddress::Initializer::RelocInitializerKind: {
- const auto Reloc = llvm::cast<GlobalAddress::RelocInitializer>(Init);
+ case GlobalVariable::Initializer::RelocInitializerKind: {
+ const auto Reloc = llvm::cast<GlobalVariable::RelocInitializer>(Init);
Str << "\t.long\t";
- // TODO(kschimpf): Once the representation of a relocation has
- // been modified to reference the corresponding global
- // address, modify to not mangle the name if the global is
- // external and uninitialized. This will allow us to better
- // test cross test relocations.
- Str << Ctx->mangleName(Reloc->getName());
- if (GlobalAddress::RelocOffsetType Offset = Reloc->getOffset()) {
+ const GlobalAddress *RelocAddr = Reloc->getAddress();
+ Str << RelocAddr->mangleName(Ctx);
+ if (GlobalVariable::RelocOffsetType Offset = Reloc->getOffset()) {
Str << " + " << Offset;
}
Str << "\n";

Powered by Google App Engine
This is Rietveld 408576698