mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
3eb4be0ace
violation -- MC cannot depend on CodeGen. Specifically, the MCTargetDesc component of each target is actually a subcomponent of the MC library. As such, it cannot depend on the target-independent code generator, because MC itself cannot depend on the target-independent code generator. This change moved a flag from the ARM MCTargetDesc file ARMMCAsmInfo.cpp to the CodeGen layer in ARMException.cpp, leaving behind an 'extern' to refer back to it. That layering order isn't viable givin the constraints outlined above. Commandline flags are designed to be static specifically to avoid these types of bugs. Fixing this is likely going to require some non-trivial refactoring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148759 91177308-0d34-0410-b5e6-96231b3b80d8
88 lines
2.0 KiB
C++
88 lines
2.0 KiB
C++
//===-- ARMMCAsmInfo.cpp - ARM asm properties -------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the declarations of the ARMMCAsmInfo properties.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "ARMMCAsmInfo.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
|
|
using namespace llvm;
|
|
|
|
cl::opt<bool>
|
|
EnableARMEHABI("arm-enable-ehabi", cl::Hidden,
|
|
cl::desc("Generate ARM EHABI tables"),
|
|
cl::init(false));
|
|
|
|
|
|
static const char *const arm_asm_table[] = {
|
|
"{r0}", "r0",
|
|
"{r1}", "r1",
|
|
"{r2}", "r2",
|
|
"{r3}", "r3",
|
|
"{r4}", "r4",
|
|
"{r5}", "r5",
|
|
"{r6}", "r6",
|
|
"{r7}", "r7",
|
|
"{r8}", "r8",
|
|
"{r9}", "r9",
|
|
"{r10}", "r10",
|
|
"{r11}", "r11",
|
|
"{r12}", "r12",
|
|
"{r13}", "r13",
|
|
"{r14}", "r14",
|
|
"{lr}", "lr",
|
|
"{sp}", "sp",
|
|
"{ip}", "ip",
|
|
"{fp}", "fp",
|
|
"{sl}", "sl",
|
|
"{memory}", "memory",
|
|
"{cc}", "cc",
|
|
0,0
|
|
};
|
|
|
|
void ARMMCAsmInfoDarwin::anchor() { }
|
|
|
|
ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin() {
|
|
AsmTransCBE = arm_asm_table;
|
|
Data64bitsDirective = 0;
|
|
CommentString = "@";
|
|
Code16Directive = ".code\t16";
|
|
Code32Directive = ".code\t32";
|
|
|
|
SupportsDebugInformation = true;
|
|
|
|
// Exceptions handling
|
|
ExceptionsType = ExceptionHandling::SjLj;
|
|
}
|
|
|
|
void ARMELFMCAsmInfo::anchor() { }
|
|
|
|
ARMELFMCAsmInfo::ARMELFMCAsmInfo() {
|
|
// ".comm align is in bytes but .align is pow-2."
|
|
AlignmentIsInBytes = false;
|
|
|
|
Data64bitsDirective = 0;
|
|
CommentString = "@";
|
|
PrivateGlobalPrefix = ".L";
|
|
Code16Directive = ".code\t16";
|
|
Code32Directive = ".code\t32";
|
|
|
|
WeakRefDirective = "\t.weak\t";
|
|
LCOMMDirectiveType = LCOMM::NoAlignment;
|
|
|
|
HasLEB128 = true;
|
|
SupportsDebugInformation = true;
|
|
|
|
// Exceptions handling
|
|
if (EnableARMEHABI)
|
|
ExceptionsType = ExceptionHandling::ARM;
|
|
}
|