diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-05-18 16:10:24 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-05-18 16:10:24 +0000 |
commit | a519cf593f4ee5542c63e1b3d9c54c6a8e0187a9 (patch) | |
tree | 29ab2b9852907560bbc0e2a7e6c8ff98d43c437d /llvm | |
parent | 1735da460b1494a9fcc40b6af8006e78fa3f1475 (diff) | |
download | bcm5719-llvm-a519cf593f4ee5542c63e1b3d9c54c6a8e0187a9.tar.gz bcm5719-llvm-a519cf593f4ee5542c63e1b3d9c54c6a8e0187a9.zip |
AMDGPU: Error if branch distance exceeds limit
llvm-svn: 269951
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp index c7c4cf0969d..933c167f013 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp @@ -96,8 +96,12 @@ void AMDGPUAsmBackend::applyFixup(const MCFixup &Fixup, char *Data, switch ((unsigned)Fixup.getKind()) { case AMDGPU::fixup_si_sopp_br: { + int64_t BrImm = (Value - 4) / 4; + if (!isInt<16>(BrImm)) + report_fatal_error("branch size exceeds simm16"); + uint16_t *Dst = (uint16_t*)(Data + Fixup.getOffset()); - *Dst = (Value - 4) / 4; + *Dst = BrImm; break; } |