Files
clang-p2996/clang/test/CodeGen/SystemZ/vec-abi-gnuattr-24.c
Jonas Paulsson 481bb44baa [SystemZ] Emit a .gnu_attribute for an externally visible vector abi.
On SystemZ, the vector ABI changes depending on the presence of hardware
vector support. Therefore, each binary compiled with a visible vector ABI
(e.g. one that calls an external function with a vector argument) should be
marked with a .gnu_attribute describing this.

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D105067
2022-12-06 12:53:40 -06:00

38 lines
910 B
C

// RUN: %clang_cc1 -triple s390x-ibm-linux -emit-llvm -fzvector -o - %s 2>&1 \
// RUN: | FileCheck %s
//
// Test that the "s390x-visible-vector-ABI" module flag is not emitted.
// Use of va_arg with a scalar type.
#include <stdarg.h>
int fun0(va_list vl) {
return va_arg(vl, int);
}
typedef __attribute__((vector_size(16))) int v4i32;
// Declaring unused global function with vector argument and return values;
v4i32 globfun(v4i32 Arg);
// Declaring global scalar variable used below.
int GlobVal;
// Declaring extern global scalar variable used below.
extern int GlobExtVar;
// Local vector variable used below.
static v4i32 Var;
// Local function with vector argument and return values;
static v4i32 foo(v4i32 Arg) {
Var = Var + Arg;
return Var;
}
int fun1() {
v4i32 V = {1, 2, 3, 4};
return foo(V)[0] + GlobVal + GlobExtVar;
}
//CHECK-NOT: !{i32 2, !"s390x-visible-vector-ABI", i32 1}