<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/99275>99275</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Clang] PR https://github.com/llvm/llvm-project/pull/80801 cause CUDA 9.2 thrust library compile error
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          yihanwg
      </td>
    </tr>
</table>

<pre>
    https://github.com/llvm/llvm-project/pull/80801 cause CUDA 9.2 thrust library compile error.

```
cuda-9.2/include/thrust/system/cuda/detail/cub/block/../iterator/../thread/thread_store.cuh:351:56: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
  351 | IterateThreadStore<0, VOLATILE_MULTIPLE>::template Dereference(
      | ^
```
```
/**
 * ThreadStore definition for STORE_VOLATILE modifier on non-primitive pointer types
 */
template <typename T>
__device__ __forceinline__ void ThreadStoreVolatilePtr(
    T *ptr,
    T                           val,
 Int2Type<false>             /*is_primitive*/)
{
    // Create a temporary using shuffle-words, then store using volatile-words
    typedef typename UnitWord<T>::VolatileWord  VolatileWord;  
    typedef typename UnitWord<T>::ShuffleWord   ShuffleWord;

    const int VOLATILE_MULTIPLE = sizeof(T) / sizeof(VolatileWord);
    const int SHUFFLE_MULTIPLE  = sizeof(T) / sizeof(ShuffleWord);
    
 VolatileWord words[VOLATILE_MULTIPLE];

    #pragma unroll
    for (int i = 0; i < SHUFFLE_MULTIPLE; ++i)
 reinterpret_cast<ShuffleWord*>(words)[i] = reinterpret_cast<ShuffleWord*>(&val)[i];

    IterateThreadStore<0, VOLATILE_MULTIPLE>::template Dereference(
 reinterpret_cast<volatile VolatileWord*>(ptr),
 words);
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vl2P4jYU_TWXlytQYhMgDzzwFXWkqXa1w-w-IpPcgLvGjmyHXfrrKxsIMDNVu1LVKJrx9cfxOcf3xgjn5E4TTSGbQ7bsidbvjZ2e5F7oH7ve1lSn6d77xgGfASuAFTvp9-12UJoDsEKp4_Vfv7HmDyo9sKJplQJWTJJJkmIpWke4eF3OMB8w9HvbOo9Kbq2wJyzNoZGKkKw1dgDJEpLZ5e8oubwxLNtK9PMBA1ZIXaq2ImDFGQxY4U7OU2ASpgErKvJCqhhvgRVbZcrvwIrBICz3ZIU39hr7vSVRdY2N88bSoGz3wGc8S4HPshHw2ZliaAj0dGiU8ITC7toD6aDHeZQO6WdDpacKRe3JokAtDoSNpVr-pAq3J_R7uq3_TqcfxlYI2bz_7SCdk3rXv472hd31A3A_gt36v_-AbHm2BZFnKcJ4gU9RFq2jiJegAfgiAbbAr5-eZ-un59Xm99fn9dPn5xXwVThOPut4LMlSTZZ0ScAmV-jwBGjIVh-eydsw5McsvOf1wGZ4RwcrqqWWXhqNtbH4sv70ZbW5ksODqWQtyaLRqI3uN1YepJdHwsZIHcz0p4bcDTtsF4NOBfBFmBMtXweRcXizqegoS9pscLOpjS1JaiV1iI9GVvcUvxolvFT02dsHG9ZhvyZ0Lu47__45CnWb-6Q9W5-acB61UI6Arx4mn32TbtNJvqhj-cXY8fy27bkKcWEpJmDMJRNrqQ3Zg27f1rWifsgrF47f70ljTOrLjONF5WVKhxy8q6jGzsNXLf03Yyvgi3WXM1ePwgDifQR8jvircC9numc0vIuAz-8_BwGxNDpUmfbvUxqBL9HJP8nUwCZrYHkw6tbzwJPlHfgj7Mtvr0Vxj_pPsPd836BeWg92nQ3P5u8rMlt-oBcYb6zYHQS22hqlbiOhfoBNAmcZOSbB_NBcvBMRRoDNgc1ll1FoKdZUY8lvSuE88MWDllk4IDa5JFEO2VxCtoxb_culwEaxCq5rP9D333-yPuB2zfbHVL2yjEWd32q1E9yxHS_ffOx61ZRXOc9Fj6bpmKVpPhmleW8_TSdVNS4ZG9JonOc0GrOkEuO0GgmRl3UqenLKEjZMxuk4GQ05zweTnG0pS4ZsyybE0xKGCR2EVINwoQ6M3fWkcy1N85yNs54SW1Iu3tSMlUroHTAWLm07jRfwtt05GCbhxnA3BC-9itf7Iq7Ilvj5C_5vV3qvterXf0BE1Q5YcRZ-nLK_AgAA__8xbaOY">