[flang-commits] [flang] 7ce0c53 - [flang][cuda] Fix return value for CUFSetDefaultStream (#181884)

via flang-commits flang-commits at lists.llvm.org
Tue Feb 17 13:48:34 PST 2026


Author: Valentin Clement (バレンタイン クレメン)
Date: 2026-02-17T13:48:29-08:00
New Revision: 7ce0c532912ebdd2ce8d04914669af9b13444f3f

URL: https://github.com/llvm/llvm-project/commit/7ce0c532912ebdd2ce8d04914669af9b13444f3f
DIFF: https://github.com/llvm/llvm-project/commit/7ce0c532912ebdd2ce8d04914669af9b13444f3f.diff

LOG: [flang][cuda] Fix return value for CUFSetDefaultStream (#181884)

The interface return an integer value but the entry point and lowering
were missing it.

Added: 
    

Modified: 
    flang-rt/lib/cuda/allocator.cpp
    flang/include/flang/Runtime/CUDA/allocator.h
    flang/lib/Optimizer/Builder/CUDAIntrinsicCall.cpp
    flang/test/Lower/CUDA/cuda-default-stream.cuf

Removed: 
    


################################################################################
diff  --git a/flang-rt/lib/cuda/allocator.cpp b/flang-rt/lib/cuda/allocator.cpp
index 795b26b641720..347195926def3 100644
--- a/flang-rt/lib/cuda/allocator.cpp
+++ b/flang-rt/lib/cuda/allocator.cpp
@@ -156,8 +156,9 @@ int RTDECL(CUFSetAssociatedStream)(void *p, cudaStream_t stream) {
   return StatOk;
 }
 
-void RTDECL(CUFSetDefaultStream)(cudaStream_t stream) {
+int RTDECL(CUFSetDefaultStream)(cudaStream_t stream) {
   defaultStream = stream;
+  return StatOk;
 }
 
 cudaStream_t RTDECL(CUFGetDefaultStream)() { return defaultStream; }

diff  --git a/flang/include/flang/Runtime/CUDA/allocator.h b/flang/include/flang/Runtime/CUDA/allocator.h
index d21f7d7c421bb..c45b97a6df4fe 100644
--- a/flang/include/flang/Runtime/CUDA/allocator.h
+++ b/flang/include/flang/Runtime/CUDA/allocator.h
@@ -22,7 +22,7 @@ extern "C" {
 void RTDECL(CUFRegisterAllocator)();
 cudaStream_t RTDECL(CUFGetAssociatedStream)(void *);
 int RTDECL(CUFSetAssociatedStream)(void *, cudaStream_t);
-void RTDECL(CUFSetDefaultStream)(cudaStream_t);
+int RTDECL(CUFSetDefaultStream)(cudaStream_t);
 cudaStream_t RTDECL(CUFGetDefaultStream)();
 }
 

diff  --git a/flang/lib/Optimizer/Builder/CUDAIntrinsicCall.cpp b/flang/lib/Optimizer/Builder/CUDAIntrinsicCall.cpp
index 4986c57048081..bbc353634cd42 100644
--- a/flang/lib/Optimizer/Builder/CUDAIntrinsicCall.cpp
+++ b/flang/lib/Optimizer/Builder/CUDAIntrinsicCall.cpp
@@ -1131,7 +1131,7 @@ fir::ExtendedValue CUDAIntrinsicLibrary::genCUDASetDefaultStream(
   mlir::Value stream = fir::getBase(args[0]);
   mlir::Type i64Ty = builder.getI64Type();
   auto ctx = builder.getContext();
-  mlir::FunctionType ftype = mlir::FunctionType::get(ctx, {i64Ty}, {});
+  mlir::FunctionType ftype = mlir::FunctionType::get(ctx, {i64Ty}, {resTy});
   auto funcOp =
       builder.createFunction(loc, RTNAME_STRING(CUFSetDefaultStream), ftype);
   auto call = fir::CallOp::create(builder, loc, funcOp, {stream});

diff  --git a/flang/test/Lower/CUDA/cuda-default-stream.cuf b/flang/test/Lower/CUDA/cuda-default-stream.cuf
index 59c6bc6b70612..beacb409f44f6 100644
--- a/flang/test/Lower/CUDA/cuda-default-stream.cuf
+++ b/flang/test/Lower/CUDA/cuda-default-stream.cuf
@@ -22,3 +22,19 @@ end subroutine
 ! CHECK: %[[VOIDPTR:.*]] = fir.convert %[[ADDR]] : (!fir.heap<!fir.array<?xi32>>) -> !fir.llvm_ptr<i8>
 ! CHECK: %[[STREAM:.*]] = fir.call @_FortranACUFGetAssociatedStream(%[[VOIDPTR]]) fastmath<contract> : (!fir.llvm_ptr<i8>) -> i64
 ! CHECK: hlfir.assign %[[STREAM]] to %{{.*}}#0 : i64, !fir.ref<i64>
+
+subroutine default_stream
+  use cuda_runtime_api
+  
+  integer(kind=cuda_stream_kind) :: strm, strm2
+  integer :: istat
+  istat = cudaStreamCreate(strm2)
+  istat = cudaforSetDefaultStream(strm2)
+  strm = cudaforGetDefaultStream()
+  istat = cudaStreamSynchronize(cudaforGetDefaultStream())
+end subroutine
+
+! CHECK-LABEL: func.func @_QPdefault_stream()
+! CHECK: %{{.*}} = fir.call @_FortranACUFSetDefaultStream(%{{.*}}) fastmath<contract> : (i64) -> i32
+! CHECK: %{{.*}} = fir.call @_FortranACUFGetDefaultStream() fastmath<contract> : () -> i64
+! CHECK: %{{.*}} = fir.call @_FortranACUFGetDefaultStream() fastmath<contract> : () -> i64


        


More information about the flang-commits mailing list