<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Charles, we have the same conceptual issue with our port of OpenVMS.<br>
<br>
Many of our legacy languages have 32-bit pointers builtin into them
and<br>
OpenVMS itself has many existing 32-bit interfaces but we generate<br>
64-bit code, use ELF-64 containers, etc. We provide dual-sized<br>
pointers in our older C/C++ compilers. For our legacy compilers,
our IR<br>
conversion code simply does a whole bunch of typecasts with the
32-bit<br>
pointers to turn them into 64-bit pointers, etc. We're still not
sure how to<br>
properly describe this with pointer aliasing however.<br>
<br>
For clang (the cfe-dev list would give more info), we've already
found that<br>
clang provides address_space(4) for 32-bits addresses. We're
looking at<br>
leveraging that to provide our dual-sized pointers and add code to
convert<br>
between the two (sign-extend the 32 into a 64-bit pointer and chop
off the<br>
top-half of a 64-bit pointer with an optional warning message - that
is<br>
what we do today on our current Alpha and Itanium systems). That
reminds<br>
me to hop over to cfe-dev and float my issues as well since there
might be<br>
some overlap.<br>
<br>
John<br>
<br>
</body>
</html>