Bug 18926 – Template-related intpromote deprecation message spam

Status
NEW
Severity
normal
Priority
P3
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Mac OS X
Creation time
2018-05-31T11:25:57Z
Last change time
2024-12-13T18:58:57Z
Assigned to
No Owner
Creator
Sophie
Moved to GitHub: dmd#19441 →

Comments

Comment #0 by meapineapple — 2018-05-31T11:25:57Z
I downloaded a newer version of DMD and when I went to compile some code, I got a LOT of intpromote deprecation errors. Many of them repeated for the same line, and in one case it was repeated 300+ times for a single line of code. This is probably because this particular function gets a lot of different template parameters when running unit tests. /Users/pineapple/Dropbox/Projects/mach.d/mach/math/bits/inject.d(112): Deprecation: integral promotion not done for -cast(ubyte)bit, use '-transition=intpromote' switch or -cast(int)(cast(ubyte)bit) This was the function causing the error, due to `-(cast(ubyte) bit)` /// Inject bit into a value where the bit offset is known at compile time. /// When the `assumezero` template argument is true, the operation is able /// to be optimized by assuming the targeted bits are all initialized to 0. auto injectbit(uint offset, bool assumezero = false, T)( T value, in bool bit ) if( offset < T.sizeof * 8 ){ enum byteoffset = offset / 8; enum bitoffset = offset % 8; T target = value; auto ptr = cast(ubyte*) &target + byteoffset; static if(assumezero){ *ptr |= cast(ubyte) bit << bitoffset; }else{ *ptr ^= (-(cast(ubyte) bit) ^ *ptr) & (1 << bitoffset); } return target; }
Comment #1 by robert.schadek — 2024-12-13T18:58:57Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19441 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB