<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div class="markdown-here-wrapper" defang_data-md-url="www.fastmail.com" style="" defang_markdown-here-wrapper-content-modified="true"><p style="margin: 0px 0px 1.2em !important;">On Thu, Nov 1, 2018, at 6:27 PM, via llvm-dev wrote:</p>
<p style="margin: 0px 0px 1.2em !important;"></p><div class="markdown-here-exclude"><p></p><blockquote type="cite"><div><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt">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></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt"> </span></span></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt">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></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt">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></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt"> </span></span></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt">I guess we'll have to learn what all the Fortran array stuff actually means now…</span></span></span></span></span><br></p><p style="margin: 0in 0in 0.0001pt;"><span class="font" style="font-family:"Times New Roman", serif"><span class="size" style="font-size:12pt"><span class="colour" style="color:rgb(31, 73, 125)"><span class="font" style="font-family:Calibri, sans-serif"><span class="size" style="font-size:11pt">--paulr</span></span></span></span></span><br></p></div>
</blockquote><p></p></div>
<p style="margin: 0px 0px 1.2em !important;"></p>
<p style="margin: 0px 0px 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.</p>
<p style="margin: 0px 0px 1.2em !important;">For example:</p>
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">DIFlags flags = FortranRelatedContext;
flags |= SomeFortranFlag;
</code></pre><p style="margin: 0px 0px 1.2em !important;">So when assigning <code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;">SomeFortranFlag</code> the appropriate DIFlags operator would assert that the specific context is active.</p>
<p style="margin: 0px 0px 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.</p>
<p style="margin: 0px 0px 1.2em !important;">—<br>Sohail Somani<br>Fizz Buzz Inc.<br>Booking schedule: <a href="https://sohailsomani.youcanbook.me">https://sohailsomani.youcanbook.me</a></p>
<div title="MDH:PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij5PbiBUaHUsIE5vdiAxLCAyMDE4LCBhdCA2&#x0a;OjI3IFBNLCB2aWEgbGx2bS1kZXYgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNp&#x0a;dGUiPjxkaXY+PHAgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNz&#x0a;PSJmb250IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBz&#x0a;ZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xh&#x0a;c3M9ImNvbG91ciIgc3R5bGU9ImNvbG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJm&#x0a;b250IiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9&#x0a;InNpemUiIHN0eWxlPSJmb250LXNpemU6MTFwdCI+UmVnYXJkaW5nIGZsYWdzLCBJIHdhcyBqdXN0&#x0a;IHRoaW5raW5nIHRoYXQgbWF5YmUgd2Ugc2hvdWxkIGludmVudCBhIG5ldyBESVN1YnByb2dyYW1G&#x0a;bGFncyB0eXBlLiZuYnNwOyBESVN1YnByb2dyYW0gYWxyZWFkeSBoYXMgYSBmZXcgYml0ZmllbGRz&#x0a;IGZvciBzdWJwcm9ncmFtLXNwZWNpZmljCiB0aGluZ3MsIEZvcnRyYW4gd2lsbCB3YW50IDMgbW9y&#x0a;ZSwgYW5kIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGZpbGwgdXAgdGhlIGdlbmVyaWMgRElGbGFncyB3&#x0a;aXRoIG1vcmUgYml0cyB0aGF0IGFyZSB1c2VkIGluIG9ubHkgb25lIGNsYXNzLjwvc3Bhbj48L3Nw&#x0a;YW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyPjwvcD48cCBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu&#x0a;IDAuMDAwMXB0OyI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtU&#x0a;aW1lcyBOZXcgUm9tYW4mcXVvdDssIHNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9ImZv&#x0a;bnQtc2l6ZToxMnB0Ij48c3BhbiBjbGFzcz0iY29sb3VyIiBzdHlsZT0iY29sb3I6cmdiKDMxLCA3&#x0a;MywgMTI1KSI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLCBz&#x0a;YW5zLXNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0Ij4mbmJz&#x0a;cDs8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjxicj48L3A+PHAgc3R5bGU9Im1h&#x0a;cmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNzPSJmb250IiBzdHlsZT0iZm9udC1m&#x0a;YW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBzZXJpZiI+PHNwYW4gY2xhc3M9InNp&#x0a;emUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xhc3M9ImNvbG91ciIgc3R5bGU9ImNv&#x0a;bG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJmb250IiBzdHlsZT0iZm9udC1mYW1p&#x0a;bHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNp&#x0a;emU6MTFwdCI+SSBhZ3JlZSB0aGF0IHRoZSBhcnJheSBzdHVmZiBuZWVkcyB0byBiZSBkZXNpZ25l&#x0a;ZCB3aXRoIGFuIGV5ZSB0byBoYW5kbGluZyBob3cgb3RoZXIgbGFuZ3VhZ2VzIGRvIGFycmF5cywg&#x0a;YW5kIGxldmVyYWdlIHRoZSBjb21tb24gYXNwZWN0cy4mbmJzcDsgU2V2ZXJhbCBsYW5ndWFnZXMK&#x0a;IGhhdmUgcnVudGltZS1zaXplZCBhcnJheXMgYW5kIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGFuZGxl&#x0a;IHRoZW0gYWxsIHRoZSBzYW1lIHdheS48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFu&#x0a;Pjxicj48L3A+PHAgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNz&#x0a;PSJmb250IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBz&#x0a;ZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xh&#x0a;c3M9ImNvbG91ciIgc3R5bGU9ImNvbG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJm&#x0a;b250IiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9&#x0a;InNpemUiIHN0eWxlPSJmb250LXNpemU6MTFwdCI+SG93ZXZlciB0aGUgQ0hBUkFDVEVSIHR5cGUg&#x0a;cHJvYmFibHkgZG9lcyB3YW50IHRvIGJlIERXX1RBR19zdHJpbmdfdHlwZSByYXRoZXIgdGhhbiBh&#x0a;biBhcnJheS4gQ09CT0wgYWxzbyBoYXMgc3RyaW5ncyBhcyBhIGZ1bmRhbWVudGFsIHR5cGUuPC9z&#x0a;cGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46&#x0a;IDBpbiAwaW4gMC4wMDAxcHQ7Ij48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5&#x0a;OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oywgc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBz&#x0a;dHlsZT0iZm9udC1zaXplOjEycHQiPjxzcGFuIGNsYXNzPSJjb2xvdXIiIHN0eWxlPSJjb2xvcjpy&#x0a;Z2IoMzEsIDczLCAxMjUpIj48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OkNh&#x0a;bGlicmksIHNhbnMtc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1zaXplOjEx&#x0a;cHQiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyPjwvcD48cCBz&#x0a;dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxl&#x0a;PSJmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssIHNlcmlmIj48c3BhbiBj&#x0a;bGFzcz0ic2l6ZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB0Ij48c3BhbiBjbGFzcz0iY29sb3VyIiBz&#x0a;dHlsZT0iY29sb3I6cmdiKDMxLCA3MywgMTI1KSI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJm&#x0a;b250LWZhbWlseTpDYWxpYnJpLCBzYW5zLXNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9&#x0a;ImZvbnQtc2l6ZToxMXB0Ij5JIGd1ZXNzIHdlJ2xsIGhhdmUgdG8gbGVhcm4gd2hhdCBhbGwgdGhl&#x0a;IEZvcnRyYW4gYXJyYXkgc3R1ZmYgYWN0dWFsbHkgbWVhbnMgbm934oCmPC9zcGFuPjwvc3Bhbj48&#x0a;L3NwYW4+PC9zcGFuPjwvc3Bhbj48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w&#x0a;MDAxcHQ7Ij48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1RpbWVz&#x0a;IE5ldyBSb21hbiZxdW90Oywgc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1z&#x0a;aXplOjEycHQiPjxzcGFuIGNsYXNzPSJjb2xvdXIiIHN0eWxlPSJjb2xvcjpyZ2IoMzEsIDczLCAx&#x0a;MjUpIj48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmksIHNhbnMt&#x0a;c2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1zaXplOjExcHQiPi0tcGF1bHI8&#x0a;L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjxicj48L3A+PC9kaXY+PC9ibG9ja3F1&#x0a;b3RlPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9&#x0a;ImZvbnQtZmFtaWx5OkFyaWFsOyI+TWF5IEkgc3VnZ2VzdCBjaGFuZ2luZyBESUZsYWdzIGZyb20g&#x0a;YW4gZW51bSB0byBhIHNpbXBsZSBpbnQgd3JhcHBlciB0aGF0IGJlaGF2ZXMgbGlrZSBhbiBlbnVt&#x0a;IGFuZCBjYW4gaW1wbGVtZW50IGVuY29kaW5nPyBJdCBpcyB0cnVlIHRoYXQgYSBsb3Qgb2YgdGhl&#x0a;IGJpdHMgYXJlIGxlZnQgdW51c2VkIGluIGV2ZXJ5ZGF5IGNvbnRleHRzLCBzbyB0aGVyZSBpcyBh&#x0a;IHBvc3NpYmlsaXR5IHRvIGVuY29kZSBtb3JlIGRhdGEuPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZv&#x0a;bnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFs&#x0a;OyI+Rm9yIGV4YW1wbGU6PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+&#x0a;PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+YGBgPC9kaXY+PGRpdiBz&#x0a;dHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij5ESUZsYWdzIGZsYWdzID0gRm9ydHJhblJlbGF0ZWRD&#x0a;b250ZXh0Ozxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbDsiPmZsYWdzIHw9&#x0a;IFNvbWVGb3J0cmFuRmxhZzs8YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7&#x0a;Ij5gYGA8YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij48YnI+PC9kaXY+&#x0a;PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij5TbyB3aGVuIGFzc2lnbmluZyBgU29tZUZv&#x0a;cnRyYW5GbGFnYCB0aGUgYXBwcm9wcmlhdGUgRElGbGFncyBvcGVyYXRvciB3b3VsZCBhc3NlcnQg&#x0a;dGhhdCB0aGUgc3BlY2lmaWMgY29udGV4dCBpcyBhY3RpdmUuPGJyPjwvZGl2PjxkaXYgc3R5bGU9&#x0a;ImZvbnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFy&#x0a;aWFsOyI+SSd2ZSBoYWQgdG8gZXh0ZW5kIERJRmxhZ3MgYW5kIGluIHRoZSBlbmQsIGp1c3QgaW5j&#x0a;cmVhc2VkIHRoZSBzaXplIG9mIHRoZSBkYXRhIHR5cGUsIGJ1dCBhIGNsZXZlciBlbmNvZGluZyB3&#x0a;aXRoIGEgbm9uLWNsZXZlciBpbnRlcmZhY2Ugd291bGQgaGFsdmUgbWVtb3J5IHVzYWdlLjxicj48&#x0a;L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbDsiPjxicj48L2Rpdj48ZGl2IGlkPSJz&#x0a;aWc2NjQzMzcyOCI+PGRpdiBjbGFzcz0ic2lnbmF0dXJlIj4tLTxicj48L2Rpdj48ZGl2IGNsYXNz&#x0a;PSJzaWduYXR1cmUiPlNvaGFpbCBTb21hbmk8YnI+PC9kaXY+PGRpdiBjbGFzcz0ic2lnbmF0dXJl&#x0a;Ij5GaXp6IEJ1enogSW5jLjxicj48L2Rpdj48ZGl2IGNsYXNzPSJzaWduYXR1cmUiPkJvb2tpbmcg&#x0a;c2NoZWR1bGU6Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9zb2hhaWxzb21hbmkueW91Y2FuYm9vay5t&#x0a;ZSI+aHR0cHM6Ly9zb2hhaWxzb21hbmkueW91Y2FuYm9vay5tZTwvYT48L2Rpdj48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
<div style="font-family:Arial;"><br></div>
</body>
</html>