[llvm-bugs] [Bug 28410] New: Optimized code contains illegal movaps instruction when using aligned attribute in typedef
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Mon Jul  4 06:41:42 PDT 2016
    
    
  
https://llvm.org/bugs/show_bug.cgi?id=28410
            Bug ID: 28410
           Summary: Optimized code contains illegal movaps instruction
                    when using aligned attribute in typedef
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: lukasz.czyz at intel.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified
clang generates MOVAPS instruction with wrongly aligned operand (resulting in
SEGFAULT) when compiling following code with optimizations enabled (-O2):
#include <stdint.h>
struct Foo
{
    uint32_t data[ 13 ];
};
typedef  __attribute__((aligned(16))) Foo FooDef;
int counter;
struct Bar
{
        FooDef array[4];
};
__attribute__ ((noinline)) void do_sth(FooDef* foo)
{
        counter += ((char*)foo)[0];
}
int main()
{
        Bar* bar = new Bar();
        FooDef tmp = {{0}};
        for (int i = 0; i < 4; i++)
        {
                FooDef *foo = &bar->array[i];
                *foo = tmp;
                do_sth(foo);
        }
        return 0;
}
Explanation: aligned(16) attribute is ignored when determining sizeof(FooDef)
(so sizeof(FooDef) == 52, not 64). At the other hand optimizer assumes that the
given alignment holds for all elements of bar->array which is not true due to
sizeof(FooDef) not aligned to 16 bytes.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160704/6bca6143/attachment.html>
    
    
More information about the llvm-bugs
mailing list