<div dir="ltr">Samuel, <div><br></div><div>I hope <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10844&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ZDCF9x8A1pK3oHPKuTwcP31D4GPGwTkY8Ut3hYQACcE&s=2xRQy6ORUlioUWnZNpsEdv7SDmHo8UXvafzmTTbFuEA&e=">http://reviews.llvm.org/D10844</a> fixes the issue on your end. LMK if it doesn't. </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 29, 2015 at 9:17 PM, Samuel Antao <span dir="ltr"><<a href="mailto:sfantao@us.ibm.com" target="_blank">sfantao@us.ibm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi jingyue,<br>
<br>
I got a regression caused by this patch. What I see is that %SP is still used if references to automatic vars (alloca) are passed to functions but %SP is no longer initialized to anything.<br>
<br>
I have this (broken) code being now generated:<br>
<br>
.visible .entry __omptgt__0_db262_31_(<br>
.param .u64 __omptgt__0_db262_31__param_0,<br>
.param .u64 __omptgt__0_db262_31__param_1,<br>
.param .u64 __omptgt__0_db262_31__param_2,<br>
.param .u64 __omptgt__0_db262_31__param_3,<br>
.param .u64 __omptgt__0_db262_31__param_4<br>
)<br>
{<br>
.local .align 8 .b8 __local_depot0[56];<br>
.reg .b64 %SP;<br>
.reg .b64 %SPL;<br>
.reg .pred %p<18>;<br>
.reg .s32 %r<31>;<br>
.reg .s64 %rd<30>;<br>
<br>
mov.u64 %SPL, __local_depot0;<br>
...<br>
add.u64 %rd14, %SP, 36;<br>
// Callseq Start 1<br>
{<br>
.reg .b32 temp_param_reg;<br>
// <end>}<br>
.param .b64 param0;<br>
st.param.b64 [param0+0], %rd12;<br>
.param .b32 param1;<br>
st.param.b32 [param1+0], %r6;<br>
.param .b32 param2;<br>
st.param.b32 [param2+0], %r18;<br>
.param .b64 param3;<br>
st.param.b64 [param3+0], %rd13;<br>
.param .b64 param4;<br>
st.param.b64 [param4+0], %rd10;<br>
.param .b64 param5;<br>
st.param.b64 [param5+0], %rd8;<br>
.param .b64 param6;<br>
st.param.b64 [param6+0], %rd14;<br>
.param .b32 param7;<br>
st.param.b32 [param7+0], %r10;<br>
.param .b32 param8;<br>
st.param.b32 [param8+0], %r11;<br>
call.uni<br>
__kmpc_for_static_init_4,<br>
(<br>
param0,<br>
param1,<br>
param2,<br>
param3,<br>
param4,<br>
param5,<br>
param6,<br>
param7,<br>
param8<br>
);<br>
<br>
`%rd14` is computed from %SP but %SP never gets initialized. Before I used to have:<br>
<br>
.visible .entry __omptgt__0_db262_31_(<br>
.param .u64 __omptgt__0_db262_31__param_0,<br>
.param .u64 __omptgt__0_db262_31__param_1,<br>
.param .u64 __omptgt__0_db262_31__param_2,<br>
.param .u64 __omptgt__0_db262_31__param_3,<br>
.param .u64 __omptgt__0_db262_31__param_4<br>
)<br>
{<br>
.local .align 8 .b8 __local_depot0[56];<br>
.reg .b64 %SP;<br>
.reg .b64 %SPL;<br>
.reg .pred %p<18>;<br>
.reg .s32 %r<31>;<br>
.reg .s64 %rd<31>;<br>
<br>
mov.u64 %rd30, __local_depot0;<br>
cvta.local.u64 %SP, %rd30;<br>
<br>
`%SP` is initialized properly (and `%SPL` is not used at all) so the references are properly generated. I suspect that the changes in this patch have to be reflected in other pieces of the backend. What do you think is the best way to tackle the problem?<br>
<br>
Thanks,<br>
Samuel<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10549&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ZDCF9x8A1pK3oHPKuTwcP31D4GPGwTkY8Ut3hYQACcE&s=8cqi7qvRJIvGM9JxuT9vzupYNHlw8y4PjSyINpi95IU&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D10549</a><br>
<br>
EMAIL PREFERENCES<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_settings_panel_emailpreferences_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=ZDCF9x8A1pK3oHPKuTwcP31D4GPGwTkY8Ut3hYQACcE&s=RN9nNOWXIKqGVSH4ryu3v2ReSTJ1sftoZxyovxIrVpk&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br>
<br>
<br>
</div></div></blockquote></div><br></div>