<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 7, 2015, at 10:01 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com" class="">dblaikie@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Jan 7, 2015 at 9:49 AM, Adrian Prantl <span dir="ltr" class=""><<a href="mailto:aprantl@apple.com" target="_blank" class="">aprantl@apple.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: adrian<br class="">
Date: Wed Jan  7 11:49:30 2015<br class="">
New Revision: 225359<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=225359&view=rev" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=225359&view=rev</a><br class="">
Log:<br class="">
Debug info: pass in the correct size for a pointer to a member function.<br class="">
This corrects a bug I introduced in r224781.<br class="">
<br class="">
Added:<br class="">
    cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp<br class="">
Modified:<br class="">
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br class="">
<br class="">
Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=225359&r1=225358&r2=225359&view=diff" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=225359&r1=225358&r2=225359&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)<br class="">
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Wed Jan  7 11:49:30 2015<br class="">
@@ -1883,7 +1883,7 @@ llvm::DIType CGDebugInfo::CreateType(con<br class="">
   if (!Ty->getPointeeType()->isFunctionType())<br class="">
     return DBuilder.createMemberPointerType(<br class="">
       getOrCreateType(Ty->getPointeeType(), U), ClassType,<br class="">
-      CGM.PointerWidthInBits);<br class="">
+      CGM.getContext().getTypeSize(Ty));<br class="">
<br class="">
   const FunctionProtoType *FPT =<br class="">
       Ty->getPointeeType()->getAs<FunctionProtoType>();<br class="">
@@ -1891,7 +1891,7 @@ llvm::DIType CGDebugInfo::CreateType(con<br class="">
       getOrCreateInstanceMethodType(CGM.getContext().getPointerType(QualType(<br class="">
                                         Ty->getClass(), FPT->getTypeQuals())),<br class="">
                                     FPT, U),<br class="">
-      ClassType, CGM.PointerWidthInBits);<br class="">
+      ClassType, CGM.getContext().getTypeSize(Ty));<br class=""></blockquote><div class=""><br class="">Why two separate code changes? Does the test exercise both?<br class=""></div></div></div></div></div></blockquote><div><br class=""></div><div>The test only tests the member function pointer type. The other change (for data members) is NFC, but determining the size from the type is more elegant than hardcoding it to the target pointer size.</div><div><br class=""></div><div>-- adrian</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 }<br class="">
<br class="">
 llvm::DIType CGDebugInfo::CreateType(const AtomicType *Ty, llvm::DIFile U) {<br class="">
<br class="">
Added: cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp?rev=225359&view=auto" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp?rev=225359&view=auto</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp (added)<br class="">
+++ cfe/trunk/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp Wed Jan  7 11:49:30 2015<br class="">
@@ -0,0 +1,10 @@<br class="">
+// RUN: %clang_cc1 %s -triple x86_64-apple-darwin -g -emit-llvm -o - | FileCheck %s<br class="">
+<br class="">
+struct T {<br class="">
+  int method();<br class="">
+};<br class="">
+<br class="">
+void foo(int (T::*method)()) {}<br class="">
+<br class="">
+// A pointer to a member function is a pair of function- and this-pointer.<br class="">
+// CHECK: [ DW_TAG_ptr_to_member_type ] {{.*}} size 128<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@cs.uiuc.edu" class="">cfe-commits@cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br class="">
</blockquote></div><br class=""></div></div>
</div></blockquote></div><br class=""></body></html>