Files
archived-llvm/test/CodeGen/ARM
Peter Smith 944e6c56f7 [ARM] Account for implicit IT when calculating inline asm size
When deciding if it is safe to optimize a conditional branch to a CBZ or
CBNZ the offsets of the BasicBlocks from the start of the function are
estimated. For inline assembly the generic getInlineAsmLength() function is
used to get a worst case estimate of the inline assembly by multiplying the
number of instructions by the max instruction size of 4 bytes. This
unfortunately doesn't take into account the generation of Thumb implicit IT
instructions. In edge cases such as when all the instructions in the block
are 4-bytes in size and there is an implicit IT then the size is
underestimated. This can cause an out of range CBZ or CBNZ to be generated.

The patch takes a conservative approach and assumes that every instruction
in the inline assembly block may have an implicit IT.

Fixes pr31805

Differential Revision: https://reviews.llvm.org/D52834



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343960 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-08 09:38:28 +00:00
..
2016-01-26 00:03:25 +00:00
2017-08-01 22:20:49 +00:00
2014-04-03 17:35:22 +00:00
2018-09-26 10:56:00 +00:00
2018-09-26 10:56:00 +00:00
2017-08-28 20:20:47 +00:00
2018-07-04 13:28:39 +00:00
2017-04-07 22:01:23 +00:00
2017-04-07 22:01:23 +00:00
2016-06-16 16:09:53 +00:00
2016-01-28 18:59:04 +00:00
2017-08-01 22:20:49 +00:00
2017-08-01 22:20:49 +00:00
2014-08-26 12:47:26 +00:00
2014-01-29 11:50:56 +00:00
2014-01-29 11:50:56 +00:00
2015-10-26 20:49:49 +00:00
2016-06-20 17:45:33 +00:00
2018-07-04 13:28:39 +00:00
2016-12-27 18:35:19 +00:00
2016-01-26 00:03:25 +00:00
2016-04-08 18:15:37 +00:00
2014-04-25 17:51:25 +00:00
2018-06-21 14:53:06 +00:00
2014-04-03 17:35:22 +00:00
2014-12-04 19:34:50 +00:00
2016-06-16 16:09:53 +00:00
2016-03-31 19:42:04 +00:00
2017-11-28 01:17:52 +00:00
2017-12-11 12:13:45 +00:00
2017-12-11 12:13:45 +00:00
2017-12-11 12:13:45 +00:00
2018-03-07 09:10:44 +00:00
2018-09-26 10:56:00 +00:00
2014-04-03 17:35:22 +00:00
2014-04-03 17:35:22 +00:00
2015-01-19 15:16:06 +00:00
2017-08-28 20:20:47 +00:00
2014-04-23 01:09:29 +00:00
2017-08-01 22:20:49 +00:00
2017-08-01 22:20:49 +00:00
2016-12-27 18:35:19 +00:00
2016-12-27 18:35:19 +00:00
2015-08-13 17:28:16 +00:00