Go to file
Peter Collingbourne c7d281905b Prevent Constant Folding From Optimizing inrange GEP
This patch does the following things:

1. update SymbolicallyEvaluateGEP so that it bails out if it cannot preserve inrange arribute;
2. update llvm/test/Analysis/ConstantFolding/gep.ll to remove UB in it;
3. remove inaccurate comment above ConstantFoldInstOperandsImpl in llvm/lib/Analysis/ConstantFolding.cpp;
4. add a new regression test that makes sure that no optimizations change an inrange GEP in an unexpected way.

Patch by Zhaomo Yang!

Differential Revision: https://reviews.llvm.org/D51698

llvm-svn: 341888
2018-09-11 01:53:36 +00:00
clang clang-check: rename the local FixItAction 2018-09-10 22:57:26 +00:00
clang-tools-extra Revert "[clang-tidy] Handle unresolved expressions in ExprMutationAnalyzer" 2018-09-10 23:58:04 +00:00
compiler-rt [hwasan] Re-enable print-memory-usage-android test. 2018-09-10 22:22:02 +00:00
debuginfo-tests Revert "(Retry) Add a basic integration test for C++ smart pointers" 2018-08-20 19:53:33 +00:00
libclc amdgcn: Use __constant AS for amdgcn builtins. 2018-08-03 15:14:08 +00:00
libcxx ReleaseNotes: update links to use https 2018-09-10 08:57:12 +00:00
libcxxabi Port my recent changes from LLVM copy of the demangler: 2018-08-24 23:30:26 +00:00
libunwind [CMake] Don't use -rtlib=compiler-rt with -nodefaultlibs. 2018-09-04 20:57:50 +00:00
lld [ELF] Don't emit .relr.dyn section if there are no relocs 2018-09-10 21:54:56 +00:00
lldb Undoing first commit which added a space to a comment 2018-09-10 23:18:32 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm Prevent Constant Folding From Optimizing inrange GEP 2018-09-11 01:53:36 +00:00
openmp [OMPT] Update types according to TR7 2018-09-10 14:34:54 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.