mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-29 14:20:29 +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. llvm-svn: 192823
This commit is contained in:
parent
d04ddcb4e2
commit
f1aa4d7d7f
@ -188,7 +188,9 @@ private:
|
||||
friend class MCModule;
|
||||
// Private constructor - only callable by MCModule
|
||||
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) {
|
||||
Data.push_back(D);
|
||||
if (Data.size() > Begin - End - 1)
|
||||
if (Data.size() > End + 1 - Begin)
|
||||
remap(Begin, End + 1);
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ add_subdirectory(CodeGen)
|
||||
add_subdirectory(DebugInfo)
|
||||
add_subdirectory(ExecutionEngine)
|
||||
add_subdirectory(IR)
|
||||
add_subdirectory(MC)
|
||||
add_subdirectory(Object)
|
||||
add_subdirectory(Option)
|
||||
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 = ..
|
||||
|
||||
PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
|
||||
Object Option Support Transforms
|
||||
MC Object Option Support Transforms
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user