@@ -213,6 +213,9 @@ SUBROUTINE DORGTSQR_ROW( M, N, MB, NB, A, LDA, T, LDT, WORK,
213213 $ LWORKOPT, NUM_ALL_ROW_BLOCKS, JB_T, IB, IMB,
214214 $ KB, KB_LAST, KNB, MB1
215215* ..
216+ * .. Local Arrays ..
217+ DOUBLE PRECISION DUMMY( 1 , 1 )
218+ * ..
216219* .. External Subroutines ..
217220 EXTERNAL DLARFB_GETT, DLASET, XERBLA
218221* ..
@@ -353,9 +356,21 @@ SUBROUTINE DORGTSQR_ROW( M, N, MB, NB, A, LDA, T, LDT, WORK,
353356*
354357 KNB = MIN ( NBLOCAL, N - KB + 1 )
355358*
356- CALL DLARFB_GETT( ' N' , MB1- KB- KNB+1 , N- KB+1 , KNB,
357- $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
358- $ A( KB+ KNB, KB), LDA, WORK, KNB )
359+ IF ( MB1- KB- KNB+1.EQ .0 ) THEN
360+ *
361+ * In SLARFB_GETT parameters, when M=0, then the matrix B
362+ * does not exist, hence we need to pass a dummy array
363+ * reference DUMMY(1,1) to B with LDDUMMY=1.
364+ *
365+ CALL DLARFB_GETT( ' N' , 0 , N- KB+1 , KNB,
366+ $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
367+ $ DUMMY( 1 , 1 ), 1 , WORK, KNB )
368+ ELSE
369+ CALL DLARFB_GETT( ' N' , MB1- KB- KNB+1 , N- KB+1 , KNB,
370+ $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
371+ $ A( KB+ KNB, KB), LDA, WORK, KNB )
372+
373+ END IF
359374*
360375 END DO
361376*
0 commit comments