<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" 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 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="#0563C1" vlink="#954F72" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">Hi, All developers:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">I have this code. For (*b)[2], It is reasonable that llvm thinks it's unaligned access. and I think the array pointer always points to 4 - byte aligned
 array elements.<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><img width="192" height="82" id="_x56fe__x7247__x0020_1" src="cid:image001.png@01D61C07.2E95DB10"></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">CMD: clang  --target=arm-none-eabi -mcpu=cortex-r52 -mthumb -O0 -emit-llvm -S test.c -o test.ll<o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">LLVM think it’s an align 1 store, I don't think so.<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US"><img width="648" height="227" id="_x56fe__x7247__x0020_2" src="cid:image002.png@01D61C08.6DC76AF0"></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">CMD: llc -mattr=+strict-align test.ll<o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">If the CPU does not support non-aligned access, The access is divided into four one-byte access.<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><img width="228" height="118" id="_x56fe__x7247__x0020_3" src="cid:image003.png@01D61C09.E2D82DB0"></span><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">CMD: llc -mattr=-strict-align test.ll<o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">If the CPU support non-aligned access, It's a normal four-byte access.<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><img width="272" height="66" id="_x56fe__x7247__x0020_5" src="cid:image004.png@01D61C0A.F65032B0"></span><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">But gcc always think it’s an aligned access ,and processed him as a four-byte access. I think this is reasonable.<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">CMD1: arm-none-eabi-gcc -mcpu=cortex-r52 -mthumb  -munaligned-access -O0 -emit-llvm -S test.c -o test.s<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">CMD2: arm-none-eabi-gcc -mcpu=cortex-r52 -mthumb  -mno-unaligned-access -O0 -emit-llvm -S test.c -o test.s<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><img width="235" height="77" id="_x56fe__x7247__x0020_6" src="cid:image005.png@01D61C0B.34493800"></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#666666">Why does LLVM think it's a one-byte-aligned access? I think it makes more sense to access the number of aligned based on the type of the array element
 to which the array pointer points</span><span lang="EN-US"><o:p></o:p></span></b></p>
</div>
</body>
</html>