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

Attachment: 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

Reply via email to