<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
I see, thanks. <br><br>I used to work with GCC, which has an SSA-property verification run after each pass. It is surprising to find that LLVM does not check this!<br><br>Jonas<br><br>> Subject: Re: [LLVMdev] subregisters, def-kill<br>> From: stoklund@2pi.dk<br>> Date: Thu, 19 May 2011 15:39:40 -0700<br>> CC: llvmdev@cs.uiuc.edu<br>> To: jnspaulsson@hotmail.com<br>> <br>> <br>> On May 19, 2011, at 7:47 AM, Jonas Paulsson wrote:<br>> <br>> > Hi,<br>> > <br>> > I am combining 16-bit registers to a 32 bit register in order to make a wide store, as per below:<br>> > <br>> > 732 %reg16506:hi16<def,dead> = COPY %reg16445<kill>; <br>> > 740 %reg16506:lo16<def> = COPY %reg16468<kill>;<br>> > 748 %r3<def,dead> = store %reg16506<kill>, %r3, <br>> > <br>> > As you can see, LiveVariables has marked the high part dead, even though the super-register is used at SlotIndex 748. Why is this? Should I add anything special to the basic BuildMI calls?<br>> <br>> That code is not in SSA form as LiveVariables requires, there can only be one def per virtual register. You need to use INSERT_SUBREG or REG_SEQUENCE to do this.<br>> <br>> /jakob<br>> <br>                                      </body>
</html>