[LLVMbugs] [Bug 15128] New: Incorrect alignment of llvm.memset for constructor initializing

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Jan 30 14:27:43 PST 2013


             Bug #: 15128
           Summary: Incorrect alignment of llvm.memset for constructor
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: LLVM Codegen
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: weimingz at codeaurora.org
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 9954
  --> http://llvm.org/bugs/attachment.cgi?id=9954
test case

Given the .cpp code (see attachment), clang emits the following code snippet:

define linkonce_odr %struct.testnode* @_ZN8testnodeC2Ev(%struct.testnode*
%this) unnamed_addr align 2 {
  %1 = alloca %struct.testnode*, align 4
  store %struct.testnode* %this, %struct.testnode** %1, align 4
  %2 = load %struct.testnode** %1
  %3 = getelementptr inbounds %struct.testnode* %2, i32 0, i32 0
  %4 = bitcast %struct.alignedstruct* %3 to i8*
  call void @llvm.memset.p0i8.i32(i8* %4, i8 0, i32 16, i32 16, i1 false) ==>
it sets 128-byte alignment, which can't be guaranteed
  %5 = call %struct.alignedstruct*
@_ZN13alignedstructIPvEC1Ev(%struct.alignedstruct* %3)
  ret %struct.testnode* %2

clang++ -S -c -emit-llvm -march=armv7-a -mfloat-abi=softfp -mfpu=neon
-std=c++11 -stdlib=libc++ -o test.ll test.cpp

In void CodeGenFunction::EmitNullInitialization(), it gets Align of 16.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list