mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 23:32:58 +00:00
Fix MCDataAtom never calling remap when adding data.
This patch fixes a small mistake in MCDataAtom::addData() where it doesn't ever call remap(): - if (Data.size() > Begin - End - 1) + if (Data.size() > End + 1 - Begin) remap(Begin, End + 1); This is currently not visible because of another bug is the disassembler, so the patch includes a unit test. Patch by Stephen Checkoway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192823 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2906b519d1
commit
49978e6125
@ -188,7 +188,9 @@ private:
|
|||||||
friend class MCModule;
|
friend class MCModule;
|
||||||
// Private constructor - only callable by MCModule
|
// Private constructor - only callable by MCModule
|
||||||
MCDataAtom(MCModule *P, uint64_t Begin, uint64_t End)
|
MCDataAtom(MCModule *P, uint64_t Begin, uint64_t End)
|
||||||
: MCAtom(DataAtom, P, Begin, End), Data(End - Begin) {}
|
: MCAtom(DataAtom, P, Begin, End) {
|
||||||
|
Data.reserve(End + 1 - Begin);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ void MCAtom::remapForSplit(uint64_t SplitPt,
|
|||||||
|
|
||||||
void MCDataAtom::addData(const MCData &D) {
|
void MCDataAtom::addData(const MCData &D) {
|
||||||
Data.push_back(D);
|
Data.push_back(D);
|
||||||
if (Data.size() > Begin - End - 1)
|
if (Data.size() > End + 1 - Begin)
|
||||||
remap(Begin, End + 1);
|
remap(Begin, End + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ add_subdirectory(CodeGen)
|
|||||||
add_subdirectory(DebugInfo)
|
add_subdirectory(DebugInfo)
|
||||||
add_subdirectory(ExecutionEngine)
|
add_subdirectory(ExecutionEngine)
|
||||||
add_subdirectory(IR)
|
add_subdirectory(IR)
|
||||||
|
add_subdirectory(MC)
|
||||||
add_subdirectory(Object)
|
add_subdirectory(Object)
|
||||||
add_subdirectory(Option)
|
add_subdirectory(Option)
|
||||||
add_subdirectory(Support)
|
add_subdirectory(Support)
|
||||||
|
11
unittests/MC/CMakeLists.txt
Normal file
11
unittests/MC/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
set(LLVM_LINK_COMPONENTS
|
||||||
|
MC
|
||||||
|
)
|
||||||
|
|
||||||
|
set(MCSources
|
||||||
|
MCAtomTest.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_llvm_unittest(MCTests
|
||||||
|
${MCSources}
|
||||||
|
)
|
31
unittests/MC/MCAtomTest.cpp
Normal file
31
unittests/MC/MCAtomTest.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
//===- llvm/unittest/MC/MCAtomTest.cpp - Instructions unit tests ----------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "llvm/MC/MCAtom.h"
|
||||||
|
#include "llvm/MC/MCModule.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
TEST(MCAtomTest, MCDataSize) {
|
||||||
|
MCModule M;
|
||||||
|
MCDataAtom *Atom = M.createDataAtom(0, 0);
|
||||||
|
EXPECT_EQ(uint64_t(0), Atom->getEndAddr());
|
||||||
|
Atom->addData(0);
|
||||||
|
EXPECT_EQ(uint64_t(0), Atom->getEndAddr());
|
||||||
|
Atom->addData(1);
|
||||||
|
EXPECT_EQ(uint64_t(1), Atom->getEndAddr());
|
||||||
|
Atom->addData(2);
|
||||||
|
EXPECT_EQ(uint64_t(2), Atom->getEndAddr());
|
||||||
|
EXPECT_EQ(size_t(3), Atom->getData().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end anonymous namespace
|
||||||
|
} // end namespace llvm
|
15
unittests/MC/Makefile
Normal file
15
unittests/MC/Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
##===- unittests/IR/Makefile -------------------------------*- Makefile -*-===##
|
||||||
|
#
|
||||||
|
# The LLVM Compiler Infrastructure
|
||||||
|
#
|
||||||
|
# This file is distributed under the University of Illinois Open Source
|
||||||
|
# License. See LICENSE.TXT for details.
|
||||||
|
#
|
||||||
|
##===----------------------------------------------------------------------===##
|
||||||
|
|
||||||
|
LEVEL = ../..
|
||||||
|
TESTNAME = MC
|
||||||
|
LINK_COMPONENTS := MC
|
||||||
|
|
||||||
|
include $(LEVEL)/Makefile.config
|
||||||
|
include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
|
@ -10,7 +10,7 @@
|
|||||||
LEVEL = ..
|
LEVEL = ..
|
||||||
|
|
||||||
PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
|
PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
|
||||||
Object Option Support Transforms
|
MC Object Option Support Transforms
|
||||||
|
|
||||||
include $(LEVEL)/Makefile.common
|
include $(LEVEL)/Makefile.common
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user