Fix mips' long branch pass.

Instructions emitted to compute branch offsets now use immediate operands
instead of symbolic labels. This change was needed because there were problems
when R_MIPS_HI16/LO16 relocations were used to make shared objects.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162731 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Akira Hatanaka
2012-08-28 03:03:05 +00:00
parent 8dc440a46a
commit 273956d8c6
3 changed files with 136 additions and 104 deletions
+8 -2
View File
@@ -6,9 +6,15 @@
define void @foo1(i32 %s) nounwind {
entry:
; O32: bal
; O32: lui $at, 0
; O32: addiu $at, $at, {{[0-9]+}}
; N64: lui $at, 0
; N64: daddiu $at, $at, 0
; N64: dsll $at, $at, 16
; N64: daddiu $at, $at, 0
; N64: bal
; N64: highest
; N64: higher
; N64: dsll $at, $at, 16
; N64: daddiu $at, $at, {{[0-9]+}}
%tobool = icmp eq i32 %s, 0
br i1 %tobool, label %if.end, label %if.then