Skip to content

Commit 55d6e6b

Browse files
authored
Merge pull request #5921 from martin-frbg/issue5905
Mark temporaries as volatile to avoid SIGBUS in multithreaded builds with gcc15+ on 32bit FreeBSD/x86
2 parents 43f9441 + bf7f06d commit 55d6e6b

6 files changed

Lines changed: 15 additions & 11 deletions

File tree

Makefile.system

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ HOSTARCH := $(shell uname -m)
1818
ifeq ($(HOSTARCH), amd64)
1919
HOSTARCH=x86_64
2020
endif
21+
ifeq ($(HOSTARCH), i386)
22+
HOSTARCH=x86
23+
override BINARY=32
24+
endif
2125

2226
# Catch conflicting usage of ARCH in some BSD environments
2327
ifeq ($(ARCH), amd64)

driver/level2/tpmv_thread.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171

7272
static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *dummy1, FLOAT *buffer, BLASLONG pos){
7373

74-
FLOAT *a, *x, *y;
74+
volatile FLOAT *a, *x, *y;
7575

7676
BLASLONG incx;
7777
BLASLONG m_from, m_to;

driver/level3/syr2k_kernel.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG k, FLOAT alpha_r,
4747

4848
BLASLONG i, j;
4949
BLASLONG loop;
50-
FLOAT subbuffer[GEMM_UNROLL_MN * GEMM_UNROLL_MN * COMPSIZE];
50+
volatile FLOAT subbuffer[GEMM_UNROLL_MN * GEMM_UNROLL_MN * COMPSIZE];
5151

5252
if (m + offset < 0) {
5353
#ifndef LOWER

kernel/generic/trmm_lncopy_4.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, BLASLONG posX, BLASLON
4444
BLASLONG i, js;
4545
BLASLONG X;
4646

47-
FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48-
FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49-
FLOAT *ao1, *ao2, *ao3, *ao4;
47+
volatile FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48+
volatile FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49+
volatile FLOAT *ao1, *ao2, *ao3, *ao4;
5050

5151
js = (n >> 2);
5252

kernel/generic/trmm_ltcopy_4.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, BLASLONG posX, BLASLON
4444
BLASLONG i, js;
4545
BLASLONG X;
4646

47-
FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48-
FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49-
FLOAT *ao1, *ao2, *ao3, *ao4;
47+
volatile FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48+
volatile FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49+
volatile FLOAT *ao1, *ao2, *ao3, *ao4;
5050

5151
js = (n >> 2);
5252

kernel/generic/trmm_utcopy_4.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, BLASLONG posX, BLASLON
4444
BLASLONG i, js;
4545
BLASLONG X;
4646

47-
FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48-
FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49-
FLOAT *ao1, *ao2, *ao3, *ao4;
47+
volatile FLOAT data01, data02, data03, data04, data05, data06, data07, data08;
48+
volatile FLOAT data09, data10, data11, data12, data13, data14, data15, data16;
49+
volatile FLOAT *ao1, *ao2, *ao3, *ao4;
5050

5151
js = (n >> 2);
5252

0 commit comments

Comments
 (0)