LGTM. However, I think we can enhance the test cases a little. 1. Keep the void* test in builtins-arm.c for apcs-gnu ABI. 2. Add the unit test for va_list name mangling.
Sincerely, Logan ps. The attached patch is the revised patch with the updated test cases. On Thu, Sep 20, 2012 at 6:13 AM, Weiming Zhao <[email protected]>wrote: > Ping... > > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted > by > The Linux Foundation >
#include "stdarg.h"
namespace test1 {
void test1(const char *fmt, va_list ap) {
}
}
class Test2 {
public:
void test2(const char *fmt, va_list ap);
};
void Test2::test2(const char *fmt, va_list ap) {
}
// RUN: %clang_cc1 %s -emit-llvm -o - \
// RUN: -triple armv7-unknown-linux \
// RUN: | FileCheck -check-prefix=MANGLE-ARM-AAPCS %s
// CHECK-MANGLE-ARM-AAPCS: @_ZN5test15test1EPKcSt9__va_list
// CHECK-MANGLE-ARM-AAPCS: @_ZN5Test25test2EPKcSt9__va_list
// RUN: %clang_cc1 %s -emit-llvm -o - \
// RUN: -triple armv7-unknown-linux -target-abi apcs-gnu \
// RUN: | FileCheck -check-prefix=MANGLE-ARM-APCS %s
// CHECK-MANGLE-ARM-APCS: @_ZN5test15test1EPKcPv
// CHECK-MANGLE-ARM-APCS: @_ZN5Test25test2EPKcPv
// RUN: %clang_cc1 %s -emit-llvm -o - \
// RUN: -triple mipsel-unknown-linux \
// RUN: | FileCheck -check-prefix=MANGLE-MIPSEL %s
// CHECK-MANGLE-MIPSEL: @_ZN5test15test1EPKcPv
// CHECK-MANGLE-MIPSEL: @_ZN5Test25test2EPKcPv
// RUN: %clang_cc1 %s -emit-llvm -o - \
// RUN: -triple i686-unknown-linux \
// RUN: | FileCheck -check-prefix=MANGLE-X86 %s
// CHECK-MANGLE-X86: @_ZN5test15test1EPKcPc
// CHECK-MANGLE-X86: @_ZN5Test25test2EPKcPc
// RUN: %clang_cc1 %s -emit-llvm -o - \
// RUN: -triple x86_64-unknown-linux \
// RUN: | FileCheck -check-prefix=MANGLE-X86-64 %s
// CHECK-MANGLE-X86-64: @_ZN5test15test1EPKcP13__va_list_tag
// CHECK-MANGLE-X86-64: @_ZN5Test25test2EPKcP13__va_list_tag
// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST0 %s
// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST1 %s
// RUN: %clang_cc1 -triple armv7 -target-abi apcs-gnu \
// RUN: -fsyntax-only -verify -DTEST1 %s
#ifdef TEST0
void __clear_cache(char*, char*);
#endif
#ifdef TEST1
void __clear_cache(void*, void*);
#endif
#if defined(__ARM_PCS) || defined(__ARM_EABI__)
// va_list on ARM AAPCS is struct { void* __ap }.
void test2() {
__builtin_va_list ptr;
ptr.__ap = "x";
*(ptr.__ap) = '0'; // expected-error {{incomplete type 'void' is not assignable}}
}
#else
// va_list on ARM is void*.
void test2() {
__builtin_va_list ptr = "x";
*ptr = '0'; // expected-error {{incomplete type 'void' is not assignable}}
}
#endif
0001-Bug-11709-Change-the-definition-of-va_list-to-meet-A.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
