blob: 7257017b5f28d456909961501c78ab560aca9d68 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// 复现:call 返回的 float 被 par-Ocopy 接到 tmp,该 tmp 在高 fp 压力下被 spill,
// rega 在 dopm 中生成 Ocopy(SLOT, FA0) cls=Ks,emit 表查不到匹配 → die。
// 详见 docs/bug-rega-fp-call-return-spill.md。
float h() {
return 0.5;
}
float foo(int n) {
float a = h();
int i = 0;
float r = 0.0;
while (i < n) {
float fi = i * 1.0;
float t00 = fi * 0.10; float t01 = fi * 0.11; float t02 = fi * 0.12;
float t03 = fi * 0.13; float t04 = fi * 0.14; float t05 = fi * 0.15;
float t06 = fi * 0.16; float t07 = fi * 0.17; float t08 = fi * 0.18;
float t09 = fi * 0.19; float t10 = fi * 0.20; float t11 = fi * 0.21;
float t12 = fi * 0.22; float t13 = fi * 0.23; float t14 = fi * 0.24;
float t15 = fi * 0.25; float t16 = fi * 0.26; float t17 = fi * 0.27;
float t18 = fi * 0.28; float t19 = fi * 0.29; float t20 = fi * 0.30;
float t21 = fi * 0.31; float t22 = fi * 0.32; float t23 = fi * 0.33;
float t24 = fi * 0.34; float t25 = fi * 0.35; float t26 = fi * 0.36;
float t27 = fi * 0.37; float t28 = fi * 0.38; float t29 = fi * 0.39;
float t30 = fi * 0.40; float t31 = fi * 0.41; float t32 = fi * 0.42;
r = r + t00 + t01 + t02 + t03 + t04 + t05 + t06 + t07 + t08 + t09
+ t10 + t11 + t12 + t13 + t14 + t15 + t16 + t17 + t18 + t19
+ t20 + t21 + t22 + t23 + t24 + t25 + t26 + t27 + t28 + t29
+ t30 + t31 + t32;
i = i + 1;
}
return a + r;
}
int main() {
putfloat(foo(3));
return 0;
}
|