I ran a number of tests against this patch on non-ARM platforms and noticed something weird. The default_speculation_safe_load seems to have a logic twist. When cmpptr is greater or equal to the upper_bound the call is considered in-range.

In: gcc/targhooks.c
[..]
      do_compare_rtx_and_jump (cmpptr, upper_bound, GEU, true, ptr_mode,
                               NULL, NULL, inrange_label,
                               profile_probability::never ());
[..]

I am pretty certain that this is supposed to be LTU instead.
The code is the same for default_speculation_safe_load() in the V2 of the patch.

--
Bj\366rn Weber

Reply via email to