<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi Justin,<br>
      today I followed your suggestion and it work!!<br>
      Many Thanks.<br>
      Manuele<br>
      <br>
      Il 11/01/2013 14:30, Justin Holewinski ha scritto:<br>
    </div>
    <blockquote
cite="mid:CAJgxuaeBhruBGymFDyeBFTGBvwVMZ3BLJexbORwkBhppJZD9dQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">On Fri, Jan 11, 2013 at 8:20 AM, Manuele Conti <span
          dir="ltr"><<a moz-do-not-send="true"
            href="mailto:manuele.conti@sirius-es.it" target="_blank">manuele.conti@sirius-es.it</a>></span>
        wrote:<br>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF">
                <div>Hi Justin,<br>
                  my class is a visitor pattern and I use accept method
                  to go recursive in suboject in my AST.<br>
                  In locals I store AllocaInst pointer.<br>
                    <br>
                  <pre>void *visit(var1_init_decl_c *symbol) {
  llvm::Type *lType;

  varNames.clear();
  varType = "";
  symbol->var1_list->accept(*this); /* get a vector contains variable names */
  symbol->spec_init->accept(*this); /* Store in varType variable list */
  lType = typeOf(varType);
  for (unsigned int i = 0; i < varNames.size(); i++) {
          AllocaInst *alloc = new AllocaInst(lType, varNames[i].c_str(), currentBBlock);
          locals[varNames[i]] = alloc;
  }

  return NULL;
}

Can I load a AllocaInst using CreateLoad instruction?</pre>
                </div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div style="">Yes, your generated alloca is actually
              returning a "pointer of lType" type.  You need to load the
              value to an "lType" type.  If lType is i32, then alloca
              returns an i32*.</div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF">
                <div> Cheers,<br>
                  Manuele<br>
                  <br>
                  Il 11/01/2013 12:56, Justin Holewinski ha scritto:<br>
                </div>
                <div>
                  <div class="h5">
                    <blockquote type="cite">
                      <p dir="ltr">you're not showing enough code.  What
                        does accept() do?</p>
                      <p dir="ltr">Based on your description, I strongly
                        suspect that your alloca and constant are not
                        the same type.  Remember that alloca returns a
                        pointer type that you must load to get at the
                        actual variable.</p>
                      <div class="gmail_quote">On Jan 11, 2013 3:28 AM,
                        "Manuele Conti" <<a moz-do-not-send="true"
                          href="mailto:manuele.conti@sirius-es.it"
                          target="_blank">manuele.conti@sirius-es.it</a>>

                        wrote:<br type="attribution">
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex"> Hi All,<br>
                          I'm writing a code generation with my
                          compiler. I read sever example and
                          documentation but I did understand what I make
                          wrong.<br>
                          What I try to do is a compare a local variable
                          with a constant.<br>
                          But when I create a ICMP instruction I get
                          that instruction are not of same type.<br>
                          I'm using llvm by svn repository updated at
                          two week ago.<br>
                          <br>
                          The code that I try to generation is something
                          like:<br>
                          <br>
                          if varInt = 1 then<br>
                             varInt := 10;<br>
                          end_if;<br>
                          <br>
                          <br>
                          This is my code:<br>
                          <br>
                          void *visit(integer_c *symbol)            {<br>
                                  int64_t value = GET_CVALUE(int64,
                          symbol);<br>
                                  if (typeid(*currentType) ==
                          typeid(get_datatype_info_c::bool_type_name))
                           {<br>
                                    std::cout << "Creating
                          integer: " << value << std::endl;<br>
                                    return (void
                          *)ConstantInt::get(Type::getInt1Ty(getGlobalContext()),
                          value, false);<br>
                                  }<br>
                                  return (void
                          *)ConstantInt::get(Type::getInt16Ty(getGlobalContext()),
                          value, false);<br>
                          }<br>
                          <br>
                          void *visit(symbolic_variable_c *symbol) {<br>
                            std::string varName;<br>
                            AllocaInst *alloc;<br>
                          <br>
                            varName =
                          get_var_name_c::get_name(symbol->var_name)->value;<br>
                            alloc = locals[varName];<br>
                          <br>
                            return (void *)alloc;<br>
                          }<br>
                          <br>
                          void *visit(equ_expression_c *symbol) {<br>
                                  Value *lValue;<br>
                                  Value *rValue;<br>
                          <br>
                                  lValue = (Value
                          *)symbol->l_exp->accept(*this);<br>
                                  rValue = (Value
                          *)symbol->r_exp->accept(*this);<br>
                          <br>
                                  return Builder.CreateICmpEQ (lValue,
                          rValue, "cond");<br>
                          <br>
                          }<br>
                          <br>
                           Cheers,<br>
                          Manuele<br>
                          <br>
                          <br>
                          <br>
                          <br>
_______________________________________________<br>
                          LLVM Developers mailing list<br>
                          <a moz-do-not-send="true"
                            href="mailto:LLVMdev@cs.uiuc.edu"
                            target="_blank">LLVMdev@cs.uiuc.edu</a>    
                              <a moz-do-not-send="true"
                            href="http://llvm.cs.uiuc.edu"
                            target="_blank">http://llvm.cs.uiuc.edu</a><br>
                          <a moz-do-not-send="true"
                            href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
                            target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
                        </blockquote>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </div>
              </div>
              <br>
              _______________________________________________<br>
              LLVM Developers mailing list<br>
              <a moz-do-not-send="true"
                href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>
                      <a moz-do-not-send="true"
                href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
              <a moz-do-not-send="true"
                href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
                target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
              <br>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          <br>
          <div>Thanks,</div>
          <div><br>
          </div>
          <div>Justin Holewinski</div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>