Greg Clayton ac58361047 Rewrote the initial DW_OP_piece support to be able to support opcodes like:
DW_OP_fbreg(N) DW_OP_piece(4) DW_OP_fbreg(M) DW_OP_piece(8)
DW_OP_fbreg(N) DW_OP_piece(4) DW_OP_piece(8)

The first grabs 4 bytes from FP+N followed by 8 bytes from FP+M, the second grabs 4 bytes from FP+N followed by zero filling 8 bytes which are unavailable. Of course regiters are stuff supported:

DW_OP_reg3 DW_OP_piece(4) DW_OP_reg8 DW_OP_piece(8)

The fix does the following:
1 - don't push the full piece value onto the stack, keep it on the side
2 - fill zeros for DW_OP_piece(N) opcodes that have nothing on the stack (instead of previously consuming the full piece that was pushed onto the stack)
3 - simplify the logic

<rdar://problem/16930524>

llvm-svn: 214415
2014-07-31 18:19:28 +00:00
..
2014-07-01 21:22:11 +00:00
2014-05-02 00:45:31 +00:00
2014-06-27 02:42:12 +00:00
2014-04-04 04:06:10 +00:00
2013-01-25 18:06:21 +00:00
2014-07-08 18:05:41 +00:00
2012-02-24 01:59:29 +00:00
2014-04-02 03:51:35 +00:00
2014-07-01 21:22:11 +00:00
2014-07-01 21:22:11 +00:00
2014-07-01 21:22:11 +00:00
2013-01-25 18:06:21 +00:00
2013-01-25 18:06:21 +00:00
2013-01-25 18:06:21 +00:00
2013-01-25 18:06:21 +00:00