A line in gfunc_call in arm-gen.c is referencing vfpr unconditionally. Yet, this function is only available when TCC_ARM_VFP is set. While this code is only triggered when TCC_ARM_VFP, it fails at compile time. This commit fix the problem.
Unified · Split
| @@ -1053,10 +1053,12 @@ void gfunc_call(int nb_args) · 1052 unmodified lines | |||
| 1053 | for(i = 0; i < keep; i++) { | 1053 | for(i = 0; i < keep; i++) { |
| 1054 | vrotb(keep); | 1054 | vrotb(keep); |
| 1055 | gv(regmask(plan2[i])); | 1055 | gv(regmask(plan2[i])); |
| 1056 | #ifdef TCC_ARM_HARDFLOAT | ||
| 1056 | /* arg is in s(2d+1): plan2[i]<plan2[i+1] => alignment occured (ex f,d,f) */ | 1057 | /* arg is in s(2d+1): plan2[i]<plan2[i+1] => alignment occured (ex f,d,f) */ |
| 1057 | if (i < keep - 1 && is_float(vtop->type.t) && (plan2[i] <= plan2[i + 1])) { | 1058 | if (i < keep - 1 && is_float(vtop->type.t) && (plan2[i] <= plan2[i + 1])) { |
| 1058 | o(0xEEF00A40|(vfpr(plan2[i])<<12)|vfpr(plan2[i])); | 1059 | o(0xEEF00A40|(vfpr(plan2[i])<<12)|vfpr(plan2[i])); |
| 1059 | } | 1060 | } |
| 1061 | #endif | ||
| 1060 | } | 1062 | } |
| 1061 | save_regs(keep); /* save used temporary registers */ | 1063 | save_regs(keep); /* save used temporary registers */ |
| 1062 | keep++; | 1064 | keep++; |