"Fossies" - the Fresh Open Source Software Archive

Member "cfe-9.0.0.src/lib/Basic/Targets/ARC.h" (19 Jan 2019, 2442 Bytes) of package /linux/misc/cfe-9.0.0.src.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "ARC.h": 8.0.1_vs_9.0.0.

    1 //===--- ARC.h - Declare ARC target feature support -------------*- C++ -*-===//
    2 //
    3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
    4 // See https://llvm.org/LICENSE.txt for license information.
    5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
    6 //
    7 //===----------------------------------------------------------------------===//
    8 //
    9 // This file declares ARC TargetInfo objects.
   10 //
   11 //===----------------------------------------------------------------------===//
   12 
   13 #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_ARC_H
   14 #define LLVM_CLANG_LIB_BASIC_TARGETS_ARC_H
   15 
   16 #include "clang/Basic/TargetInfo.h"
   17 #include "clang/Basic/TargetOptions.h"
   18 #include "llvm/ADT/Triple.h"
   19 #include "llvm/Support/Compiler.h"
   20 
   21 namespace clang {
   22 namespace targets {
   23 
   24 class LLVM_LIBRARY_VISIBILITY ARCTargetInfo : public TargetInfo {
   25 public:
   26   ARCTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
   27       : TargetInfo(Triple) {
   28     NoAsmVariants = true;
   29     LongLongAlign = 32;
   30     SuitableAlign = 32;
   31     DoubleAlign = LongDoubleAlign = 32;
   32     SizeType = UnsignedInt;
   33     PtrDiffType = SignedInt;
   34     IntPtrType = SignedInt;
   35     UseZeroLengthBitfieldAlignment = true;
   36     resetDataLayout("e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-"
   37                     "i32:32:32-f32:32:32-i64:32-f64:32-a:0:32-n32");
   38   }
   39 
   40   void getTargetDefines(const LangOptions &Opts,
   41                         MacroBuilder &Builder) const override;
   42 
   43   ArrayRef<Builtin::Info> getTargetBuiltins() const override { return None; }
   44 
   45   BuiltinVaListKind getBuiltinVaListKind() const override {
   46     return TargetInfo::VoidPtrBuiltinVaList;
   47   }
   48 
   49   const char *getClobbers() const override { return ""; }
   50 
   51   ArrayRef<const char *> getGCCRegNames() const override {
   52     static const char *const GCCRegNames[] = {
   53         "r0",  "r1",  "r2",  "r3",  "r4",  "r5",     "r6",  "r7",
   54         "r8",  "r9",  "r10", "r11", "r12", "r13",    "r14", "r15",
   55         "r16", "r17", "r18", "r19", "r20", "r21",    "r22", "r23",
   56         "r24", "r25", "gp",  "sp",  "fp",  "ilink1", "r30", "blink"};
   57     return llvm::makeArrayRef(GCCRegNames);
   58   }
   59 
   60   ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override {
   61     return None;
   62   }
   63 
   64   bool validateAsmConstraint(const char *&Name,
   65                              TargetInfo::ConstraintInfo &Info) const override {
   66     return false;
   67   }
   68 };
   69 
   70 } // namespace targets
   71 } // namespace clang
   72 
   73 #endif // LLVM_CLANG_LIB_BASIC_TARGETS_ARC_H