Skip to content

Commit

Permalink
Expand -fzero-call-used-regs test to cover gcc 11.
Browse files Browse the repository at this point in the history
It turns out that gcc also has some problems with -fzero-call-used-regs,
at least v11 on mips.  Previously the test in OSSH_CHECK_CFLAG_COMPILE
was sufficient to catch it with "=all", but not sufficient for "=used".
Expand the testcase and include it in the other tests for good measure.
See bz#3629.  ok djm@.
  • Loading branch information
daztucker committed Nov 21, 2023
1 parent ff220d4 commit 99a2df5
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion m4/openssh.m4
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ AC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{
#include <stdlib.h>
#include <stdio.h>
/* Trivial function to help test for -fzero-call-used-regs */
void f(int n) {}
int f(int n) {return rand() % n;}
int main(int argc, char **argv) {
(void)argv;
/* Some math to catch -ftrapv problems in the toolchain */
Expand Down Expand Up @@ -65,6 +65,8 @@ AC_DEFUN([OSSH_CHECK_CFLAG_LINK], [{
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <stdio.h>
/* Trivial function to help test for -fzero-call-used-regs */
int f(int n) {return rand() % n;}
int main(int argc, char **argv) {
(void)argv;
/* Some math to catch -ftrapv problems in the toolchain */
Expand All @@ -73,6 +75,7 @@ int main(int argc, char **argv) {
double m = l / 0.5;
long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
long long int p = n * o;
f(0);
printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
exit(0);
}
Expand Down Expand Up @@ -104,6 +107,8 @@ AC_DEFUN([OSSH_CHECK_LDFLAG_LINK], [{
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <stdio.h>
/* Trivial function to help test for -fzero-call-used-regs */
int f(int n) {return rand() % n;}
int main(int argc, char **argv) {
(void)argv;
/* Some math to catch -ftrapv problems in the toolchain */
Expand All @@ -112,6 +117,7 @@ int main(int argc, char **argv) {
double m = l / 0.5;
long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
long long p = n * o;
f(0);
printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
exit(0);
}
Expand Down

0 comments on commit 99a2df5

Please sign in to comment.