[llvm-commits] [llvm] r128037 - /llvm/trunk/lib/MC/MCExpr.cpp

Owen Anderson resistor at mac.com
Mon Mar 21 16:13:43 PDT 2011


Author: resistor
Date: Mon Mar 21 18:13:43 2011
New Revision: 128037

URL: http://llvm.org/viewvc/llvm-project?rev=128037&view=rev
Log:
Add support for Thumb interworking addresses for symbol offsets that get constant folded very early.
This fixes SPASS with -integrated-as.  <rdar://problem/9165399>

Modified:
    llvm/trunk/lib/MC/MCExpr.cpp

Modified: llvm/trunk/lib/MC/MCExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCExpr.cpp?rev=128037&r1=128036&r2=128037&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCExpr.cpp (original)
+++ llvm/trunk/lib/MC/MCExpr.cpp Mon Mar 21 18:13:43 2011
@@ -310,6 +310,11 @@
   if (AD.getFragment() == BD.getFragment()) {
     Addend += (AD.getOffset() - BD.getOffset());
 
+    // Pointers to Thumb symbols need to have their low-bit set to allow
+    // for interworking.
+    if (Asm->isThumbFunc(&SA))
+      Addend |= 1;
+
     // Clear the symbol expr pointers to indicate we have folded these
     // operands.
     A = B = 0;





More information about the llvm-commits mailing list