Query: Regarding mtrack-speculation support in gcc latest version

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Mon Jan 6 15:53:00 GMT 2020


On 03/01/2020 13:08, Gaurav Kohli wrote:
> Hi,
> 
> I am trying latest gcc 9.1 version and executing below code with option 
> -mtrack-speculation -march=armv8.5-a
> 
> #include<stdio.h>
> #include<stdlib.h>
> #define limit 10
> int arr[limit] = {0};
> void main() {
> 
> int inp;
> printf("enter inp\n");
> scanf("%d\n",&inp);
> if(inp < limit)
>          printf("val=%d\n",arr[inp]);
> else
>          printf("crossing limit\n");
> return;
> 
> }
> 
> 
> But in disassembly only csel is generating, no csdb is coming:
> 
>   40069c:       9a9fd1ef        csel    x15, x15, xzr, le
>    4006a0:       b9401fe1        ldr     w1, [sp, #28]
>    4006a4:       b0000080        adrp    x0, 411000 
> <__libc_start_main@GLIBC_2.17>
>    4006a8:       91012000        add     x0, x0, #0x48
>    4006ac:       93407c21        sxtw    x1, w1
>    4006b0:       b8617800        ldr     w0, [x0, x1, lsl #2]
>    4006b4:       2a0003e1        mov     w1, w0
>    4006b8:       90000000        adrp    x0, 400000 <_init-0x4a0>
>    4006bc:       911f8000        add     x0, x0, #0x7e0
>    4006c0:       910003ee        mov     x14, sp
>    4006c4:       8a0f01ce        and     x14, x14, x15
>    4006c8:       910001df        mov     sp, x14
>    4006cc:       97ffff99        bl      400530 <printf@plt>
>    4006d0:       f10003ff        cmp     sp, #0x0
>    4006d4:       da9f03ef        csetm   x15, ne  // ne = any
>    4006d8:       1400000b        b       400704 <main+0xb8>
>    4006dc:       9a9fc1ef        csel    x15, x15, xzr, gt
> 
> 
> Can someone please point, when cdsb will come?
> 
> Regards
> Gaurav
> 

As the manual says, -mtrack-speculation must be used in conjunction with 
__builtin_speculation_safe_copy to annotate memory accesses that might 
lead to potentially unsafe speculation.  See the manual for more details.



More information about the Gcc-help mailing list