diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-02-23 22:08:50 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-02-23 22:08:50 +0000 |
| commit | 998e49e5c882b5d87f44a2645cde17575b05bb75 (patch) | |
| tree | 71dc2a178021fefa61e0695c1bdcc7e44a0707f0 /llvm/lib/Target/Hexagon/BitTracker.h | |
| parent | d0a9e807f39fdce9e2dc6e24265e7c8188a52aff (diff) | |
| download | bcm5719-llvm-998e49e5c882b5d87f44a2645cde17575b05bb75.tar.gz bcm5719-llvm-998e49e5c882b5d87f44a2645cde17575b05bb75.zip | |
[Hexagon] Allow setting register in BitVal without storing into map
In the bit tracker, references to other bit values in which the register
is 0 are prohibited. This means that generating self-referential register
cells like { w:32 [0-15]:s[0-15] [16-31]:s[15] } is impossible. In order
to get a self-referential cell, it had to be stored into a map and then
reloaded from it. To avoid this step, add a function that will set the
register to a given value without going through the map.
llvm-svn: 296025
Diffstat (limited to 'llvm/lib/Target/Hexagon/BitTracker.h')
| -rw-r--r-- | llvm/lib/Target/Hexagon/BitTracker.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/BitTracker.h b/llvm/lib/Target/Hexagon/BitTracker.h index 48c5f2266ac..a547b34e852 100644 --- a/llvm/lib/Target/Hexagon/BitTracker.h +++ b/llvm/lib/Target/Hexagon/BitTracker.h @@ -283,6 +283,9 @@ struct BitTracker::RegisterCell { return !operator==(RC); } + // Replace the ref-to-reg-0 bit values with the given register. + RegisterCell ®ify(unsigned R); + // Generate a "ref" cell for the corresponding register. In the resulting // cell each bit will be described as being the same as the corresponding // bit in register Reg (i.e. the cell is "defined" by register Reg). |

