diff options
| author | Enrico Granata <egranata@apple.com> | 2014-12-09 21:41:16 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2014-12-09 21:41:16 +0000 |
| commit | 986fa5f4eb037877fd470770be0a7ca9ebeac9ca (patch) | |
| tree | 576063bc56686401046bf959865b97cee01d2dab /llvm/lib/CodeGen/BranchFolding.cpp | |
| parent | 93e9cf8aa43545d5ebe7ea10642eb19ec458554d (diff) | |
| download | bcm5719-llvm-986fa5f4eb037877fd470770be0a7ca9ebeac9ca.tar.gz bcm5719-llvm-986fa5f4eb037877fd470770be0a7ca9ebeac9ca.zip | |
Extend ValueObject::GetExpressionPath() to do something reasonable for synthetic children
Because of the way they are created, synthetic children cannot (in general) have a sane expression path
A solution to this would be letting the parent front-end generate expression paths for its children
Doing so requires a significant amount of refactoring, and might not always lead to better results (esp. w.r.t. C++ templates)
This commit takes a simpler approach:
- if a synthetic child is of pointer type and it's a target pointer, then emit *((T)value)
- if a synthetic child is a non-pointer, but its location is in the target, then emit *((T*)loadAddr)
- if a synthetic child has a value, emit ((T)value)
- else, don't emit anything
Fixes rdar://18442386
llvm-svn: 223836
Diffstat (limited to 'llvm/lib/CodeGen/BranchFolding.cpp')
0 files changed, 0 insertions, 0 deletions

