[llvm] r192823 - Fix MCDataAtom never calling remap when adding data.
Rafael Espindola
rafael.espindola at gmail.com
Wed Oct 16 11:26:17 PDT 2013
Author: rafael
Date: Wed Oct 16 13:26:16 2013
New Revision: 192823
URL: http://llvm.org/viewvc/llvm-project?rev=192823&view=rev
Log:
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.
Added:
llvm/trunk/unittests/MC/
llvm/trunk/unittests/MC/CMakeLists.txt
llvm/trunk/unittests/MC/MCAtomTest.cpp
llvm/trunk/unittests/MC/Makefile
- copied, changed from r192821, llvm/trunk/unittests/Makefile
Modified:
llvm/trunk/include/llvm/MC/MCAtom.h
llvm/trunk/lib/MC/MCAtom.cpp
llvm/trunk/unittests/CMakeLists.txt
llvm/trunk/unittests/Makefile
Modified: llvm/trunk/include/llvm/MC/MCAtom.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAtom.h?rev=192823&r1=192822&r2=192823&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCAtom.h (original)
+++ llvm/trunk/include/llvm/MC/MCAtom.h Wed Oct 16 13:26:16 2013
@@ -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);
+ }
};
}
Modified: llvm/trunk/lib/MC/MCAtom.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAtom.cpp?rev=192823&r1=192822&r2=192823&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAtom.cpp (original)
+++ llvm/trunk/lib/MC/MCAtom.cpp Wed Oct 16 13:26:16 2013
@@ -44,7 +44,7 @@ void MCAtom::remapForSplit(uint64_t Spli
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);
}
Modified: llvm/trunk/unittests/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/CMakeLists.txt?rev=192823&r1=192822&r2=192823&view=diff
==============================================================================
--- llvm/trunk/unittests/CMakeLists.txt (original)
+++ llvm/trunk/unittests/CMakeLists.txt Wed Oct 16 13:26:16 2013
@@ -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)
Added: llvm/trunk/unittests/MC/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/MC/CMakeLists.txt?rev=192823&view=auto
==============================================================================
--- llvm/trunk/unittests/MC/CMakeLists.txt (added)
+++ llvm/trunk/unittests/MC/CMakeLists.txt Wed Oct 16 13:26:16 2013
@@ -0,0 +1,11 @@
+set(LLVM_LINK_COMPONENTS
+ MC
+ )
+
+set(MCSources
+ MCAtomTest.cpp
+ )
+
+add_llvm_unittest(MCTests
+ ${MCSources}
+ )
Added: llvm/trunk/unittests/MC/MCAtomTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/MC/MCAtomTest.cpp?rev=192823&view=auto
==============================================================================
--- llvm/trunk/unittests/MC/MCAtomTest.cpp (added)
+++ llvm/trunk/unittests/MC/MCAtomTest.cpp Wed Oct 16 13:26:16 2013
@@ -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
Copied: llvm/trunk/unittests/MC/Makefile (from r192821, llvm/trunk/unittests/Makefile)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/MC/Makefile?p2=llvm/trunk/unittests/MC/Makefile&p1=llvm/trunk/unittests/Makefile&r1=192821&r2=192823&rev=192823&view=diff
==============================================================================
--- llvm/trunk/unittests/Makefile (original)
+++ llvm/trunk/unittests/MC/Makefile Wed Oct 16 13:26:16 2013
@@ -1,4 +1,4 @@
-##===- unittests/Makefile ----------------------------------*- Makefile -*-===##
+##===- unittests/IR/Makefile -------------------------------*- Makefile -*-===##
#
# The LLVM Compiler Infrastructure
#
@@ -7,12 +7,9 @@
#
##===----------------------------------------------------------------------===##
-LEVEL = ..
+LEVEL = ../..
+TESTNAME = MC
+LINK_COMPONENTS := MC
-PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
- Object Option Support Transforms
-
-include $(LEVEL)/Makefile.common
-
-clean::
- $(Verb) $(RM) -f *Tests
+include $(LEVEL)/Makefile.config
+include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
Modified: llvm/trunk/unittests/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Makefile?rev=192823&r1=192822&r2=192823&view=diff
==============================================================================
--- llvm/trunk/unittests/Makefile (original)
+++ llvm/trunk/unittests/Makefile Wed Oct 16 13:26:16 2013
@@ -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
More information about the llvm-commits
mailing list