<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hi<br>
<br>
I'm working on the XCore target where the target datalayout specifies i64:32:32 and f64:32:32.<br>
<br>
The target also specifies:<br>
    LongLongAlign = 32;<br>
    SuitableAlign = 32;<br>
    DoubleAlign = LongDoubleAlign = 32;<br>
(debug confirms that the access functions correctly returning 32)<br>
<br>
However compiling:<br>
    void test(){ long long v=0; }<br>
produces 64bit alignment:<br>
    define void @test() #0 {<br>
    entry:<br>
      %v = alloca i64, align 8<br>
      store i64 0, i64* %v, align 8<br>
      ret void<br>
    }<br>
<br>
The following also fails:<br>
    // RUN: %clang_cc1 -triple xcore -verify %s<br>
    // expected-no-diagnostics<br>
    _Static_assert(sizeof(long long) == 8, "sizeof long long is wrong");<br>
    _Static_assert(_Alignof(long long) == 4, "alignof long long is wrong");<br>
    _Static_assert(sizeof(double) == 8, "sizeof double is wrong");<br>
    _Static_assert(_Alignof(double) == 4, "alignof double is wrong");<br>
<br>
As the target is very memory sensitive 'align 8' is a wasteful, needless operation and as such is considered an error!<br>
<br>
I have tried to trace where the decision to use an alignment of 8 is being made without success so far.<br>
Help or comment most welcome.<br>
Thanks.<br>
Robert<br>
<br>
<font color="black" face="Tahoma" size="2"><span style="font-size:10pt;" dir="ltr"></span></font></div>
</body>
</html>