[Attributor] Add convergent abstract attribute
authorIshaan Gandhi <ishaangandhi@gmail.com>
Tue, 21 Mar 2023 05:31:39 +0000 (22:31 -0700)
committerJohannes Doerfert <johannes@jdoerfert.de>
Tue, 21 Mar 2023 05:33:50 +0000 (22:33 -0700)
commitaead502b111fd2473b526fd2690315a110617d97
treec2ab0404c110e6acc3dd88af15b60d7e5ee0531c
parent37f3e53c5be9f61c75394ce0558f54e67647de00
[Attributor] Add convergent abstract attribute

This patch adds the AANonConvergent abstract attribute. It removes the
convergent attribute from functions that only call non-convergent
functions.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D143228
llvm/include/llvm/Transforms/IPO/Attributor.h
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/lib/Transforms/IPO/AttributorAttributes.cpp
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
llvm/test/Transforms/Attributor/convergent.ll [new file with mode: 0644]
llvm/test/Transforms/OpenMP/always_inline_device.ll
llvm/test/Transforms/OpenMP/custom_state_machines.ll
llvm/test/Transforms/OpenMP/custom_state_machines_pre_lto.ll
llvm/test/Transforms/OpenMP/spmdization.ll
llvm/test/Transforms/OpenMP/spmdization_guarding_two_reaching_kernels.ll
llvm/test/Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll