[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