[LLVMbugs] [Bug 17111] New: missing nop after branch
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Thu Sep  5 12:09:18 PDT 2013
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=17111
            Bug ID: 17111
           Summary: missing nop after branch
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: PowerPC
          Assignee: unassignedbugs at nondot.org
          Reporter: nlewycky at google.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified
Testcase:
  class Base {
  protected:
    Base() {}
  public:
    virtual ~Base();
    virtual void BaseMethod() {}
  };
  struct Derived : public Base {
    ~Derived() {
      DerivedMethod();
    }
    void DerivedMethod();
    virtual void BaseMethod();
  };
  void Derived::DerivedMethod() {}
  void Derived::BaseMethod() {}
The bug is in the assembly generated for the destructor. Here's a snippet:
  .Ltmp4:
         std 5, 120(31)
         bl _ZN7Derived13DerivedMethodEv
  .Ltmp5:
         b .LBB4_1
That doesn't leave enough space for the linker to insert the TOC reload when
resolving the R_PPC64_REL24 relocation. There needs to be a nop after the
branch+link instruction.
Reproduce with:
  clang -target powerpc64-pc-linux-gnu -fpic testcase.cc -S -o -
Ultimately the symptom is a failure when linking:
  error: call lacks nop, can't restore toc; recompile with -fPIC
-- 
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/20130905/2010d823/attachment.html>
    
    
More information about the llvm-bugs
mailing list