30 lines · c
1// RUN: %clang_cc1 -triple x86_64-windows-gnu -emit-llvm -o - %s \2// RUN: | FileCheck %s --check-prefix=GNU643// RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm -o - %s \4// RUN: | FileCheck %s --check-prefix=MSC645 6typedef int int128_t __attribute__((mode(TI)));7 8int128_t foo(void) { return 0; }9 10// GNU64: define dso_local <2 x i64> @foo()11// MSC64: define dso_local <2 x i64> @foo()12 13int128_t bar(int128_t a, int128_t b) { return a * b; }14 15// GNU64: define dso_local <2 x i64> @bar(ptr dead_on_return noundef %0, ptr dead_on_return noundef %1)16// MSC64: define dso_local <2 x i64> @bar(ptr dead_on_return noundef %0, ptr dead_on_return noundef %1)17 18void vararg(int a, ...) {19 // GNU64-LABEL: define{{.*}} void @vararg20 // MSC64-LABEL: define{{.*}} void @vararg21 __builtin_va_list ap;22 __builtin_va_start(ap, a);23 int128_t i = __builtin_va_arg(ap, int128_t);24 // GNU64: load ptr, ptr25 // GNU64: load i128, ptr26 // MSC64: load ptr, ptr27 // MSC64: load i128, ptr28 __builtin_va_end(ap);29}30