<p dir="ltr">On 5 Apr 2014 19:55, "Johannes Pfau" <<a href="mailto:nospam@example.com">nospam@example.com</a>> wrote:<br>
><br>
> Am Sun, 6 Apr 2014 02:51:28 +1000<br>
> schrieb "Daniel Murphy" <<a href="mailto:yebbliesnospam@gmail.com">yebbliesnospam@gmail.com</a>>:<br>
><br>
> > "Johannes Pfau"  wrote in message<br>
> > news:lhp8h4$2j38$1@digitalmars.com...<br>
> ><br>
> > > But we'd want this to work/inline nevertheless, right?:<br>
> > > ------------<br>
> > > void test(const(char)[] a)<br>
> > > {<br>
> > > }<br>
> > ><br>
> > > char[] abc;<br>
> > > test(abc);<br>
> > > ------------<br>
> > ><br>
> > > Then we still need to tell GCC that const(char)[] is a variant of<br>
> > > char[] or it won't inline.<br>
> ><br>
> > Can you just strip all const/immutable/etc when the type is passed to<br>
> > the backend?<br>
> ><br>
><br>
> This would impact debug info which is also emitted by the backend. GCC<br>
> supports 'variants' of types which means only different qualifiers but<br>
> the same apart from type qualifiers. We just need to set the variant<br>
> information correctly (e.g. const(char)[] should be recognized as a<br>
> variant of char[])</p>
<p dir="ltr">Right, and not having const applied to the type means that gcc might miss an optimisation opportunity.</p>
<p dir="ltr">In this case however I think that parameters declared in should not be mapped to C-style 'const'.  The 'in' keyword is close, but something other.</p>