[llvm-bugs] [Bug 33075] New: Assignment to struct passed by value modifies caller's stack frame

via llvm-bugs llvm-bugs at lists.llvm.org
Wed May 17 10:30:34 PDT 2017


            Bug ID: 33075
           Summary: Assignment to struct passed by value modifies caller's
                    stack frame
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: gergo.barany at inria.fr
                CC: llvm-bugs at lists.llvm.org

Created attachment 18458
  --> https://bugs.llvm.org/attachment.cgi?id=18458&action=edit
Input C file for triggering the bug

Consider the following C program (also in the attachment):

$ cat bug_06.c 
struct S1 {
   int f4;
   int f8;
   int pad[3];

int func(struct S1 s)
    s.f8 = 666;
    return s.f4;

The struct is passed into the function by value, and the store to s.f8 should
only affect the function's local copy. (And be optimized away because it is
dead.) However, LLVM seems to generate code that modifies the caller's copy on
the stack:

$ clang bug_06.c -O3 -S -o -    .text
        .file   "bug_06.c"
        .globl  func
        .p2align        4, 0x90
        .type   func, at function
func:                                   # @func
# BB#0:
        movl    $666, 12(%rsp)          # imm = 0x29A
        movl    8(%rsp), %eax
        .size   func, .Lfunc_end0-func

        .ident  "clang version 5.0.0 (trunk 303270)"
        .section        ".note.GNU-stack","", at progbits

Note the store of 666 to an address on the stack although no stack frame was
allocated, i.e., to an address in the caller's frame.

This may be a duplicate of https://bugs.llvm.org/show_bug.cgi?id=10485 , which
was not investigated further because it seemed to be a bug in the bitcode

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/20170517/5d5bc9fe/attachment-0001.html>

More information about the llvm-bugs mailing list