<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    I think people rarely make this mistake because most of the time
    statements are passed by pointers rather than by references.<br>
    <br>
    <div class="moz-cite-prefix">On 3/28/19 12:57 AM, Ulrich Thomas
      Gabor via cfe-dev wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:E86A12DE-3EFD-4F13-B59C-5EC92CCF340A@tu-dortmund.de">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hi<br class="">
      <div><br class="">
        <blockquote type="cite" class="">
          <div class="">Am 27.03.2019 um 23:54 schrieb Ulrich Thomas
            Gabor via cfe-dev <<a
              href="mailto:cfe-dev@lists.llvm.org" class=""
              moz-do-not-send="true">cfe-dev@lists.llvm.org</a>>:</div>
          <br class="Apple-interchange-newline">
          <div class=""><span style="caret-color: rgb(0, 0, 0);
              font-family: Helvetica; font-size: 15px; font-style:
              normal; font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">Hi</span><br style="caret-color:
              rgb(0, 0, 0); font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; text-align:
              start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <blockquote type="cite" style="font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-size-adjust: auto;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">On 27/03/2019 19:10, Ulrich Thomas Gabor via
              cfe-dev wrote:<br class="">
              <blockquote type="cite" class="">Hi<br class="">
                <br class="">
                I recently started to test the current master<br
                  class="">
                <a
href="https://github.com/llvm/llvm-project/commit/e04483ee35ba28c089cbbcec97a96b67ce0a035e"
                  class="" moz-do-not-send="true">https://github.com/llvm/llvm-project/commit/e04483ee35ba28c089cbbcec97a96b67ce0a035e</a><br
                  class="">
                <br class="">
                and found that ifStmt::getThen() now returns the ifStmt
                itself like in<br class="">
                the<br class="">
                following code where both dump calls give the same
                output:<br class="">
                <br class="">
                stmt.dump(dbgs());<br class="">
                const IfStmt ifS = cast<IfStmt>(stmt);<br class="">
                auto x = ifS.getThen();<br class="">
                x->dump(dbgs());<br class="">
                <br class="">
                The AST was generated for a simple program:<br class="">
                <br class="">
                int main(int argc, char ** argv) {<br class="">
                <span class="Apple-tab-span" style="white-space: pre;">       </span>int
                a = 0;<br class="">
                <span class="Apple-tab-span" style="white-space: pre;">       </span>if
                (true) {<br class="">
                <span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span>a
                = 10;<br class="">
                <span class="Apple-tab-span" style="white-space: pre;">       </span>}<br
                  class="">
                <span class="Apple-tab-span" style="white-space: pre;">       </span>return
                a;<br class="">
                }<br class="">
                <br class="">
                <br class="">
                This was not the case for LLVM 8, previously the a=10
                stmt was returned.<br class="">
                Should it be that way or am I doing something wrong?<br
                  class="">
                <br class="">
                Best<br class="">
                Ulrich<br class="">
                <br class="">
              </blockquote>
              <br class="">
              I cannot reproduce this with a recent clang (and if
              IfStmt::getThen<br class="">
              returned the<br class="">
              IfStmt itself, clang would be hopelessly broken). If you
              look at the<br class="">
              implementation of<br class="">
              IfStmt::getThen in AST/Stmt.h you can see that it returns
              the then<br class="">
              statement, which<br class="">
              is stored as a trailing object.<br class="">
            </blockquote>
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">Thank you for checking.</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">I casted wrong...</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class=""> const IfStmt ifS =
              cast<IfStmt>(stmt);</span><br style="caret-color:
              rgb(0, 0, 0); font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; text-align:
              start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">should be</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class=""> const IfStmt &ifS =
              cast<IfStmt>(stmt);</span><br style="caret-color:
              rgb(0, 0, 0); font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; text-align:
              start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">Working now! Thanks!</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
          </div>
        </blockquote>
        <div><br class="">
        </div>
        Thought about it again and was wondering, should copying not
        create either a fully-functional object or be disallowed, i.e.
        have a deleted copy constructor?</div>
      <div><br class="">
      </div>
      <div>Best</div>
      <div>Ulrich</div>
      <div><br class="">
      </div>
      <div><br class="">
        <blockquote type="cite" class="">
          <div class=""><br style="caret-color: rgb(0, 0, 0);
              font-family: Helvetica; font-size: 15px; font-style:
              normal; font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">Best</span><br style="caret-color:
              rgb(0, 0, 0); font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; text-align:
              start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">Ulrich</span><br style="caret-color:
              rgb(0, 0, 0); font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; text-align:
              start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <blockquote type="cite" style="font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-size-adjust: auto;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">Best,<br class="">
              Bruno<br class="">
              <br class="">
              <blockquote type="cite" class="">_______________________________________________<br
                  class="">
                cfe-dev mailing list<br class="">
                <a href="mailto:cfe-dev@lists.llvm.org" class=""
                  moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br
                  class="">
                <a
                  href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                  class="" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
                  class="">
                <br class="">
              </blockquote>
              _______________________________________________<br
                class="">
              cfe-dev mailing list<br class="">
              <a href="mailto:cfe-dev@lists.llvm.org" class=""
                moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br
                class="">
              <a
                href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                class="" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
                class="">
              <br class="">
            </blockquote>
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <br style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">_______________________________________________</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">cfe-dev mailing list</span><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <a href="mailto:cfe-dev@lists.llvm.org" style="font-family:
              Helvetica; font-size: 15px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; orphans: auto; text-align: start;
              text-indent: 0px; text-transform: none; white-space:
              normal; widows: auto; word-spacing: 0px;
              -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
              0px;" class="" moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br
              style="caret-color: rgb(0, 0, 0); font-family: Helvetica;
              font-size: 15px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              text-align: start; text-indent: 0px; text-transform: none;
              white-space: normal; word-spacing: 0px;
              -webkit-text-stroke-width: 0px; text-decoration: none;"
              class="">
            <a
              href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
              style="font-family: Helvetica; font-size: 15px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-size-adjust: auto;
              -webkit-text-stroke-width: 0px;" class=""
              moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a></div>
        </blockquote>
      </div>
      <br class="">
      <div class="">
        --<br class="">
        Ulrich Thomas Gabor, M.Sc.<br class="">
        Technische Universität Dortmund<br class="">
        Informatik, Lehrstuhl 12<br class="">
        Otto-Hahn-Str. 16, E09<br class="">
        44227 Dortmund, Germany<br class="">
        <br class="">
        Phone:  +49 231 / 755-6263<br class="">
        Fax:    +49 231 / 755-6116<br class="">
        <a href="http://ess.cs.tu-dortmund.de/~ug" class=""
          moz-do-not-send="true">http://ess.cs.tu-dortmund.de/~ug</a>
      </div>
      <br class="">
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>