[clang] [AMDGPU] Change the representation of double literals in operands (PR #68740)

Stanislav Mekhanoshin via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 12 23:41:52 PDT 2023


rampitec wrote:

> > Hi @rampitec
> > With UBSan built binaries the MC/AMDGPU/literals.s testcase fails and triggers UB like
> > ```
> > 07:33:04 ../lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp:2246:59: runtime error: left shift of negative value -54321
> > 07:33:04 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp:2246:59 
> > ```
> > 
> > 
> > It's this new shift that it complains on:
> > ```
> >     Val = AMDGPU::isSISrcFPOperand(InstDesc, OpNum) ? Val << 32 : Lo_32(Val);
> > ```
> 
> I am happy to fix it, but I do not understand how a LEFT shift can be a UB? Low bits will be zero, right? High bits will be disposed. I really do not understand.

Building ubsan now...

https://github.com/llvm/llvm-project/pull/68740


More information about the cfe-commits mailing list