llvm-project/clang/test/Sema/altivec-init.c
David Tenty 2fe49ea0d0 [clang][PowerPC] Remove remaining Darwin support
POWER Darwin support in the backend has been removed for some time: https://discourse.llvm.org/t/rfc-remove-darwin-support-from-power-backends
but Clang still has the TargetInfo and other remnants lying around.

This patch does some cleanup and removes those and other related frontend support still remaining. We adjust any tests using the triple to either remove
the test if unneeded or switch to another Power triple.

Reviewed By: MaskRay, nemanjai

Differential Revision: https://reviews.llvm.org/D146459
2023-03-28 17:12:49 -04:00

61 lines
1.5 KiB
C

// RUN: %clang_cc1 %s -triple=powerpc-ibm-aix -target-feature +altivec -verify -pedantic -fsyntax-only
typedef int v4 __attribute((vector_size(16)));
typedef short v8 __attribute((vector_size(16)));
v8 foo(void) {
v8 a;
v4 b;
a = (v8){4, 2};
b = (v4)(5, 6, 7, 8, 9); // expected-warning {{excess elements in vector initializer}}
b = (v4)(5, 6, 8, 8.0f);
vector int vi;
vi = (vector int)(1);
vi = (vector int)(1, 2); // expected-error {{number of elements must be either one or match the size of the vector}}
vi = (vector int)(1, 2, 3, 4);
vi = (vector int)(1, 2, 3, 4, 5); // expected-warning {{excess elements in vector initializer}}
vi = (vector int){1};
vi = (vector int){1, 2};
vi = (vector int){1, 2, 3, 4, 5}; // expected-warning {{excess elements in vector initializer}}
vector float vf;
vf = (vector float)(1.0);
return (v8){0, 1, 2, 3, 1, 2, 3, 4};
// FIXME: test that (type)(fn)(args) still works with -maltivec
// FIXME: test that c++ overloaded commas still work -maltivec
}
void __attribute__((__overloadable__)) f(v4 a)
{
}
void __attribute__((__overloadable__)) f(int a)
{
}
void test(void)
{
v4 vGCC;
vector int vAltiVec;
f(vAltiVec);
vGCC = vAltiVec;
int res = vGCC > vAltiVec;
vAltiVec = 0 ? vGCC : vGCC;
}
typedef struct VecMem {
vector signed vec;
} VecMem;
// The following should not assert. See qiongsiwu1's comment here:
// https://reviews.llvm.org/D115670
void test2(void) {
vector signed local_vec = {1, 2, 3, 4};
VecMem VM;
VM.vec = ++local_vec;
}