<!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
OjI3IFBNLCB2aWEgbGx2bS1kZXYgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNp
dGUiPjxkaXY+PHAgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNz
PSJmb250IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBz
ZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xh
c3M9ImNvbG91ciIgc3R5bGU9ImNvbG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJm
b250IiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9
InNpemUiIHN0eWxlPSJmb250LXNpemU6MTFwdCI+UmVnYXJkaW5nIGZsYWdzLCBJIHdhcyBqdXN0
IHRoaW5raW5nIHRoYXQgbWF5YmUgd2Ugc2hvdWxkIGludmVudCBhIG5ldyBESVN1YnByb2dyYW1G
bGFncyB0eXBlLiZuYnNwOyBESVN1YnByb2dyYW0gYWxyZWFkeSBoYXMgYSBmZXcgYml0ZmllbGRz
IGZvciBzdWJwcm9ncmFtLXNwZWNpZmljCiB0aGluZ3MsIEZvcnRyYW4gd2lsbCB3YW50IDMgbW9y
ZSwgYW5kIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGZpbGwgdXAgdGhlIGdlbmVyaWMgRElGbGFncyB3
aXRoIG1vcmUgYml0cyB0aGF0IGFyZSB1c2VkIGluIG9ubHkgb25lIGNsYXNzLjwvc3Bhbj48L3Nw
YW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyPjwvcD48cCBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu
IDAuMDAwMXB0OyI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtU
aW1lcyBOZXcgUm9tYW4mcXVvdDssIHNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9ImZv
bnQtc2l6ZToxMnB0Ij48c3BhbiBjbGFzcz0iY29sb3VyIiBzdHlsZT0iY29sb3I6cmdiKDMxLCA3
MywgMTI1KSI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLCBz
YW5zLXNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0Ij4mbmJz
cDs8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjxicj48L3A+PHAgc3R5bGU9Im1h
cmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNzPSJmb250IiBzdHlsZT0iZm9udC1m
YW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBzZXJpZiI+PHNwYW4gY2xhc3M9InNp
emUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xhc3M9ImNvbG91ciIgc3R5bGU9ImNv
bG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJmb250IiBzdHlsZT0iZm9udC1mYW1p
bHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNp
emU6MTFwdCI+SSBhZ3JlZSB0aGF0IHRoZSBhcnJheSBzdHVmZiBuZWVkcyB0byBiZSBkZXNpZ25l
ZCB3aXRoIGFuIGV5ZSB0byBoYW5kbGluZyBob3cgb3RoZXIgbGFuZ3VhZ2VzIGRvIGFycmF5cywg
YW5kIGxldmVyYWdlIHRoZSBjb21tb24gYXNwZWN0cy4mbmJzcDsgU2V2ZXJhbCBsYW5ndWFnZXMK
IGhhdmUgcnVudGltZS1zaXplZCBhcnJheXMgYW5kIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGFuZGxl
IHRoZW0gYWxsIHRoZSBzYW1lIHdheS48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFu
Pjxicj48L3A+PHAgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsiPjxzcGFuIGNsYXNz
PSJmb250IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCBz
ZXJpZiI+PHNwYW4gY2xhc3M9InNpemUiIHN0eWxlPSJmb250LXNpemU6MTJwdCI+PHNwYW4gY2xh
c3M9ImNvbG91ciIgc3R5bGU9ImNvbG9yOnJnYigzMSwgNzMsIDEyNSkiPjxzcGFuIGNsYXNzPSJm
b250IiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSwgc2Fucy1zZXJpZiI+PHNwYW4gY2xhc3M9
InNpemUiIHN0eWxlPSJmb250LXNpemU6MTFwdCI+SG93ZXZlciB0aGUgQ0hBUkFDVEVSIHR5cGUg
cHJvYmFibHkgZG9lcyB3YW50IHRvIGJlIERXX1RBR19zdHJpbmdfdHlwZSByYXRoZXIgdGhhbiBh
biBhcnJheS4gQ09CT0wgYWxzbyBoYXMgc3RyaW5ncyBhcyBhIGZ1bmRhbWVudGFsIHR5cGUuPC9z
cGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46
IDBpbiAwaW4gMC4wMDAxcHQ7Ij48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oywgc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBz
dHlsZT0iZm9udC1zaXplOjEycHQiPjxzcGFuIGNsYXNzPSJjb2xvdXIiIHN0eWxlPSJjb2xvcjpy
Z2IoMzEsIDczLCAxMjUpIj48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OkNh
bGlicmksIHNhbnMtc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1zaXplOjEx
cHQiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyPjwvcD48cCBz
dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxl
PSJmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssIHNlcmlmIj48c3BhbiBj
bGFzcz0ic2l6ZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB0Ij48c3BhbiBjbGFzcz0iY29sb3VyIiBz
dHlsZT0iY29sb3I6cmdiKDMxLCA3MywgMTI1KSI+PHNwYW4gY2xhc3M9ImZvbnQiIHN0eWxlPSJm
b250LWZhbWlseTpDYWxpYnJpLCBzYW5zLXNlcmlmIj48c3BhbiBjbGFzcz0ic2l6ZSIgc3R5bGU9
ImZvbnQtc2l6ZToxMXB0Ij5JIGd1ZXNzIHdlJ2xsIGhhdmUgdG8gbGVhcm4gd2hhdCBhbGwgdGhl
IEZvcnRyYW4gYXJyYXkgc3R1ZmYgYWN0dWFsbHkgbWVhbnMgbm934oCmPC9zcGFuPjwvc3Bhbj48
L3NwYW4+PC9zcGFuPjwvc3Bhbj48YnI+PC9wPjxwIHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w
MDAxcHQ7Ij48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1RpbWVz
IE5ldyBSb21hbiZxdW90Oywgc2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1z
aXplOjEycHQiPjxzcGFuIGNsYXNzPSJjb2xvdXIiIHN0eWxlPSJjb2xvcjpyZ2IoMzEsIDczLCAx
MjUpIj48c3BhbiBjbGFzcz0iZm9udCIgc3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmksIHNhbnMt
c2VyaWYiPjxzcGFuIGNsYXNzPSJzaXplIiBzdHlsZT0iZm9udC1zaXplOjExcHQiPi0tcGF1bHI8
L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjxicj48L3A+PC9kaXY+PC9ibG9ja3F1
b3RlPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9
ImZvbnQtZmFtaWx5OkFyaWFsOyI+TWF5IEkgc3VnZ2VzdCBjaGFuZ2luZyBESUZsYWdzIGZyb20g
YW4gZW51bSB0byBhIHNpbXBsZSBpbnQgd3JhcHBlciB0aGF0IGJlaGF2ZXMgbGlrZSBhbiBlbnVt
IGFuZCBjYW4gaW1wbGVtZW50IGVuY29kaW5nPyBJdCBpcyB0cnVlIHRoYXQgYSBsb3Qgb2YgdGhl
IGJpdHMgYXJlIGxlZnQgdW51c2VkIGluIGV2ZXJ5ZGF5IGNvbnRleHRzLCBzbyB0aGVyZSBpcyBh
IHBvc3NpYmlsaXR5IHRvIGVuY29kZSBtb3JlIGRhdGEuPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZv
bnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFs
OyI+Rm9yIGV4YW1wbGU6PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+
PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyI+YGBgPC9kaXY+PGRpdiBz
dHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij5ESUZsYWdzIGZsYWdzID0gRm9ydHJhblJlbGF0ZWRD
b250ZXh0Ozxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbDsiPmZsYWdzIHw9
IFNvbWVGb3J0cmFuRmxhZzs8YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7
Ij5gYGA8YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij48YnI+PC9kaXY+
PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWw7Ij5TbyB3aGVuIGFzc2lnbmluZyBgU29tZUZv
cnRyYW5GbGFnYCB0aGUgYXBwcm9wcmlhdGUgRElGbGFncyBvcGVyYXRvciB3b3VsZCBhc3NlcnQg
dGhhdCB0aGUgc3BlY2lmaWMgY29udGV4dCBpcyBhY3RpdmUuPGJyPjwvZGl2PjxkaXYgc3R5bGU9
ImZvbnQtZmFtaWx5OkFyaWFsOyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkFy
aWFsOyI+SSd2ZSBoYWQgdG8gZXh0ZW5kIERJRmxhZ3MgYW5kIGluIHRoZSBlbmQsIGp1c3QgaW5j
cmVhc2VkIHRoZSBzaXplIG9mIHRoZSBkYXRhIHR5cGUsIGJ1dCBhIGNsZXZlciBlbmNvZGluZyB3
aXRoIGEgbm9uLWNsZXZlciBpbnRlcmZhY2Ugd291bGQgaGFsdmUgbWVtb3J5IHVzYWdlLjxicj48
L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbDsiPjxicj48L2Rpdj48ZGl2IGlkPSJz
aWc2NjQzMzcyOCI+PGRpdiBjbGFzcz0ic2lnbmF0dXJlIj4tLTxicj48L2Rpdj48ZGl2IGNsYXNz
PSJzaWduYXR1cmUiPlNvaGFpbCBTb21hbmk8YnI+PC9kaXY+PGRpdiBjbGFzcz0ic2lnbmF0dXJl
Ij5GaXp6IEJ1enogSW5jLjxicj48L2Rpdj48ZGl2IGNsYXNzPSJzaWduYXR1cmUiPkJvb2tpbmcg
c2NoZWR1bGU6Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9zb2hhaWxzb21hbmkueW91Y2FuYm9vay5t
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>