<html><head></head><body><div class="ydpda5bcdbfyahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div dir="ltr" data-setdir="false"><div>Hi Tim,</div><div><br></div><div dir="ltr" data-setdir="false">My mistake not including the llvm-dev, excuse me. <span>affinityElement.__bits[0] worked fine for me, thank you. I am new in using the API for Constants and I am facing the error "<span><span style="color: rgb(212, 212, 212); font-family: Droid Sans Mono, monospace, monospace, Droid Sans Fallback; font-size: 14px; font-style: normal; font-weight: 400; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: pre-wrap; word-spacing: 0px; background-color: rgb(37, 37, 38); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">incomplete type is not allowed</span></span>" on the last last of below code:</span></div><div dir="ltr" data-setdir="false"><div><div style="color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Droid Sans Mono, monospace, monospace, Droid Sans Fallback; font-weight: normal; font-size: 14px; line-height: 19px; white-space: pre-wrap;"><div><span style="color: #d4d4d4;">              Type </span><span style="color: #d4d4d4;">*</span><span style="color: #d4d4d4;"> ET </span><span style="color: #d4d4d4;">=</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">IntegerType::getInt64Ty</span><span style="color: #d4d4d4;">(I.</span><span style="color: #dcdcaa;">getContext</span><span style="color: #d4d4d4;">());</span></div><div><span style="color: #d4d4d4;">              </span><span style="color: #569cd6;">unsigned</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">long</span><span style="color: #d4d4d4;"> size </span><span style="color: #d4d4d4;">=</span><span style="color: #d4d4d4;"> cpuAffinityVector.</span><span style="color: #dcdcaa;">size</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;">              ArrayType </span><span style="color: #d4d4d4;">*</span><span style="color: #d4d4d4;"> AT </span><span style="color: #d4d4d4;">=</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">ArrayType::get</span><span style="color: #d4d4d4;">(ET,size);</span></div></div></div></div><div dir="ltr" data-setdir="false"><span><br></span></div><div dir="ltr" data-setdir="false"><span>Internet gives different solutions for this error but none of them was appropriate for this case.<br></span></div><div dir="ltr" data-setdir="false"><span>Could you please help</span>?</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Regards,</div><div dir="ltr" data-setdir="false">Iulia<br></div><div class="ydpda5bcdbfsignature"><div style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div><br></div><div><br></div><div><br></div><div><br></div></div></div></div>
        <div><br></div><div><br></div>
        
        </div><div id="yahoo_quoted_8200841706" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Tuesday, September 3, 2019, 8:15:26 PM GMT+3, Tim Northover <t.p.northover@gmail.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="yiv3115296490"><div><div><div>Adding llvm-dev back.</div></div><div><br clear="none"><div class="yiv3115296490gmail_quote"><div class="yiv3115296490gmail_attr" dir="ltr">On Tue, 3 Sep 2019 at 18:02, Iulia Stirb <<a rel="nofollow" shape="rect" ymailto="mailto:iulia_s24@yahoo.com" target="_blank" href="mailto:iulia_s24@yahoo.com">iulia_s24@yahoo.com</a>> wrote:</div><blockquote class="yiv3115296490gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="yiv3115296490m_-6073088025054258871ydp9c041acyahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div><div dir="ltr">Thank very much you for your answer. Following the indications in your mail, I obtained one of the 16th elements as below:</div><div dir="ltr"><br clear="none"></div><div dir="ltr"><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Droid Sans Mono, monospace, monospace, Droid Sans Fallback;font-weight:normal;font-size:14px;line-height:19px;white-space:pre-wrap;"><div><span style="color:#d4d4d4;">    </span><span style="color:#569cd6;">static</span><span style="color:#d4d4d4;"> </span><span style="color:#4ec9b0;">cpu_set_t</span><span style="color:#d4d4d4;"> </span><span style="color:#dcdcaa;">getCpuAffinityElement</span><span style="color:#d4d4d4;">(</span><span style="color:#4ec9b0;">cpu_set_t</span><span style="color:#d4d4d4;"> affinity, </span><span style="color:#569cd6;">int</span><span style="color:#d4d4d4;"> index) {</span></div><div><span style="color:#d4d4d4;">      </span><span style="color:#4ec9b0;">cpu_set_t</span><span style="color:#d4d4d4;"> mask;</span></div><div><span style="color:#d4d4d4;">      </span><span style="color:#dcdcaa;">CPU_ZERO</span><span style="color:#d4d4d4;">(</span><span style="color:#d4d4d4;">&</span><span style="color:#d4d4d4;">mask);</span></div><div><span style="color:#d4d4d4;">      </span><span style="color:#c586c0;">for</span><span style="color:#d4d4d4;">(</span><span style="color:#569cd6;">int</span><span style="color:#d4d4d4;"> i </span><span style="color:#d4d4d4;">=</span><span style="color:#d4d4d4;"> index </span><span style="color:#d4d4d4;">*</span><span style="color:#d4d4d4;"> </span><span style="color:#569cd6;">sizeof</span><span style="color:#d4d4d4;">(</span><span style="color:#569cd6;">unsigned</span><span style="color:#d4d4d4;"> </span><span style="color:#569cd6;">long</span><span style="color:#d4d4d4;">); i </span><span style="color:#d4d4d4;"><</span><span style="color:#d4d4d4;"> (index </span><span style="color:#d4d4d4;">+</span><span style="color:#d4d4d4;"> </span><span style="color:#b5cea8;">1</span><span style="color:#d4d4d4;">) </span><span style="color:#d4d4d4;">*</span><span style="color:#d4d4d4;"> </span><span style="color:#569cd6;">sizeof</span><span style="color:#d4d4d4;">(</span><span style="color:#569cd6;">unsigned</span><span style="color:#d4d4d4;"> </span><span style="color:#569cd6;">long</span><span style="color:#d4d4d4;">); i</span><span style="color:#d4d4d4;">++</span><span style="color:#d4d4d4;">) {</span></div><div><span style="color:#d4d4d4;">        </span><span style="color:#dcdcaa;">CPU_SET</span><span style="color:#d4d4d4;">(i,</span><span style="color:#d4d4d4;">&</span><span style="color:#d4d4d4;">mask);</span></div><div><span style="color:#d4d4d4;">      }</span></div><div><span style="color:#d4d4d4;">      </span><span style="color:#dcdcaa;">CPU_AND</span><span style="color:#d4d4d4;">(</span><span style="color:#d4d4d4;">&</span><span style="color:#d4d4d4;">affinity, </span><span style="color:#d4d4d4;">&</span><span style="color:#d4d4d4;">affinity, </span><span style="color:#d4d4d4;">&</span><span style="color:#d4d4d4;">mask);</span></div><div><span style="color:#d4d4d4;">      </span><span style="color:#c586c0;">return</span><span style="color:#d4d4d4;"> affinity;</span></div><div><span style="color:#d4d4d4;">    }</span></div></div></div></div></div></div></div></blockquote><div><br clear="none"></div><div>That looks like a weird function, but it’s just within the realms of plausible so I’ll assume you know what you’re doing. </div><blockquote class="yiv3115296490gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="yiv3115296490m_-6073088025054258871ydp9c041acyahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div><div dir="ltr"><div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Droid Sans Mono, monospace, monospace, Droid Sans Fallback;font-weight:normal;font-size:14px;line-height:19px;white-space:pre-wrap;"><div><span style="color:#d4d4d4;"></span></div></div></div></div></div></div></div></blockquote><div><br clear="none"></div><blockquote class="yiv3115296490gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="yiv3115296490m_-6073088025054258871ydp9c041acyahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div><div dir="ltr">The problem is that the element is of type cpu_set_t and cannot be converted to unsigned long. So, when I try to get the ConstantInt object like below, I get an error saying that I cannot pass a cpu_set_t parameter as second parameter of get method.</div><div style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><span></span><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Droid Sans Mono, monospace, monospace, Droid Sans Fallback;font-weight:normal;font-size:14px;line-height:19px;white-space:pre-wrap;"><div><span style="color:#d4d4d4;">ConstantInt </span><span style="color:#d4d4d4;">*</span><span style="color:#d4d4d4;"> elem </span><span style="color:#d4d4d4;">=</span><span style="color:#d4d4d4;"> </span><span style="color:#dcdcaa;">ConstantInt::get</span><span style="color:#d4d4d4;">(</span><span style="color:#dcdcaa;">Type::getInt64Ty</span><span style="color:#d4d4d4;">(I.</span><span style="color:#dcdcaa;">getContext</span><span style="color:#d4d4d4;">()),affinityElement,</span><span style="color:#569cd6;">false</span><span style="color:#d4d4d4;">);</span></div></div></div></div></div></div></blockquote><div><br clear="none"></div><div>To use a real cpu_set_t from the host as part of a. ConstantInt like that you’ll have to look at its actual definition and access something like affinityElement.__bits[0]. The exact internals may vary with the header you’re using, but you’re fundamentally trying to do something ABI specific so you will have to get your hands dirty.</div><div> </div><blockquote class="yiv3115296490gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="yiv3115296490m_-6073088025054258871ydp9c041acyahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><div><div style="font-family:verdana, helvetica, sans-serif;font-size:10px;"><span></span><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Droid Sans Mono, monospace, monospace, Droid Sans Fallback;font-weight:normal;font-size:14px;line-height:19px;white-space:pre-wrap;"><div><span style="color:#d4d4d4;"></span></div></div><div dir="ltr">What I need is to insert in IR a call that has a cpu_set_t parameter, and the parameter is already set (so I don't need to construct it).</div></div></div></div></div></blockquote><div><br clear="none"></div><div>An alternative might be to pass a pointer to the cpu_set_t you created above into the Module somehow (a global might work). It would sidestep the tricky annoying API for Constants in LLVM, and possibly even be a buffer against the structure changing in future. </div><div class="yiv3115296490yqt0813927799" id="yiv3115296490yqtfd43833"><div><br clear="none"></div><div>Cheers.</div><div><br clear="none"></div><div>Tim.</div></div></div></div></div></div></div>
            </div>
        </div></body></html>