 
     if (traits.flags & (GHOST_SPMV_SHIFT|GHOST_SPMV_VSHIFT)) {
         GHOST_PERFWARNING_LOG("Shift will not be applied on-the-fly!");
-        dt minusshift[rhs->traits.ncols];
+        vector<dt> minusshift(rhs->traits.ncols);
         ghost_lidx col;
         if (traits.flags & GHOST_SPMV_SHIFT) {
             for (col=0; col<rhs->traits.ncols; col++) {

#include <complex>
#include <cuda_runtime.h>
#include <cusparse_v2.h>

typedef cusparseStatus_t (*cusparse_sell1_spmv_kernel_t) (cusparseHandle_t handle, cusparseOperation_t transA, 
        int m, int n, int nnz, const void           *alpha, 

                minusshift[col] = (dt)-1.*(*(dt *)&scale)*(((dt *)shift)[col]);
            }
        }
        ghost_vaxpy(lhs,rhs,minusshift.data());
    }
    
    if (traits.flags & GHOST_SPMV_DOT) {
