[cfe-commits] r165015 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/Basic/ lib/Sema/ test/CodeGen/ test/CodeGenCXX/ test/Sema/

Chandler Carruth chandlerc at google.com
Thu Oct 4 03:45:59 PDT 2012


On Thu, Oct 4, 2012 at 3:33 AM, Alexander Kornienko <alexfh at google.com>wrote:

> FYI: new files in your commit have CR LF line endings. I'm not sure what
> the policy is, but I'd assume that most source/test files have LF line
> endings.


All text files should automatically use Subversion's 'native' EOL handling
which stores LF on the server and converts to the native EOL when doing
checkout / commit / etc.

We don't want to have explicit file properties for obvious text files,
reasonable subversion clients will automatically use this mode, however it
seems a few popular windows clients are very bad about it. It is important
when submitting from windows to make sure the client is set up to handle
this properly.

Aaron, I know you stumbled across this before, maybe write up a little bit
of documentation for how to commit from windows SVN clients safely?


>
>
> On Tue, Oct 2, 2012 at 4:26 PM, Aaron Ballman <aaron at aaronballman.com>wrote:
>
>> Author: aaronballman
>> Date: Tue Oct  2 09:26:08 2012
>> New Revision: 165015
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=165015&view=rev
>> Log:
>> Allowing individual targets to determine whether a given calling
>> convention is allowed or ignored with warning. This allows for correct name
>> mangling for x64 targets on Windows, which in turn allows for linking
>> against the Win32 APIs.
>>
>> Fixes PR13782
>>
>> Added:
>>     cfe/trunk/test/CodeGen/microsoft-call-conv-x64.c
>>     cfe/trunk/test/Sema/MicrosoftCompatibility-x64.c
>>     cfe/trunk/test/Sema/stdcall-fastcall-x64.c
>> Modified:
>>     cfe/trunk/include/clang/AST/Type.h
>>     cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>>     cfe/trunk/include/clang/Basic/Specifiers.h
>>     cfe/trunk/include/clang/Basic/TargetInfo.h
>>     cfe/trunk/lib/Basic/Targets.cpp
>>     cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>>     cfe/trunk/lib/Sema/SemaType.cpp
>>     cfe/trunk/test/CodeGen/microsoft-call-conv.c
>>     cfe/trunk/test/CodeGen/stdcall-fastcall.c
>>     cfe/trunk/test/CodeGenCXX/mangle-ms.cpp
>>     cfe/trunk/test/Sema/MicrosoftCompatibility.c
>>     cfe/trunk/test/Sema/callingconv.c
>>     cfe/trunk/test/Sema/stdcall-fastcall.c
>>
>> Modified: cfe/trunk/include/clang/AST/Type.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/AST/Type.h (original)
>> +++ cfe/trunk/include/clang/AST/Type.h Tue Oct  2 09:26:08 2012
>> @@ -20,6 +20,7 @@
>>  #include "clang/Basic/Linkage.h"
>>  #include "clang/Basic/PartialDiagnostic.h"
>>  #include "clang/Basic/Visibility.h"
>> +#include "clang/Basic/Specifiers.h"
>>  #include "clang/AST/NestedNameSpecifier.h"
>>  #include "clang/AST/TemplateName.h"
>>  #include "llvm/Support/type_traits.h"
>> @@ -490,18 +491,6 @@
>>    static const uint32_t AddressSpaceShift = 8;
>>  };
>>
>> -/// CallingConv - Specifies the calling convention that a function uses.
>> -enum CallingConv {
>> -  CC_Default,
>> -  CC_C,           // __attribute__((cdecl))
>> -  CC_X86StdCall,  // __attribute__((stdcall))
>> -  CC_X86FastCall, // __attribute__((fastcall))
>> -  CC_X86ThisCall, // __attribute__((thiscall))
>> -  CC_X86Pascal,   // __attribute__((pascal))
>> -  CC_AAPCS,       // __attribute__((pcs("aapcs")))
>> -  CC_AAPCS_VFP    // __attribute__((pcs("aapcs-vfp")))
>> -};
>> -
>>  /// A std::pair-like structure for storing a qualified type split
>>  /// into its local qualifiers and its locally-unqualified type.
>>  struct SplitQualType {
>>
>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Tue Oct  2
>> 09:26:08 2012
>> @@ -1799,6 +1799,8 @@
>>  def err_cconv_change : Error<
>>    "function declared '%0' here was previously declared "
>>    "%select{'%2'|without calling convention}1">;
>> +def warn_cconv_ignored : Warning<
>> +  "calling convention %0 ignored for this target">,
>> InGroup<IgnoredAttributes>;
>>  def err_cconv_knr : Error<
>>    "function with no prototype cannot use %0 calling convention">;
>>  def err_cconv_varargs : Error<
>>
>> Modified: cfe/trunk/include/clang/Basic/Specifiers.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Specifiers.h?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/Specifiers.h (original)
>> +++ cfe/trunk/include/clang/Basic/Specifiers.h Tue Oct  2 09:26:08 2012
>> @@ -175,6 +175,19 @@
>>      ICIS_CopyInit, ///< Copy initialization.
>>      ICIS_ListInit  ///< Direct list-initialization.
>>    };
>> +
>> +  /// \brief CallingConv - Specifies the calling convention that a
>> function uses.
>> +  enum CallingConv {
>> +    CC_Default,
>> +    CC_C,           // __attribute__((cdecl))
>> +    CC_X86StdCall,  // __attribute__((stdcall))
>> +    CC_X86FastCall, // __attribute__((fastcall))
>> +    CC_X86ThisCall, // __attribute__((thiscall))
>> +    CC_X86Pascal,   // __attribute__((pascal))
>> +    CC_AAPCS,       // __attribute__((pcs("aapcs")))
>> +    CC_AAPCS_VFP    // __attribute__((pcs("aapcs-vfp")))
>> +  };
>> +
>>  } // end namespace clang
>>
>>  #endif // LLVM_CLANG_BASIC_SPECIFIERS_H
>>
>> Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
>> +++ cfe/trunk/include/clang/Basic/TargetInfo.h Tue Oct  2 09:26:08 2012
>> @@ -24,6 +24,7 @@
>>  #include "llvm/Support/DataTypes.h"
>>  #include "clang/Basic/AddressSpaces.h"
>>  #include "clang/Basic/VersionTuple.h"
>> +#include "clang/Basic/Specifiers.h"
>>  #include <cassert>
>>  #include <vector>
>>  #include <string>
>> @@ -712,6 +713,34 @@
>>
>>    bool isBigEndian() const { return BigEndian; }
>>
>> +  /// \brief Gets the default calling convention for the given target and
>> +  /// declaration context.
>> +  virtual CallingConv getDefaultCallingConv() const {
>> +    // Not all targets will specify an explicit calling convention that
>> we can
>> +    // express.  This will always do the right thing, even though it's
>> not
>> +    // an explicit calling convention.
>> +    return CC_Default;
>> +  }
>> +
>> +  enum CallingConvCheckResult {
>> +    CCCR_OK,
>> +    CCCR_Warning
>> +  };
>> +
>> +  /// \brief Determines whether a given calling convention is valid for
>> the
>> +  /// target. A calling convention can either be accepted, produce a
>> warning
>> +  /// and be substituted with the default calling convention, or
>> (someday)
>> +  /// produce an error (such as using thiscall on a non-instance
>> function).
>> +  virtual CallingConvCheckResult checkCallingConvention(CallingConv CC)
>> const {
>> +    switch (CC) {
>> +      default:
>> +        return CCCR_Warning;
>> +      case CC_C:
>> +      case CC_Default:
>> +        return CCCR_OK;
>> +    }
>> +  }
>> +
>>  protected:
>>    virtual uint64_t getPointerWidthV(unsigned AddrSpace) const {
>>      return PointerWidth;
>>
>> Modified: cfe/trunk/lib/Basic/Targets.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Basic/Targets.cpp (original)
>> +++ cfe/trunk/lib/Basic/Targets.cpp Tue Oct  2 09:26:08 2012
>> @@ -1673,6 +1673,19 @@
>>      }
>>      llvm_unreachable("Unhandled CPU kind");
>>    }
>> +
>> +  virtual CallingConvCheckResult checkCallingConvention(CallingConv CC)
>> const {
>> +    // We accept all non-ARM calling conventions
>> +    return (CC == CC_X86ThisCall ||
>> +            CC == CC_X86FastCall ||
>> +            CC == CC_X86StdCall ||
>> +            CC == CC_C ||
>> +            CC == CC_X86Pascal) ? CCCR_OK : CCCR_Warning;
>> +  }
>> +
>> +  virtual CallingConv getDefaultCallingConv() const {
>> +    return CC_C;
>> +  }
>>  };
>>
>>  void X86TargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features)
>> const {
>> @@ -2708,6 +2721,15 @@
>>      if (RegNo == 1) return 1;
>>      return -1;
>>    }
>> +
>> +  virtual CallingConvCheckResult checkCallingConvention(CallingConv CC)
>> const {
>> +    return TargetInfo::checkCallingConvention(CC);
>> +  }
>> +
>> +  virtual CallingConv getDefaultCallingConv() const {
>> +    return CC_Default;
>> +  }
>> +
>>  };
>>  } // end anonymous namespace
>>
>> @@ -3167,6 +3189,10 @@
>>      // FIXME: Is this really right?
>>      return "";
>>    }
>> +
>> +  virtual CallingConvCheckResult checkCallingConvention(CallingConv CC)
>> const {
>> +    return (CC == CC_AAPCS || CC == CC_AAPCS_VFP) ? CCCR_OK :
>> CCCR_Warning;
>> +  }
>>  };
>>
>>  const char * const ARMTargetInfo::GCCRegNames[] = {
>>
>> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Tue Oct  2 09:26:08 2012
>> @@ -3638,6 +3638,13 @@
>>    default: llvm_unreachable("unexpected attribute kind");
>>    }
>>
>> +  const TargetInfo &TI = Context.getTargetInfo();
>> +  TargetInfo::CallingConvCheckResult A = TI.checkCallingConvention(CC);
>> +  if (A == TargetInfo::CCCR_Warning) {
>> +    Diag(attr.getLoc(), diag::warn_cconv_ignored) << attr.getName();
>> +    CC = TI.getDefaultCallingConv();
>> +  }
>> +
>>    return false;
>>  }
>>
>>
>> Modified: cfe/trunk/lib/Sema/SemaType.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaType.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaType.cpp Tue Oct  2 09:26:08 2012
>> @@ -3886,14 +3886,14 @@
>>      return true;
>>    }
>>
>> +  // Delay if the type didn't work out to a function.
>> +  if (!unwrapped.isFunctionType()) return false;
>> +
>>    // Otherwise, a calling convention.
>>    CallingConv CC;
>>    if (S.CheckCallingConvAttr(attr, CC))
>>      return true;
>>
>> -  // Delay if the type didn't work out to a function.
>> -  if (!unwrapped.isFunctionType()) return false;
>> -
>>    const FunctionType *fn = unwrapped.get();
>>    CallingConv CCOld = fn->getCallConv();
>>    if (S.Context.getCanonicalCallConv(CC) ==
>>
>> Added: cfe/trunk/test/CodeGen/microsoft-call-conv-x64.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/microsoft-call-conv-x64.c?rev=165015&view=auto
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGen/microsoft-call-conv-x64.c (added)
>> +++ cfe/trunk/test/CodeGen/microsoft-call-conv-x64.c Tue Oct  2 09:26:08
>> 2012
>> @@ -0,0 +1,39 @@
>> +// RUN: %clang_cc1 -triple x86_64-pc-win32 -emit-llvm < %s | FileCheck %s
>> +
>> +void __fastcall f1(void);
>> +void __stdcall f2(void);
>> +void __fastcall f4(void) {
>> +// CHECK: define void @f4()
>> +  f1();
>> +// CHECK: call void @f1()
>> +}
>> +void __stdcall f5(void) {
>> +// CHECK: define void @f5()
>> +  f2();
>> +// CHECK: call void @f2()
>> +}
>> +
>> +// PR5280
>> +void (__fastcall *pf1)(void) = f1;
>> +void (__stdcall *pf2)(void) = f2;
>> +void (__fastcall *pf4)(void) = f4;
>> +void (__stdcall *pf5)(void) = f5;
>> +
>> +int main(void) {
>> +    f4(); f5();
>> +    // CHECK: call void @f4()
>> +    // CHECK: call void @f5()
>> +    pf1(); pf2(); pf4(); pf5();
>> +    // CHECK: call void %{{.*}}()
>> +    // CHECK: call void %{{.*}}()
>> +    // CHECK: call void %{{.*}}()
>> +    // CHECK: call void %{{.*}}()
>> +    return 0;
>> +}
>> +
>> +// PR7117
>> +void __stdcall f7(foo) int foo; {}
>> +void f8(void) {
>> +  f7(0);
>> +  // CHECK: call void @f7(i32 0)
>> +}
>>
>> Modified: cfe/trunk/test/CodeGen/microsoft-call-conv.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/microsoft-call-conv.c?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGen/microsoft-call-conv.c (original)
>> +++ cfe/trunk/test/CodeGen/microsoft-call-conv.c Tue Oct  2 09:26:08 2012
>> @@ -1,4 +1,4 @@
>> -// RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s
>> +// RUN: %clang_cc1 -triple i386-pc-linux -emit-llvm < %s | FileCheck %s
>>
>>  void __fastcall f1(void);
>>  void __stdcall f2(void);
>>
>> Modified: cfe/trunk/test/CodeGen/stdcall-fastcall.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/stdcall-fastcall.c?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGen/stdcall-fastcall.c (original)
>> +++ cfe/trunk/test/CodeGen/stdcall-fastcall.c Tue Oct  2 09:26:08 2012
>> @@ -1,4 +1,4 @@
>> -// RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s
>> +// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm < %s |
>> FileCheck %s
>>
>>  void __attribute__((fastcall)) f1(void);
>>  void __attribute__((stdcall)) f2(void);
>>
>> Modified: cfe/trunk/test/CodeGenCXX/mangle-ms.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/mangle-ms.cpp?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenCXX/mangle-ms.cpp (original)
>> +++ cfe/trunk/test/CodeGenCXX/mangle-ms.cpp Tue Oct  2 09:26:08 2012
>> @@ -1,4 +1,5 @@
>>  // RUN: %clang_cc1 -fms-extensions -fblocks -emit-llvm %s -o - -cxx-abi
>> microsoft -triple=i386-pc-win32 | FileCheck %s
>> +// RUN: %clang_cc1 -fms-compatibility -fblocks -emit-llvm %s -o -
>> -cxx-abi microsoft -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s
>>
>>  // CHECK: @"\01?a@@3HA"
>>  // CHECK: @"\01?b at N@@3HA"
>> @@ -109,6 +110,7 @@
>>  }
>>
>>  // CHECK: @"\01?alpha@@YGXMN at Z"
>> +// X64: @"\01?alpha@@YAXMN at Z"
>>
>>  // Make sure tag-type mangling works.
>>  void gamma(class foo, struct bar, union baz, enum quux) {}
>>
>> Added: cfe/trunk/test/Sema/MicrosoftCompatibility-x64.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/MicrosoftCompatibility-x64.c?rev=165015&view=auto
>>
>> ==============================================================================
>> --- cfe/trunk/test/Sema/MicrosoftCompatibility-x64.c (added)
>> +++ cfe/trunk/test/Sema/MicrosoftCompatibility-x64.c Tue Oct  2 09:26:08
>> 2012
>> @@ -0,0 +1,8 @@
>> +// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft
>> -verify -fms-compatibility -triple x86_64-pc-win32
>> +int __stdcall f(void); /* expected-warning {{calling convention
>> '__stdcall' ignored for this target}} */
>> +
>> +/* This should compile without warning because __stdcall is treated
>> +as __cdecl in MS compatibility mode for x64 compiles*/
>> +int __cdecl f(void) {
>> +  return 0;
>> +}
>>
>> Modified: cfe/trunk/test/Sema/MicrosoftCompatibility.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/MicrosoftCompatibility.c?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Sema/MicrosoftCompatibility.c (original)
>> +++ cfe/trunk/test/Sema/MicrosoftCompatibility.c Tue Oct  2 09:26:08 2012
>> @@ -18,4 +18,10 @@
>>  __declspec(align(32768)) struct S1 { int a; } s;       /* expected-error
>> {{requested alignment must be 8192 bytes or smaller}} */
>>  struct __declspec(aligned) S2 {}; /* expected-warning {{unknown
>> __declspec attribute 'aligned' ignored}} */
>>
>> -struct __declspec(appdomain) S3 {}; /* expected-warning {{__declspec
>> attribute 'appdomain' is not supported}} */
>> \ No newline at end of file
>> +struct __declspec(appdomain) S3 {}; /* expected-warning {{__declspec
>> attribute 'appdomain' is not supported}} */
>> +
>> +int __stdcall f(void); /* expected-note {{previous declaration is here}}
>> */
>> +
>> +int __cdecl f(void) { /* expected-error {{function declared 'cdecl' here
>> was previously declared 'stdcall'}} */
>> +  return 0;
>> +}
>>
>> Modified: cfe/trunk/test/Sema/callingconv.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/callingconv.c?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Sema/callingconv.c (original)
>> +++ cfe/trunk/test/Sema/callingconv.c Tue Oct  2 09:26:08 2012
>> @@ -1,4 +1,4 @@
>> -// RUN: %clang_cc1 %s -fsyntax-only -verify
>> +// RUN: %clang_cc1 %s -fsyntax-only -triple i386-unknown-unknown -verify
>>
>>  void __attribute__((fastcall)) foo(float *a) {
>>  }
>> @@ -40,8 +40,9 @@
>>  int __attribute__((pcs())) pcs2(void); // expected-error {{attribute
>> takes one argument}}
>>  int __attribute__((pcs(pcs1))) pcs3(void); // expected-error {{attribute
>> takes one argument}}
>>  int __attribute__((pcs(0))) pcs4(void); // expected-error {{'pcs'
>> attribute requires parameter 1 to be a string}}
>> -int __attribute__((pcs("aapcs"))) pcs5(void); // no-error
>> -int __attribute__((pcs("aapcs-vfp"))) pcs6(void); // no-error
>> +/* These are ignored because the target is i386 and not ARM */
>> +int __attribute__((pcs("aapcs"))) pcs5(void); // expected-warning
>> {{calling convention 'pcs' ignored for this target}}
>> +int __attribute__((pcs("aapcs-vfp"))) pcs6(void); // expected-warning
>> {{calling convention 'pcs' ignored for this target}}
>>  int __attribute__((pcs("foo"))) pcs7(void); // expected-error {{Invalid
>> PCS type}}
>>
>>  // PR6361
>>
>> Added: cfe/trunk/test/Sema/stdcall-fastcall-x64.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/stdcall-fastcall-x64.c?rev=165015&view=auto
>>
>> ==============================================================================
>> --- cfe/trunk/test/Sema/stdcall-fastcall-x64.c (added)
>> +++ cfe/trunk/test/Sema/stdcall-fastcall-x64.c Tue Oct  2 09:26:08 2012
>> @@ -0,0 +1,20 @@
>> +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-pc-linux-gnu %s
>> +
>> +// CC qualifier can be applied only to functions
>> +int __attribute__((stdcall)) var1; // expected-warning{{'stdcall' only
>> applies to function types; type here is 'int'}}
>> +int __attribute__((fastcall)) var2; // expected-warning{{'fastcall' only
>> applies to function types; type here is 'int'}}
>> +
>> +// Different CC qualifiers are not compatible
>> +void __attribute__((stdcall, fastcall)) foo3(void); //
>> expected-warning{{calling convention 'stdcall' ignored for this target}}
>> expected-warning {{calling convention 'fastcall' ignored for this target}}
>> +void __attribute__((stdcall)) foo4(); // expected-warning{{calling
>> convention 'stdcall' ignored for this target}}
>> +void __attribute__((fastcall)) foo4(void); // expected-warning {{calling
>> convention 'fastcall' ignored for this target}}
>> +
>> +// rdar://8876096
>> +void rdar8876096foo1(int i, int j) __attribute__((fastcall, cdecl)); //
>> expected-warning{{calling convention 'fastcall' ignored for this target}}
>> +void rdar8876096foo2(int i, int j) __attribute__((fastcall, stdcall));
>> // expected-warning{{calling convention 'stdcall' ignored for this target}}
>> expected-warning {{calling convention 'fastcall' ignored for this target}}
>> +void rdar8876096foo3(int i, int j) __attribute__((fastcall,
>> regparm(2))); // expected-warning {{calling convention 'fastcall' ignored
>> for this target}}
>> +void rdar8876096foo4(int i, int j) __attribute__((stdcall, cdecl)); //
>> expected-warning{{calling convention 'stdcall' ignored for this target}}
>> +void rdar8876096foo5(int i, int j) __attribute__((stdcall, fastcall));
>> // expected-warning{{calling convention 'stdcall' ignored for this target}}
>> expected-warning {{calling convention 'fastcall' ignored for this target}}
>> +void rdar8876096foo6(int i, int j) __attribute__((cdecl, fastcall)); //
>> expected-warning {{calling convention 'fastcall' ignored for this target}}
>> +void rdar8876096foo7(int i, int j) __attribute__((cdecl, stdcall)); //
>> expected-warning{{calling convention 'stdcall' ignored for this target}}
>> +void rdar8876096foo8(int i, int j) __attribute__((regparm(2),
>> fastcall)); // expected-warning {{calling convention 'fastcall' ignored for
>> this target}}
>>
>> Modified: cfe/trunk/test/Sema/stdcall-fastcall.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/stdcall-fastcall.c?rev=165015&r1=165014&r2=165015&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Sema/stdcall-fastcall.c (original)
>> +++ cfe/trunk/test/Sema/stdcall-fastcall.c Tue Oct  2 09:26:08 2012
>> @@ -1,4 +1,3 @@
>> -// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-pc-linux-gnu %s
>>  // RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-darwin10 %s
>>
>>  // CC qualifier can be applied only to functions
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
>
> --
> Alexander Kornienko | Software Engineer | alexfh at google.com | +49 151 221
> 77 957
> Google Germany GmbH | Dienerstr. 12 | 80331 München
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121004/0e2d79b0/attachment.html>


More information about the cfe-commits mailing list