mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-26 14:58:59 -04:00

This mirror's Dan's patch for llvm-gcc in r97989, and fixes the miscompilation in PR6525. There is some contention over whether this is the right thing to do, but it is the conservative answer and demonstrably fixes a miscompilation. llvm-svn: 101877
21 lines
660 B
C
21 lines
660 B
C
// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s
|
|
// RUN: grep 'declare i32 @f0() readnone$' %t
|
|
// RUN: grep 'declare i32 @f1() readonly$' %t
|
|
// RUN: grep 'declare void @f2(.* sret)$' %t
|
|
// RUN: grep 'declare void @f3(.* sret)$' %t
|
|
// RUN: grep 'declare void @f4(.* byval)$' %t
|
|
// RUN: grep 'declare void @f5(.* byval)$' %t
|
|
// PR3835
|
|
|
|
typedef int T0;
|
|
typedef struct { int a[16]; } T1;
|
|
|
|
T0 __attribute__((const)) f0(void);
|
|
T0 __attribute__((pure)) f1(void);
|
|
T1 __attribute__((const)) f2(void);
|
|
T1 __attribute__((pure)) f3(void);
|
|
void __attribute__((const)) f4(T1 a);
|
|
void __attribute__((pure)) f5(T1 a);
|
|
|
|
void *ps[] = { f0, f1, f2, f3, f4, f5 };
|