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/lib/Target | |
| 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/lib/Target')
| -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; } |

