Index: llvm/trunk/include/llvm/IR/IntrinsicsNVVM.td =================================================================== --- llvm/trunk/include/llvm/IR/IntrinsicsNVVM.td +++ llvm/trunk/include/llvm/IR/IntrinsicsNVVM.td @@ -729,20 +729,16 @@ [IntrReadWriteArgMem, NoCapture<0>]>; // Bar.Sync -// -// TODO: Remove NoDuplicate here after fixing up LLVM to handle convergent -// properly. See discussion in http://reviews.llvm.org/D16941 and -// http://reviews.llvm.org/D12246. def int_cuda_syncthreads : GCCBuiltin<"__syncthreads">, - Intrinsic<[], [], [IntrNoDuplicate, IntrConvergent]>; + Intrinsic<[], [], [IntrConvergent]>; def int_nvvm_barrier0 : GCCBuiltin<"__nvvm_bar0">, - Intrinsic<[], [], [IntrNoDuplicate, IntrConvergent]>; + Intrinsic<[], [], [IntrConvergent]>; def int_nvvm_barrier0_popc : GCCBuiltin<"__nvvm_bar0_popc">, - Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate, IntrConvergent]>; + Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>; def int_nvvm_barrier0_and : GCCBuiltin<"__nvvm_bar0_and">, - Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate, IntrConvergent]>; + Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>; def int_nvvm_barrier0_or : GCCBuiltin<"__nvvm_bar0_or">, - Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate, IntrConvergent]>; + Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>; // Membar def int_nvvm_membar_cta : GCCBuiltin<"__nvvm_membar_cta">, Index: llvm/trunk/test/Feature/intrinsic-noduplicate.ll =================================================================== --- llvm/trunk/test/Feature/intrinsic-noduplicate.ll +++ llvm/trunk/test/Feature/intrinsic-noduplicate.ll @@ -1,9 +1,9 @@ ; RUN: llvm-as < %s | llvm-dis | FileCheck %s -; Make sure LLVM knows about the convergent and noduplicate attributes on the +; Make sure LLVM knows about the convergent attribute on the ; llvm.cuda.syncthreads intrinsic. declare void @llvm.cuda.syncthreads() ; CHECK: declare void @llvm.cuda.syncthreads() #[[ATTRNUM:[0-9]+]] -; CHECK: attributes #[[ATTRNUM]] = { convergent noduplicate nounwind } +; CHECK: attributes #[[ATTRNUM]] = { convergent nounwind }