aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Basic/VirtualFileSystemTest.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-05-10 16:50:30 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-05-10 16:50:30 +0000
commita356bb7fa46dc3f62c1136a186dd690f0f0cff6c (patch)
treeb7a1911143f5cdc9696619dfc01b0b89b9152c3b /clang/unittests/Basic/VirtualFileSystemTest.cpp
parentbbac890b532499c8e5b4f5c587ecc7667ddc8293 (diff)
downloadllvm-a356bb7fa46dc3f62c1136a186dd690f0f0cff6c.zip
llvm-a356bb7fa46dc3f62c1136a186dd690f0f0cff6c.tar.gz
llvm-a356bb7fa46dc3f62c1136a186dd690f0f0cff6c.tar.bz2
[ScheduleDAG] Make sure to process all def operands before any use operands
An example from Hexagon where things went wrong: %R0<def> = L2_loadrigp <ga:@fp04> ; load function address J2_callr %R0<kill>, ..., %R0<imp-def> ; call *R0, return value in R0 ScheduleDAGInstrs::buildSchedGraph would visit all instructions going backwards, and in each instruction it would visit all operands in their order on the operand list. In the case of this call, it visited the use of R0 first, then removed it from the set Uses after it visited the def. This caused the DAG to be missing the data dependence edge on R0 between the load and the call. Differential Revision: http://reviews.llvm.org/D20102 llvm-svn: 269076
Diffstat (limited to 'clang/unittests/Basic/VirtualFileSystemTest.cpp')
0 files changed, 0 insertions, 0 deletions