[llvm-dev] ARM: Predicated returns considered analyzable?
Krzysztof Parzyszek via llvm-dev
llvm-dev at lists.llvm.org
Thu Aug 13 05:44:05 PDT 2015
On 8/13/2015 2:46 AM, James Molloy wrote:
>
> I'm not sure what the problem is here. For me, the function name
> "MBB::getFirstTerminator" you quoted implies that there may be more than
> one terminator. So it not returning the last terminator doesn't seem
> surprising at all.
The problem is that the first terminator is followed by a non-terminator.
The code snippet from the first email:
t2CMPri %R1<kill>, 0, pred:14, pred:%noreg, %CPSR<imp-def>
t2CMPri %R0<kill>, 3, pred:1, pred:%CPSR, %CPSR<imp-def>,
%CPSR<imp-use,undef>
(1) %SP<def,tied1> = t2LDMIA_RET %SP<tied0>, pred:8, pred:%CPSR,
%R7<def>, %PC<def>, %SP<imp-use,undef>, %R7<imp-use,undef>,
%PC<imp-use,undef>
(2) tBLXi pred:14, pred:%noreg, <ga:@bar>, <regmask>, %LR<imp-def,dead>,
%SP<imp-use>, %SP<imp-def>, %R0<imp-def,dead>
(3) %SP<def,tied1> = t2LDMIA_RET %SP<tied0>, pred:14, pred:%noreg,
%R7<def>, %PC<def>
(1) is a terminator (predicated), (2) is a non-terminator, (3) is a
terminator again.
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list