<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/117618>117618</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Implement inline __security_check_cookie call pass for AArch64 Windows
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
backend:AArch64
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
omjavaid
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
omjavaid
</td>
</tr>
</table>
<pre>
The __security_check_cookie function is inserted into functions to protect against stack buffer overflows. However, the function call incurs overhead as it is a runtime library call, even though it often performs a simple comparison and returns.
#95904 implements a pass for x86/Windows that addresses this by inlining the comparison and deferring the library call to a failure path, which reduces overhead in the common case. This issue proposes to implement similar pass for AArch64 that will inline the comparison of the __security_cookie value directly into the function.
I have conducted a SPEC 2017 benchmark run using clang-cl on Windows AArch64 comparing default behavior (/GS, with security checks enabled) with the security check cookie disabled (/GS-). Benchmarks with /GS- (No GS) typically performed slightly better than their /GS counterparts, but the differences are relatively small in most cases. However benchmarks like 511_povray_r and 641_leela_s demonstrate significantly better performance with /GS-, possibly due to the high frequency of stack operations in their workloads.
I am writing a patch for AArch64 Windows and will compare its impact on SPEC 2017 result and will share with audience here.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VNGu4jYQ_ZrwMrooMXAXHvJw97a0-1JV2pX6iCb2BM_i2KnHhvL3lRO4sFtVQkKJJ-Nzzpw5KMJHT9RWm8-VUmH4jmdkUylVbX5ZYE42xPb-dtEFc22_WYLDQUjnyOl60Jb06aBDODFBn71OHDywAHuhmMgA-xQ-TgRSgDGGRDoBHpG9JJCE-gRd7nuKEM4UexcusoTfw4XOFCv1Dsk-ddfoHLDXOcpUbgkNoACncjFCzD7xQOC4ixivU31pQmfykGzIR1tqQ5_Iw0ixD3Eo3wkPoyPQYRgxsgQP6A1ESjl6WUJVv5WfWu02u3oNMFUP5FP5dkQR6EOEf7avldr_xd6Ei0CymACNiSRC5ZEFuiuwd-zZHydeP91nqKcY74fPHIp2CD2yy5FgxGQLq4tlbSGSyZqe9GB_bz5Mkgkt4Vu5nkUylRmMYYIUHkSKAuwwPti8vUVtX9czjwtPujv29DPw0E9vno0xW-KMLhMYjqSTu85meB7mclb1C1g8l47eZF1cg_D1z1_fQdXNJ-jIaztgPJXJQpaijXbojy_aQfBwF_sO9obLH4uWmF2CjiyeOUSo1LZS-9--TsJxsnDHC5ORBchj58hUajefF6w_1sCNmWGZSj96vlRqt4TPd7AyN5iPStEfAcrFO0jXkcs8r3fzkQFxfLRFoY5SolgEnwbIce4AOmSfKI4YkxT0XU4TOMNlbciX4WMkiOQw8ZncFWSYFwWGIGmywGOpHqIKOD4RbJrmMIZzxOshTj58XTcHR-TwIGBoCF5SxERQEoN71uif4N6IoNf0TLsAHYMId-4KJhPcpm_5aKGP9Hcmr6_FPXMGhJEizjnBd_qXEE8uoJEPq-AAl8ipDLgsXtL2B6_e7VBITJad_UDASYrXUafimoe_IkkxyUe92FI90cBsuGgLliItF6Zdmd1qhwtqm08rtXldbep6YVu9JUXrptt1tFbY1WZLRPqVmk2zpc2GFtyqWq2bRm2a3Wqr6qXuOq27Vd3XqielNtW6pgHZLZ07D8sQj4tpT9um-fTabBcOO3Jyi-nJ-yWj1XulVIf6RN5Uq7ebALf0jm1p9dLlo1Tr2rEkeTRPnBy1Xz4W_7bV_xfsU_r8JxRuQi9ydK1NaZRq9VapfaX2R042d0sdhkrty6W3v5cxhu-kU6X2Ez2p1P7G8NyqfwMAAP__dzxMzA">