From 3c500e6947ed8db719d87d47572de86e107ec094 Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Wed, 7 Apr 2010 20:53:12 +0000 Subject: [PATCH] Re-enable ARM/Thumb disassembler and add a workaround for a memcpy() call in ARMDecoderEmitter.cpp, with FIXME comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100690 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/Disassembler/Makefile | 16 ++++++++++++++++ lib/Target/ARM/Makefile | 5 +++-- utils/TableGen/ARMDecoderEmitter.cpp | 8 ++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 lib/Target/ARM/Disassembler/Makefile diff --git a/lib/Target/ARM/Disassembler/Makefile b/lib/Target/ARM/Disassembler/Makefile new file mode 100644 index 00000000000..031b6aca5a4 --- /dev/null +++ b/lib/Target/ARM/Disassembler/Makefile @@ -0,0 +1,16 @@ +##===- lib/Target/ARM/Disassembler/Makefile ----------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../../.. +LIBRARYNAME = LLVMARMDisassembler + +# Hack: we need to include 'main' arm target directory to grab private headers +CPPFLAGS = -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/.. + +include $(LEVEL)/Makefile.common diff --git a/lib/Target/ARM/Makefile b/lib/Target/ARM/Makefile index a8dd38cb362..47922436f53 100644 --- a/lib/Target/ARM/Makefile +++ b/lib/Target/ARM/Makefile @@ -16,8 +16,9 @@ BUILT_SOURCES = ARMGenRegisterInfo.h.inc ARMGenRegisterNames.inc \ ARMGenRegisterInfo.inc ARMGenInstrNames.inc \ ARMGenInstrInfo.inc ARMGenAsmWriter.inc \ ARMGenDAGISel.inc ARMGenSubtarget.inc \ - ARMGenCodeEmitter.inc ARMGenCallingConv.inc + ARMGenCodeEmitter.inc ARMGenCallingConv.inc \ + ARMGenDecoderTables.inc -DIRS = AsmPrinter AsmParser TargetInfo +DIRS = AsmPrinter AsmParser Disassembler TargetInfo include $(LEVEL)/Makefile.common diff --git a/utils/TableGen/ARMDecoderEmitter.cpp b/utils/TableGen/ARMDecoderEmitter.cpp index 5fb8b6bfb23..230152195ed 100644 --- a/utils/TableGen/ARMDecoderEmitter.cpp +++ b/utils/TableGen/ARMDecoderEmitter.cpp @@ -596,7 +596,11 @@ void Filter::recurse() { bit_value_t BitValueArray[BIT_WIDTH]; // Starts by inheriting our parent filter chooser's filter bit values. - memcpy(BitValueArray, Owner->FilterBitValues, sizeof(BitValueArray)); + bit_value_t *BitVals = Owner->FilterBitValues; + for (unsigned i = 0; i < BIT_WIDTH; ++i) + BitValueArray[i] = BitVals[i]; + // FIXME: memcpy() is optmized out with self-hosting llvm-gcc (-O1 and -O2). + //memcpy(BitValueArray, Owner->FilterBitValues, sizeof(BitValueArray)); unsigned bitIndex; @@ -623,7 +627,7 @@ void Filter::recurse() { assert(FilterChooserMap.size() == 1); return; } - + // Otherwise, create sub choosers. for (mapIterator = FilteredInstructions.begin(); mapIterator != FilteredInstructions.end(); -- 2.34.1