<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 06/25/2012 11:14 PM, Duncan Sands wrote:<br>
    <span style="white-space: pre;">> Hi,</span><br>
    Hi Duncan,<br>
    <span style="white-space: pre;">>>> 2. I'm bit concerned
      about code like "+ bool isHipeCall = (F ?<br>
      >>> F->getCallingConv() == CallingConv::HiPE :
      false);"<br>
      >> What are exactly your concerns about it?<br>
      ><br>
      > it surely has to be wrong? I didn't look at the code in
      question, but it<br>
      > sounds like at the point of a call you are looking at details
      of the callee.<br>
      > But it should always be possible to codegen a call correctly
      just from the<br>
      > declared type of the callee, the calling convention, the
      actual arguments and<br>
      > any attributes they may have, without looking at the called
      function. That<br>
      > said, I may have completely misunderstood what this is about
      - but it looks<br>
      > like a big red flag.</span><br>
    Maybe I'm the one that misunderstood what you and Anton 're
    suggesting/concerned about or misconceived the LLVM code, but i
    think that that is exactly what i do: i use this "isHipeCall"
    condition to verify that it is a Hipe CC callee in two different
    circumstances (one to return the correct alignment size in
    "GetAlignedArgumentStackSize" of X86ISelLowering.cpp and one in
    X86RegisterInfo.cpp in order to select the correct TC register class
    for the X86 architecture according to HiPE ABI). Grep-ing into my
    -rather trivial- patch should easily verify my sayings! :-) My
    approach, i.e. just to check the called function's cc for these
    things, is rather similar to GHC's CC (see, for example
    "X86RegisterInfo::getCalleeSavedRegs").<br>
    <br>
    Let me add that Jakob suggested in a previous email that i should
    check for a null-pointer dereference before using "F" in
    "F->getCallingConv()".<br>
    <br>
    <br>
    Best,<br>
    Yiannis<br>
    <br>
    -- <br>
    Yiannis Tsiouris<br>
    Ph.D. student,<br>
    Software Engineering Laboratory,<br>
    National Technical University of Athens<br>
    WWW: <a class="moz-txt-link-freetext" href="http://www.softlab.ntua.gr/~gtsiour">http://www.softlab.ntua.gr/~gtsiour</a><br>
    <br>
  </body>
</html>