Remove a bugs assert.

There is no reason the value being printed has to be positive.
Fixes pr25802.

llvm-svn: 257412
This commit is contained in:
Rafael Espindola 2016-01-11 23:21:45 +00:00
parent d98cea8c8b
commit 36a425b618
2 changed files with 52 additions and 2 deletions

View File

@ -64,8 +64,6 @@ void MCObjectStreamer::emitAbsoluteSymbolDiff(const MCSymbol *Hi,
return;
}
assert(Hi->getOffset() >= Lo->getOffset() &&
"Expected Hi to be greater than Lo");
EmitIntValue(Hi->getOffset() - Lo->getOffset(), Size);
}

View File

@ -0,0 +1,52 @@
; RUN: llc < %s | FileCheck %s
; CHECK: .long .Ltmp6-.Ltmp12 # Call between .Ltmp12 and .Ltmp6
; We used to crash in filetype=obj when computing a negative value.
; RUN: llc -filetype=obj < %s
target triple = "powerpc--netbsd"
@_ZTI1I = external constant { i8*, i8* }
define void @f(i8 %foo, i32 %bar) personality i8* bitcast (void ()* @g to i8*) {
invoke void @g()
to label %try.cont unwind label %lpad
lpad: ; preds = %0
%tmp = landingpad { i8*, i32 }
catch i8* bitcast ({ i8*, i8* }* @_ZTI1I to i8*)
br i1 undef, label %catch10, label %catch
catch10: ; preds = %lpad
%tmp8 = load i32, i32* undef, align 4
%conv.i.i = zext i8 %foo to i32
%cond.i.i = select i1 undef, i32 %conv.i.i, i32 %tmp8
invoke void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32 %cond.i.i)
to label %invoke.cont20 unwind label %lpad15
invoke.cont20: ; preds = %catch10
ret void
try.cont: ; preds = %0
ret void
catch: ; preds = %lpad
%tmp14 = load i32, i32* undef, align 4
%conv.i.i34 = zext i8 %foo to i32
%cond.i.i35 = select i1 undef, i32 %conv.i.i34, i32 %tmp14
invoke void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32 %cond.i.i35)
to label %invoke.cont8 unwind label %lpad3
invoke.cont8: ; preds = %call2.i.i.noexc36
ret void
lpad3: ; preds = %call2.i.i.noexc36, %catch
%tmp16 = landingpad { i8*, i32 }
cleanup
invoke void @g()
to label %eh.resume unwind label %terminate.lpad
lpad15: ; preds = %catch10
%tmp19 = landingpad { i8*, i32 }
cleanup
invoke void @g()
to label %eh.resume unwind label %terminate.lpad
eh.resume: ; preds = %lpad15, %lpad3
ret void
terminate.lpad: ; preds = %lpad15, %lpad3
%tmp22 = landingpad { i8*, i32 }
catch i8* null
ret void
}
declare void @g()
declare void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32)