Skip to content

Commit 07ff001

Browse files
committed
Merge pull request #495 from jeromerobert/develop
Fix a segfault in gemv when MAX_STACK_ALLOC is set
2 parents 63c6fcf + b17ccb4 commit 07ff001

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

interface/gemv.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,9 @@ void CNAME(enum CBLAS_ORDER order,
209209
if (incy < 0) y -= (leny - 1) * incy;
210210

211211
#ifdef MAX_STACK_ALLOC
212-
int stack_alloc_size = m + n;
212+
// make it volatile because some gemv implementation (ex: dgemv_n.S)
213+
// do not restore all register
214+
volatile int stack_alloc_size = m + n;
213215
if(stack_alloc_size < 128)
214216
//dgemv_n.S require a 128 bytes buffer
215217
stack_alloc_size = 128;

interface/ger.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ void CNAME(enum CBLAS_ORDER order,
172172
if (incx < 0) x -= (m - 1) * incx;
173173

174174
#ifdef MAX_STACK_ALLOC
175-
int stack_alloc_size = m;
175+
volatile int stack_alloc_size = m;
176176
if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT))
177177
stack_alloc_size = 0;
178178
FLOAT stack_buffer[stack_alloc_size];

0 commit comments

Comments
 (0)