aboutsummaryrefslogtreecommitdiff
path: root/flang-rt/lib/runtime/findloc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang-rt/lib/runtime/findloc.cpp')
-rw-r--r--flang-rt/lib/runtime/findloc.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/flang-rt/lib/runtime/findloc.cpp b/flang-rt/lib/runtime/findloc.cpp
index 5485f4b..b5031ec 100644
--- a/flang-rt/lib/runtime/findloc.cpp
+++ b/flang-rt/lib/runtime/findloc.cpp
@@ -153,10 +153,13 @@ template <TypeCategory CAT,
class HELPER>
struct NumericFindlocHelper {
template <int KIND> struct Functor {
- RT_API_ATTRS void operator()(TypeCategory targetCat, int targetKind,
- Descriptor &result, const Descriptor &x, const Descriptor &target,
- int kind, int dim, const Descriptor *mask, bool back,
- Terminator &terminator) const {
+ // NVCC inlines more aggressively which causes too many specializations of
+ // this function to be inlined causing compiler timeouts. Set as
+ // noinline to allow compilation to complete.
+ RT_API_ATTRS RT_DEVICE_NOINLINE void operator()(TypeCategory targetCat,
+ int targetKind, Descriptor &result, const Descriptor &x,
+ const Descriptor &target, int kind, int dim, const Descriptor *mask,
+ bool back, Terminator &terminator) const {
switch (targetCat) {
case TypeCategory::Integer:
case TypeCategory::Unsigned: