<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    Thank you for replies. I'm using trunk version. I have problem in
    some tests with this behaviour. I also have fix for this problem
    just need an opinion if this should be fixed in clang. I can post
    patch on phabricator if you want to take a look.<br>
    <br>
    Thanks,<br>
    Strahinja<br>
    <br>
    <div class="moz-cite-prefix">On 09.02.2016. 20:32, George Burgess IV
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAKh6zBHjZOk65bVKbsT88kKRmKx+4y7QzCbX=7G6kKSJx1nfNQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi!
        <div><br>
        </div>
        <div>This is an artifact of how LLVM works. Essentially, LLVM
          detects that `var` is unused and deletes it before it tries to
          lower the `llvm.objectsize` (which is what clang lowers
          `__builtin_object_size` to) call to a constant. While this
          isn't ideal, I don't think it realistically a problem, because
          `var` must be otherwise unused for this behavior to occur, and
          the whole purpose of objectsize functions (so far) is to
          insert bounds checks when a variable is used.</div>
        <div><br>
        </div>
        <div>If this quirk is causing real problems for you, please let
          me know and I'll see what I can do about fixing it. :)</div>
        <div><br>
        </div>
        <div>Thanks for pointing this out!</div>
        <div>George</div>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Tue, Feb 9, 2016 at 11:06 AM,
            Xinliang David Li <span dir="ltr"><<a
                moz-do-not-send="true"
                href="mailto:xinliangli@gmail.com" target="_blank">xinliangli@gmail.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div dir="ltr">What version of clang/LLVM are you using?
                George (cc'ed ) has improved __builtin_object_size
                support in Clang recently.<span><font color="#888888">
                    <div><br>
                    </div>
                    <div>David</div>
                  </font></span></div>
              <div>
                <div>
                  <div class="gmail_extra"><br>
                    <div class="gmail_quote">On Tue, Feb 9, 2016 at 6:37
                      AM, Strahinja Petrovic via llvm-dev <span
                        dir="ltr"><<a moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org"
                          target="_blank">llvm-dev@lists.llvm.org</a>></span>
                      wrote:<br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">Hi,<br>
                        <br>
                        I have question about __builtin_object_size
                        behaviour. LLVM for __builtin_object_size
                        function doesn't calculate correct value when
                        pointer is used only in __builtin_object_size
                        function call, and never after that. For this
                        case LLVM as result generates 0 or -1 depends of
                        second argument of __builtin_object_size
                        function. Is this correct behaviour or it should
                        work as gcc (gcc calculates correct value for
                        this case) ?<br>
                        <br>
                        Example for this issue:<br>
                        <br>
                        include <assert.h><br>
                        int main() {<br>
                        struct V { char buf1[10];<br>
                                   int b;<br>
                                   char buf2[10];<br>
                                  } var;<br>
                        <br>
                                  char *p = &var.buf1[1], *q =
                        &var.b;<br>
                                  assert (__builtin_object_size (p, 0)
                        == sizeof (var) - 1);<br>
                                  return 0;<br>
                        }<br>
                        <br>
                        Thanks,<br>
                        Strahinja<br>
                        _______________________________________________<br>
                        LLVM Developers mailing list<br>
                        <a moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org"
                          target="_blank">llvm-dev@lists.llvm.org</a><br>
                        <a moz-do-not-send="true"
                          href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                          rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
                      </blockquote>
                    </div>
                    <br>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>