<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.m-3754417401934795702font
        {mso-style-name:m_-3754417401934795702font;}
span.m-3754417401934795702size
        {mso-style-name:m_-3754417401934795702size;}
span.m-3754417401934795702colour
        {mso-style-name:m_-3754417401934795702colour;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle26
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Sohail,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for your thoughts.  You can find the patch here, and I believe it is rather close to what you suggest.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a href="https://reviews.llvm.org/D54043">https://reviews.llvm.org/D54043</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">--<o:p></o:p></p>
<p class="MsoNormal">Eric<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">From: <strong><span style="font-family:"Calibri",sans-serif">Sohail Somani (Fizz Buzz Inc.) via llvm-dev</span></strong> <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>><br>
Date: Thu, Nov 1, 2018 at 3:35 PM<br>
Subject: Re: [llvm-dev] RFC: Adding debug information to LLVM to support Fortran<br>
To: <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>><o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<div>
<p style="margin:1.2em!important">On Thu, Nov 1, 2018, at 6:27 PM, via llvm-dev wrote:<o:p></o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p style="margin:0in;margin-bottom:.0001pt;margin:1.2em!important"><span class="m-3754417401934795702size"><span style="color:#1F497D">Regarding flags, I was just thinking that maybe we should invent a new DISubprogramFlags type.  DISubprogram already has a
 few bitfields for subprogram-specific things, Fortran will want 3 more, and there's no reason to fill up the generic DIFlags with more bits that are used in only one class.</span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D"> </span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D">I agree that the array stuff needs to be designed with an eye to handling how other languages do arrays, and leverage the common aspects.  Several
 languages have runtime-sized arrays and it would be nice to handle them all the same way.</span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D">However the CHARACTER type probably does want to be DW_TAG_string_type rather than an array. COBOL also has strings as a fundamental type.</span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D"> </span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D">I guess we'll have to learn what all the Fortran array stuff actually means now…</span></span><o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><span class="m-3754417401934795702size"><span style="color:#1F497D">--paulr</span></span><o:p></o:p></p>
</div>
</blockquote>
</div>
<p style="margin:1.2em!important">May I suggest changing DIFlags from an enum to a simple int wrapper that behaves like an enum and can implement encoding? It is true that a lot of the bits are left unused in everyday contexts, so there is a possibility to
 encode more data.<o:p></o:p></p>
<p style="margin:1.2em!important">For example:<o:p></o:p></p>
<pre style="mso-margin-top-alt:0in;margin-right:1.8pt;margin-bottom:0in;margin-left:1.8pt;margin-bottom:.0001pt;line-height:14.4pt"><code><span style="font-size:9.5pt;font-family:Consolas;border:solid #CCCCCC 1.0pt;padding:6.0pt;background:#F8F8F8">DIFlags flags = FortranRelatedContext;<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:1.8pt;margin-bottom:0in;margin-left:1.8pt;margin-bottom:.0001pt;line-height:14.4pt"><code><span style="font-size:9.5pt;font-family:Consolas;border:solid #CCCCCC 1.0pt;padding:6.0pt;background:#F8F8F8">flags |= SomeFortranFlag;<o:p></o:p></span></code></pre>
<p style="margin:1.2em!important">So when assigning <code><span style="font-size:9.5pt;font-family:Consolas;border:solid #EAEAEA 1.0pt;padding:0in;background:#F8F8F8">SomeFortranFlag</span></code> the appropriate DIFlags operator would assert that the specific
 context is active.<o:p></o:p></p>
<p style="margin:1.2em!important">I’ve had to extend DIFlags and in the end, just increased the size of the data type, but a clever encoding with a non-clever interface would halve memory usage currently used for DIFlags in my circumstance.<o:p></o:p></p>
<p style="margin:1.2em!important">—<br>
Sohail Somani<br>
Fizz Buzz Inc.<br>
Booking schedule: <a href="https://sohailsomani.youcanbook.me" target="_blank">https://sohailsomani.youcanbook.me</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</div>
</div>
<div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
</div>
<div>
<p class="MsoNormal">This email message is for the sole use of the intended recipient(s) and may contain confidential information.  Any unauthorized review, use, disclosure or distribution is prohibited.  If you are not the intended recipient, please contact
 the sender by reply email and destroy all copies of the original message. <o:p></o:p></p>
</div>
<div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
</div>
</div>
</body>
</html>