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 <[email protected]> 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 <[email protected]> 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 [[email protected]] >> Sent: 13 August 2013 14:16 >> To: Robert Lytton >> Cc: [email protected] >> 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 <[email protected]> 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 >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
