Nice, thanks! On 30/06/2014 05:23, Saleem Abdulrasool wrote:
On Sun, Jun 29, 2014 at 6:56 PM, Alp Toker <[email protected] <mailto:[email protected]>> wrote:On 30/06/2014 02:05, Saleem Abdulrasool wrote: Author: compnerd Date: Sun Jun 29 18:05:41 2014 New Revision: 212004 URL: http://llvm.org/viewvc/llvm-project?rev=212004&view=rev Log: Basic: correct the va_list type on Windows on ARM Windows on ARM defines va_list as a typedef for char *. Although the semantics of argument passing for variadic functions matches AAPCS VFP, the wrapped struct __va_list type is unused. This makes the intrinsic definition for va_list match that of Visual Studio. Added: cfe/trunk/test/CodeGenCXX/windows-arm-valist.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=212004&r1=212003&r2=212004&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Sun Jun 29 18:05:41 2014 @@ -4231,6 +4231,9 @@ public: // 31: VFPv3 40: VFPv4 Builder.defineMacro("_M_ARM_FP", "31"); } + BuiltinVaListKind getBuiltinVaListKind() const override { + return TargetInfo::CharPtrBuiltinVaList; + } }; // Windows ARM + Itanium C++ ABI Target Added: cfe/trunk/test/CodeGenCXX/windows-arm-valist.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-arm-valist.cpp?rev=212004&view=auto ============================================================================== --- cfe/trunk/test/CodeGenCXX/windows-arm-valist.cpp (added) +++ cfe/trunk/test/CodeGenCXX/windows-arm-valist.cpp Sun Jun 29 18:05:41 2014 @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -triple thumbv7--windows-msvc -std=c++11 -fsyntax-only -fms-compatibility -x c++ %s This looks like a SemaCXX test to me, not CodeGenCXX. Also add -verify and drop -fms-compatibility -x c++ SVN r212009. Alp. + +#include <stdarg.h> + +template <typename lhs_, typename rhs_> +struct is_same { enum { value = 0 }; }; + +template <typename type_> +struct is_same<type_, type_> { enum { value = 1 }; }; + +void check() { + va_list va; + char *cp; + static_assert(is_same<decltype(va), decltype(cp)>::value, + "type mismatch for va_list"); +} _______________________________________________ cfe-commits mailing list [email protected] <mailto:[email protected]> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits-- http://www.nuanti.comthe browser experts -- Saleem Abdulrasool compnerd (at) compnerd (dot) org
-- http://www.nuanti.com the browser experts _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
