without defining them. This should be an error, but I'm paranoid about "uses" that end up not actually requiring a definition. I'll revisit later. Also, teach IR generation to not set internal linkage on variable declarations, just for safety's sake. Doing so produces an invalid module if the variable is not ultimately defined. Also, fix several places in the test suite where we were using internal functions without definitions. llvm-svn: 126016
28 lines
714 B
C
28 lines
714 B
C
// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
|
|
|
|
#define FASTCALL __attribute__((regparm(2)))
|
|
|
|
typedef struct {
|
|
int aaa;
|
|
double bbbb;
|
|
int ccc[200];
|
|
} foo;
|
|
|
|
typedef void (*FType)(int, int) __attribute ((regparm (3), stdcall));
|
|
FType bar;
|
|
|
|
extern void FASTCALL reduced(char b, double c, foo* d, double e, int f);
|
|
|
|
// PR7025
|
|
void FASTCALL f1(int i, int j, int k);
|
|
// CHECK: define void @f1(i32 inreg %i, i32 inreg %j, i32 %k)
|
|
void f1(int i, int j, int k) { }
|
|
|
|
int
|
|
main(void) {
|
|
// CHECK: call void @reduced(i8 signext inreg 0, {{.*}} %struct.foo* inreg null
|
|
reduced(0, 0.0, 0, 0.0, 0);
|
|
// CHECK: call x86_stdcallcc void {{.*}}(i32 inreg 1, i32 inreg 2)
|
|
bar(1,2);
|
|
}
|