r188258 - Add XCore target

Arnold Schwaighofer aschwaighofer at apple.com
Tue Aug 13 07:55:35 PDT 2013


Fixed in r188271.

It was breaking our bots too.

http://llvm.org/docs/CommandGuide/FileCheck.html has a description of the syntax.

Thanks,
Arnold

On Aug 13, 2013, at 9:30 AM, Evgeniy Stepanov <eugeni.stepanov at gmail.com> wrote:

> I usually just omit the identifiers in tests. If they really matter,
> you can use regexps like that, but it often makes the test more
> sensitive to unrelated changes and various optimizations.
> 
> In this case, there was report in the IRC with this failure:
> http://pastebin.com/RDGnH4ny
> 
> On Tue, Aug 13, 2013 at 6:27 PM, Robert Lytton <robert at xmos.com> wrote:
>> Hi Evgeniy,
>> 
>> Please could you elaborate on what the test should have been.
>> Is it better to replace the identifiers with regular expression matching? viz:
>>    char* v1 = va_arg (ap, char*);
>>    // CHECK: %{{[0-9]+}} = va_arg i8** [[AP:%arg[0-9]*]], i8*
>> 
>> Robert
>> 
>> ________________________________________
>> From: Evgeniy Stepanov [eugeni.stepanov at gmail.com]
>> Sent: 13 August 2013 14:16
>> To: Robert Lytton
>> Cc: cfe-commits at cs.uiuc.edu
>> Subject: Re: r188258 - Add XCore target
>> 
>>> %ap
>> Please don't use named (as well as numbered) identifiers in lit tests.
>> They are fragile and can be stripped in optimized builds.
>> 
>> 
>> On Tue, Aug 13, 2013 at 1:43 PM, Robert Lytton <robert at xmos.com> wrote:
>>> Author: rlytton
>>> Date: Tue Aug 13 04:43:10 2013
>>> New Revision: 188258
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=188258&view=rev
>>> Log:
>>> Add XCore target
>>> 
>>> Added:
>>>    cfe/trunk/include/clang/Basic/BuiltinsXCore.def
>>>    cfe/trunk/test/CodeGen/xcore-abi.c
>>>    cfe/trunk/test/Driver/xcore-opts.c
>>> Modified:
>>>    cfe/trunk/include/clang/Basic/TargetBuiltins.h
>>>    cfe/trunk/lib/Basic/Targets.cpp
>>>    cfe/trunk/lib/CodeGen/TargetInfo.cpp
>>>    cfe/trunk/lib/Driver/Tools.cpp
>>>    cfe/trunk/test/Preprocessor/init.c
>>>    cfe/trunk/test/Preprocessor/stdint.c
>>> 
>>> Added: cfe/trunk/include/clang/Basic/BuiltinsXCore.def
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsXCore.def?rev=188258&view=auto
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Basic/BuiltinsXCore.def (added)
>>> +++ cfe/trunk/include/clang/Basic/BuiltinsXCore.def Tue Aug 13 04:43:10 2013
>>> @@ -0,0 +1,22 @@
>>> +//===--- BuiltinsXCore.def - XCore Builtin function database ----*- C++ -*-===//
>>> +//
>>> +//                     The LLVM Compiler Infrastructure
>>> +//
>>> +// This file is distributed under the University of Illinois Open Source
>>> +// License. See LICENSE.TXT for details.
>>> +//
>>> +//===----------------------------------------------------------------------===//
>>> +//
>>> +// This file defines the XCore-specific builtin function database.  Users of
>>> +// this file must define the BUILTIN macro to make use of this information.
>>> +//
>>> +//===----------------------------------------------------------------------===//
>>> +
>>> +// The format of this database matches clang/Basic/Builtins.def.
>>> +
>>> +BUILTIN(__builtin_bitrev, "UiUi", "nc")
>>> +BUILTIN(__builtin_getid, "Si", "nc")
>>> +BUILTIN(__builtin_getps, "UiUi", "n")
>>> +BUILTIN(__builtin_setps, "vUiUi", "n")
>>> +
>>> +#undef BUILTIN
>>> 
>>> Modified: cfe/trunk/include/clang/Basic/TargetBuiltins.h
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetBuiltins.h?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Basic/TargetBuiltins.h (original)
>>> +++ cfe/trunk/include/clang/Basic/TargetBuiltins.h Tue Aug 13 04:43:10 2013
>>> @@ -131,6 +131,16 @@ namespace clang {
>>>         LastTSBuiltin
>>>     };
>>>   }
>>> +
>>> +  /// \brief XCore builtins
>>> +  namespace XCore {
>>> +    enum {
>>> +        LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
>>> +#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
>>> +#include "clang/Basic/BuiltinsXCore.def"
>>> +        LastTSBuiltin
>>> +    };
>>> +  }
>>> } // end namespace clang.
>>> 
>>> #endif
>>> 
>>> Modified: cfe/trunk/lib/Basic/Targets.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/lib/Basic/Targets.cpp (original)
>>> +++ cfe/trunk/lib/Basic/Targets.cpp Tue Aug 13 04:43:10 2013
>>> @@ -5138,6 +5138,64 @@ namespace {
>>>   };
>>> }
>>> 
>>> +namespace {
>>> +class XCoreTargetInfo : public TargetInfo {
>>> +  static const Builtin::Info BuiltinInfo[];
>>> +public:
>>> +  XCoreTargetInfo(const llvm::Triple &Triple) : TargetInfo(Triple) {
>>> +    BigEndian = false;
>>> +    NoAsmVariants = true;
>>> +    LongLongAlign = 32;
>>> +    SuitableAlign = 32;
>>> +    DoubleAlign = LongDoubleAlign = 32;
>>> +    UseZeroLengthBitfieldAlignment = true;
>>> +    DescriptionString = "e-p:32:32:32-a0:0:32-n32"
>>> +                        "-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32"
>>> +                        "-f16:16:32-f32:32:32-f64:32:32";
>>> +  }
>>> +  virtual void getTargetDefines(const LangOptions &Opts,
>>> +                                MacroBuilder &Builder) const {
>>> +    Builder.defineMacro("__XS1B__");
>>> +  }
>>> +  virtual void getTargetBuiltins(const Builtin::Info *&Records,
>>> +                                 unsigned &NumRecords) const {
>>> +    Records = BuiltinInfo;
>>> +    NumRecords = clang::XCore::LastTSBuiltin-Builtin::FirstTSBuiltin;
>>> +  }
>>> +  virtual BuiltinVaListKind getBuiltinVaListKind() const {
>>> +    return TargetInfo::VoidPtrBuiltinVaList;
>>> +  }
>>> +  virtual const char *getClobbers() const {
>>> +    return "";
>>> +  }
>>> +  virtual void getGCCRegNames(const char * const *&Names,
>>> +                              unsigned &NumNames) const {
>>> +    static const char * const GCCRegNames[] = {
>>> +      "r0",   "r1",   "r2",   "r3",   "r4",   "r5",   "r6",   "r7",
>>> +      "r8",   "r9",   "r10",  "r11",  "cp",   "dp",   "sp",   "lr"
>>> +    };
>>> +    Names = GCCRegNames;
>>> +    NumNames = llvm::array_lengthof(GCCRegNames);
>>> +  }
>>> +  virtual void getGCCRegAliases(const GCCRegAlias *&Aliases,
>>> +                                unsigned &NumAliases) const {
>>> +    Aliases = NULL;
>>> +    NumAliases = 0;
>>> +  }
>>> +  virtual bool validateAsmConstraint(const char *&Name,
>>> +                                     TargetInfo::ConstraintInfo &Info) const {
>>> +    return false;
>>> +  }
>>> +};
>>> +
>>> +const Builtin::Info XCoreTargetInfo::BuiltinInfo[] = {
>>> +#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
>>> +#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) { #ID, TYPE, ATTRS, HEADER,\
>>> +                                              ALL_LANGUAGES },
>>> +#include "clang/Basic/BuiltinsXCore.def"
>>> +};
>>> +} // end anonymous namespace.
>>> +
>>> 
>>> //===----------------------------------------------------------------------===//
>>> // Driver code
>>> @@ -5150,6 +5208,9 @@ static TargetInfo *AllocateTarget(const
>>>   default:
>>>     return NULL;
>>> 
>>> +  case llvm::Triple::xcore:
>>> +    return new XCoreTargetInfo(Triple);
>>> +
>>>   case llvm::Triple::hexagon:
>>>     return new HexagonTargetInfo(Triple);
>>> 
>>> 
>>> Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
>>> +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Tue Aug 13 04:43:10 2013
>>> @@ -5366,6 +5366,22 @@ public:
>>> } // end anonymous namespace
>>> 
>>> 
>>> +//===----------------------------------------------------------------------===//
>>> +// Xcore ABI Implementation
>>> +//===----------------------------------------------------------------------===//
>>> +namespace {
>>> +class XcoreTargetCodeGenInfo : public TargetCodeGenInfo {
>>> +public:
>>> +  XcoreTargetCodeGenInfo(CodeGenTypes &CGT)
>>> +    :TargetCodeGenInfo(new DefaultABIInfo(CGT)) {}
>>> +};
>>> +} // end anonymous namespace
>>> +
>>> +
>>> +//===----------------------------------------------------------------------===//
>>> +// Driver code
>>> +//===----------------------------------------------------------------------===//
>>> +
>>> const TargetCodeGenInfo &CodeGenModule::getTargetCodeGenInfo() {
>>>   if (TheTargetCodeGenInfo)
>>>     return *TheTargetCodeGenInfo;
>>> @@ -5474,5 +5490,8 @@ const TargetCodeGenInfo &CodeGenModule::
>>>     return *(TheTargetCodeGenInfo = new HexagonTargetCodeGenInfo(Types));
>>>   case llvm::Triple::sparcv9:
>>>     return *(TheTargetCodeGenInfo = new SparcV9TargetCodeGenInfo(Types));
>>> +  case llvm::Triple::xcore:
>>> +    return *(TheTargetCodeGenInfo = new XcoreTargetCodeGenInfo(Types));
>>> +
>>>   }
>>> }
>>> 
>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>>> +++ cfe/trunk/lib/Driver/Tools.cpp Tue Aug 13 04:43:10 2013
>>> @@ -552,10 +552,21 @@ static bool isSignedCharDefault(const ll
>>> 
>>>   case llvm::Triple::ppc64le:
>>>   case llvm::Triple::systemz:
>>> +  case llvm::Triple::xcore:
>>>     return false;
>>>   }
>>> }
>>> 
>>> +static bool isNoCommonDefault(const llvm::Triple &Triple) {
>>> +  switch (Triple.getArch()) {
>>> +  default:
>>> +    return false;
>>> +
>>> +  case llvm::Triple::xcore:
>>> +    return true;
>>> +  }
>>> +}
>>> +
>>> // Handle -mfpu=.
>>> //
>>> // FIXME: Centralize feature selection, defaulting shouldn't be also in the
>>> @@ -1761,6 +1772,9 @@ static bool shouldUseFramePointer(const
>>>         return false;
>>>   }
>>> 
>>> +  if (Triple.getArch() == llvm::Triple::xcore)
>>> +    return false;
>>> +
>>>   return true;
>>> }
>>> 
>>> @@ -1780,6 +1794,9 @@ static bool shouldUseLeafFramePointer(co
>>>         return false;
>>>   }
>>> 
>>> +  if (Triple.getArch() == llvm::Triple::xcore)
>>> +    return false;
>>> +
>>>   return true;
>>> }
>>> 
>>> @@ -3200,7 +3217,7 @@ void Clang::ConstructJob(Compilation &C,
>>>     CmdArgs.push_back("-fpack-struct=1");
>>>   }
>>> 
>>> -  if (KernelOrKext) {
>>> +  if (KernelOrKext || isNoCommonDefault(getToolChain().getTriple())) {
>>>     if (!Args.hasArg(options::OPT_fcommon))
>>>       CmdArgs.push_back("-fno-common");
>>>     Args.ClaimAllArgs(options::OPT_fno_common);
>>> 
>>> Added: cfe/trunk/test/CodeGen/xcore-abi.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/xcore-abi.c?rev=188258&view=auto
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGen/xcore-abi.c (added)
>>> +++ cfe/trunk/test/CodeGen/xcore-abi.c Tue Aug 13 04:43:10 2013
>>> @@ -0,0 +1,35 @@
>>> +// RUN: %clang -target xcore -O1 -o - -emit-llvm -S %s | FileCheck %s
>>> +
>>> +// CHECK: target datalayout = "e-p:32:32:32-a0:0:32-n32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f16:16:32-f32:32:32-f64:32:32"
>>> +// CHECK: target triple = "xcore"
>>> +
>>> +#include <stdarg.h>
>>> +struct x { int a; };
>>> +void testva (int n, ...) {
>>> +  va_list ap;
>>> +  // CHECK: %ap = alloca i8*, align 4
>>> +
>>> +  char* v1 = va_arg (ap, char*);
>>> +  // CHECK: %0 = va_arg i8** %ap, i8*
>>> +
>>> +  int v2 = va_arg (ap, int);
>>> +  // CHECK: %1 = va_arg i8** %ap, i32
>>> +
>>> +  long long int v3 = va_arg (ap, long long int);
>>> +  // CHECK: %2 = va_arg i8** %ap, i64
>>> +
>>> +  //struct x t = va_arg (ap, struct x);
>>> +  //cannot compile aggregate va_arg expressions yet
>>> +}
>>> +
>>> +void testbuiltin (void) {
>>> +// CHECK: %0 = tail call i32 @llvm.xcore.getid()
>>> +// CHECK: %1 = tail call i32 @llvm.xcore.getps(i32 %0)
>>> +// CHECK: %2 = tail call i32 @llvm.xcore.bitrev(i32 %1)
>>> +// CHECK: tail call void @llvm.xcore.setps(i32 %0, i32 %2)
>>> +  int i = __builtin_getid();
>>> +  unsigned int ui = __builtin_getps(i);
>>> +  ui = __builtin_bitrev(ui);
>>> +  __builtin_setps(i,ui);
>>> +
>>> +}
>>> 
>>> Added: cfe/trunk/test/Driver/xcore-opts.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/xcore-opts.c?rev=188258&view=auto
>>> ==============================================================================
>>> --- cfe/trunk/test/Driver/xcore-opts.c (added)
>>> +++ cfe/trunk/test/Driver/xcore-opts.c Tue Aug 13 04:43:10 2013
>>> @@ -0,0 +1,15 @@
>>> +// RUN: %clang -target xcore -O1 -o - -emit-llvm -S %s | FileCheck %s
>>> +
>>> +// CHECK: @g1 = global
>>> +int g1;
>>> +// CHECK: @g2 = common global i32 0, align 4
>>> +int g2 __attribute__((common));
>>> +
>>> +// CHECK: define zeroext i8 @testchar()
>>> +// CHECK: ret i8 -1
>>> +char testchar (void) {
>>> +  return (char)-1;
>>> +}
>>> +
>>> +// CHECK: "no-frame-pointer-elim"="false"
>>> +// CHECK: "no-frame-pointer-elim-non-leaf"="false"
>>> 
>>> Modified: cfe/trunk/test/Preprocessor/init.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/test/Preprocessor/init.c (original)
>>> +++ cfe/trunk/test/Preprocessor/init.c Tue Aug 13 04:43:10 2013
>>> @@ -2946,3 +2946,6 @@
>>> // ANDROID: __ANDROID__ 1
>>> // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-freebsd < /dev/null | FileCheck -check-prefix PPC64-FREEBSD %s
>>> // PPC64-FREEBSD-NOT: #define __LONG_DOUBLE_128__ 1
>>> +//
>>> +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=xcore-none-none < /dev/null | FileCheck -check-prefix XCORE %s
>>> +// XCORE:#define __XS1B__ 1
>>> 
>>> Modified: cfe/trunk/test/Preprocessor/stdint.c
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/stdint.c?rev=188258&r1=188257&r2=188258&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/test/Preprocessor/stdint.c (original)
>>> +++ cfe/trunk/test/Preprocessor/stdint.c Tue Aug 13 04:43:10 2013
>>> @@ -963,6 +963,114 @@
>>> // I386_MINGW32:WCHAR_MIN_ 0U
>>> //
>>> //
>>> +// RUN: %clang_cc1 -E -ffreestanding -triple=xcore-none-none %s | FileCheck -check-prefix XCORE %s
>>> +//
>>> +// XCORE:typedef signed long long int int64_t;
>>> +// XCORE:typedef unsigned long long int uint64_t;
>>> +// XCORE:typedef int64_t int_least64_t;
>>> +// XCORE:typedef uint64_t uint_least64_t;
>>> +// XCORE:typedef int64_t int_fast64_t;
>>> +// XCORE:typedef uint64_t uint_fast64_t;
>>> +//
>>> +// XCORE:typedef signed int int32_t;
>>> +// XCORE:typedef unsigned int uint32_t;
>>> +// XCORE:typedef int32_t int_least32_t;
>>> +// XCORE:typedef uint32_t uint_least32_t;
>>> +// XCORE:typedef int32_t int_fast32_t;
>>> +// XCORE:typedef uint32_t uint_fast32_t;
>>> +//
>>> +// XCORE:typedef signed short int16_t;
>>> +// XCORE:typedef unsigned short uint16_t;
>>> +// XCORE:typedef int16_t int_least16_t;
>>> +// XCORE:typedef uint16_t uint_least16_t;
>>> +// XCORE:typedef int16_t int_fast16_t;
>>> +// XCORE:typedef uint16_t uint_fast16_t;
>>> +//
>>> +// XCORE:typedef signed char int8_t;
>>> +// XCORE:typedef unsigned char uint8_t;
>>> +// XCORE:typedef int8_t int_least8_t;
>>> +// XCORE:typedef uint8_t uint_least8_t;
>>> +// XCORE:typedef int8_t int_fast8_t;
>>> +// XCORE:typedef uint8_t uint_fast8_t;
>>> +//
>>> +// XCORE:typedef int32_t intptr_t;
>>> +// XCORE:typedef uint32_t uintptr_t;
>>> +//
>>> +// XCORE:typedef long long int intmax_t;
>>> +// XCORE:typedef long long unsigned int uintmax_t;
>>> +//
>>> +// XCORE:INT8_MAX_ 127
>>> +// XCORE:INT8_MIN_ (-127 -1)
>>> +// XCORE:UINT8_MAX_ 255
>>> +// XCORE:INT_LEAST8_MIN_ (-127 -1)
>>> +// XCORE:INT_LEAST8_MAX_ 127
>>> +// XCORE:UINT_LEAST8_MAX_ 255
>>> +// XCORE:INT_FAST8_MIN_ (-127 -1)
>>> +// XCORE:INT_FAST8_MAX_ 127
>>> +// XCORE:UINT_FAST8_MAX_ 255
>>> +//
>>> +// XCORE:INT16_MAX_ 32767
>>> +// XCORE:INT16_MIN_ (-32767 -1)
>>> +// XCORE:UINT16_MAX_ 65535
>>> +// XCORE:INT_LEAST16_MIN_ (-32767 -1)
>>> +// XCORE:INT_LEAST16_MAX_ 32767
>>> +// XCORE:UINT_LEAST16_MAX_ 65535
>>> +// XCORE:INT_FAST16_MIN_ (-32767 -1)
>>> +// XCORE:INT_FAST16_MAX_ 32767
>>> +// XCORE:UINT_FAST16_MAX_ 65535
>>> +//
>>> +// XCORE:INT32_MAX_ 2147483647
>>> +// XCORE:INT32_MIN_ (-2147483647 -1)
>>> +// XCORE:UINT32_MAX_ 4294967295U
>>> +// XCORE:INT_LEAST32_MIN_ (-2147483647 -1)
>>> +// XCORE:INT_LEAST32_MAX_ 2147483647
>>> +// XCORE:UINT_LEAST32_MAX_ 4294967295U
>>> +// XCORE:INT_FAST32_MIN_ (-2147483647 -1)
>>> +// XCORE:INT_FAST32_MAX_ 2147483647
>>> +// XCORE:UINT_FAST32_MAX_ 4294967295U
>>> +//
>>> +// XCORE:INT64_MAX_ 9223372036854775807LL
>>> +// XCORE:INT64_MIN_ (-9223372036854775807LL -1)
>>> +// XCORE:UINT64_MAX_ 18446744073709551615ULL
>>> +// XCORE:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
>>> +// XCORE:INT_LEAST64_MAX_ 9223372036854775807LL
>>> +// XCORE:UINT_LEAST64_MAX_ 18446744073709551615ULL
>>> +// XCORE:INT_FAST64_MIN_ (-9223372036854775807LL -1)
>>> +// XCORE:INT_FAST64_MAX_ 9223372036854775807LL
>>> +// XCORE:UINT_FAST64_MAX_ 18446744073709551615ULL
>>> +//
>>> +// XCORE:INTPTR_MIN_ (-2147483647 -1)
>>> +// XCORE:INTPTR_MAX_ 2147483647
>>> +// XCORE:UINTPTR_MAX_ 4294967295U
>>> +// XCORE:PTRDIFF_MIN_ (-2147483647 -1)
>>> +// XCORE:PTRDIFF_MAX_ 2147483647
>>> +// XCORE:SIZE_MAX_ 4294967295U
>>> +//
>>> +// XCORE:INTMAX_MIN_ (-9223372036854775807LL -1)
>>> +// XCORE:INTMAX_MAX_ 9223372036854775807LL
>>> +// XCORE:UINTMAX_MAX_ 18446744073709551615ULL
>>> +//
>>> +// XCORE:SIG_ATOMIC_MIN_ (-2147483647 -1)
>>> +// XCORE:SIG_ATOMIC_MAX_ 2147483647
>>> +// XCORE:WINT_MIN_ (-2147483647 -1)
>>> +// XCORE:WINT_MAX_ 2147483647
>>> +//
>>> +// XCORE:WCHAR_MAX_ 2147483647
>>> +// XCORE:WCHAR_MIN_ (-2147483647 -1)
>>> +//
>>> +// XCORE:INT8_C_(0) 0
>>> +// XCORE:UINT8_C_(0) 0U
>>> +// XCORE:INT16_C_(0) 0
>>> +// XCORE:UINT16_C_(0) 0U
>>> +// XCORE:INT32_C_(0) 0
>>> +// XCORE:UINT32_C_(0) 0U
>>> +// XCORE:INT64_C_(0) 0LL
>>> +// XCORE:UINT64_C_(0) 0ULL
>>> +//
>>> +// XCORE:INTMAX_C_(0) 0LL
>>> +// XCORE:UINTMAX_C_(0) 0ULL
>>> +//
>>> +//
>>> // stdint.h forms several macro definitions by pasting together identifiers
>>> // to form names (eg. int32_t is formed from int ## 32 ## _t). The following
>>> // case tests that these joining operations are performed correctly even if
>>> 
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list