llvm-6502/lib/Transforms
Matt Wala 1849093f7b [Scalarizer] Fix potential for stale data in Scattered across invocations
Summary:
Scalarizer has two data structures that hold information about changes
to the function, Gathered and Scattered. These are cleared in finish()
at the end of runOnFunction() if finish() detects any changes to the
function. 

However, finish() was checking for changes by only checking if
Gathered was non-empty. The function visitStore() only modifies
Scattered without touching Gathered. As a result, Scattered could have
ended up having stale data if Scalarizer only scalarized store
instructions. Since the data in Scattered is used during the execution
of the pass, this introduced dangling pointer errors. 

The fix is to check whether both Scattered and Gathered are empty
before deciding what to do in finish().

Reviewers: srhines

Reviewed By: srhines

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D10422

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239644 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-12 22:49:11 +00:00
..
Hello [CMake] Add LLVM_LINK_COMPONENTS to loadable modules, LLVMHello and BugpointPasses, on Win32. 2014-07-13 13:36:48 +00:00
InstCombine [InstCombine, InstSimplify] Move xforms from Combine to Simplify 2015-06-06 22:40:21 +00:00
Instrumentation [ASan] format AddressSanitizer.cpp with clang-format -style=Google, NFC 2015-06-12 11:27:06 +00:00
IPO LowerBitSets: Give names to aliases of unnamed bitset element objects. 2015-06-12 03:25:05 +00:00
ObjCARC [PM/AA] Start refactoring AliasAnalysis to remove the analysis group and 2015-06-04 02:03:15 +00:00
Scalar [Scalarizer] Fix potential for stale data in Scattered across invocations 2015-06-12 22:49:11 +00:00
Utils [LoopUnroll] Use IRBuilder to create branch instructions. 2015-06-11 18:25:44 +00:00
Vectorize [LoopVectorize] Revert the enabling of interleaved memory access in Loop Vectorizor, which was wrongly committed in r239514. 2015-06-11 09:18:07 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile