summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2019-08-03 23:41:26 +0000
committerYonghong Song <yhs@fb.com>2019-08-03 23:41:26 +0000
commit44b16bd4a5b20ce8b4e9ef56836123a2038f3670 (patch)
treee5a67d676dc8df38e66b489c0f71954243e4444c /llvm/lib/Transforms/Utils/SimplifyCFG.cpp
parent2edeb8a11a0a324f627b8622066b6997e057bd63 (diff)
downloadbcm5719-llvm-44b16bd4a5b20ce8b4e9ef56836123a2038f3670.tar.gz
bcm5719-llvm-44b16bd4a5b20ce8b4e9ef56836123a2038f3670.zip
[Transforms] Do not drop !preserve.access.index metadata
Currently, when a GVN or CSE optimization happens, the llvm.preserve.access.index metadata is dropped. This caused a problem for BPF AbstructMemberOffset phase as it relies on the metadata (debuginfo types). This patch added proper hooks in lib/Transforms to preserve !preserve.access.index metadata. A test case is added to ensure metadata is preserved under CSE. Differential Revision: https://reviews.llvm.org/D65700 llvm-svn: 367769
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/SimplifyCFG.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 63015e69a36..33dbbf91cd6 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1313,7 +1313,8 @@ static bool HoistThenElseCodeToIf(BranchInst *BI,
LLVMContext::MD_dereferenceable,
LLVMContext::MD_dereferenceable_or_null,
LLVMContext::MD_mem_parallel_loop_access,
- LLVMContext::MD_access_group};
+ LLVMContext::MD_access_group,
+ LLVMContext::MD_preserve_access_index};
combineMetadata(I1, I2, KnownIDs, true);
// I1 and I2 are being combined into a single instruction. Its debug
OpenPOWER on IntegriCloud