<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:#606420;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink="#606420">

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I am a bit puzzled by the alignement set on GlobalValues for
which the only differences should be the linkage. I get the same behaviour with
llvm-2.6 or with the svn head, using x86 as the target.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>The following C code can be used to reproduce it:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>short GV[] = { 1,2,3,4,5,6,7,8 };<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>int test(unsigned a)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>  static short internalGV[] = { 1,2,3,4,5,6,7,8};<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>  return internalGV[a]++;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>The IR output from clang looks like:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=SV style='font-size:10.0pt;
font-family:Arial'>@GV = global [8 x i16] [i16 1, i16 2, i16 3, i16 4, i16 5,
i16 6, i16 7, i16 8], align 2<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=SV style='font-size:10.0pt;
font-family:Arial'>@test.internalGV = internal global [8 x i16] [i16 1, i16 2,
i16 3, i16 4, i16 5, i16 6, i16 7, i16 8]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=SV style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Note the alignement specifier for GV, which does not show up
for internalGV. The issue will happen later on, when the backend will choose
some default alignement, which may even depend on the size of the global value
: the size of the data section will depend on the visibility of its data. For
example, running the above example with 16 elements in GV & internalGV will
make a big difference in the x86 .S file : GV will still be 2 bytes aligned,
whereas internalGV will be 16bytes aligned.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I can not see any obvious reason why this could be the
desired behaviour, so I attached a patch to fix this.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=FR style='font-size:10.0pt;
font-family:Arial'>Best regards,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=FR
style='font-size:10.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=FR
style='font-size:10.0pt;font-family:"Courier New"'>Arnaud de Grandmaison <o:p></o:p></span></font></p>

</div>

</body>

</html>