Avoid declaring arrays of size 0 when making large stack allocations.
@@ -51,10 +51,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/* make it volatile because some function (ex: dgemv_n.S) */ \
/* do not restore all register */ \
volatile int stack_alloc_size = SIZE; \
- if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(TYPE)) \
- stack_alloc_size = 0; \
+ if (stack_alloc_size > MAX_STACK_ALLOC / sizeof(TYPE)) stack_alloc_size = 0; \
STACK_ALLOC_PROTECT_SET \
- TYPE stack_buffer[stack_alloc_size] __attribute__((aligned(0x20))); \
+ /* Avoid declaring an array of length 0 */ \
+ TYPE stack_buffer[stack_alloc_size ? stack_alloc_size : 1] \
+ __attribute__((aligned(0x20))); \
BUFFER = stack_alloc_size ? stack_buffer : (TYPE *)blas_memory_alloc(1);
#else
//Original OpenBLAS/GotoBLAS codes.
