3 ms·
What is the meaning of use(*p) in case p is null? what should the compiler emit?
by junke 5y ago
What is the meaning of use(*p) in case p is null? what should the compiler emit?
- leosarev 5y agoIf p is statically null, it should emit compile time error. If not, it should emit machine instruction to deference p.
- tom_mellior 5y agoIn all of the examples above it will emit a machine instruction to dereference p. What your grandparent is complaining about is that it will later remove an "if (!p)" test.
- a1369209993 5y ago> What is the meaning of use(*p) in case p is null? It dereferences a null pointer, invoking undefined behaviour, then calls the function `use` with the resulting value. > what should the compiler emit? Probably something to the effect of: ld r0 [sp+.p] # if p is not already in a register ld r0 [r0] # *p jsr use but it would be fine to emit something like: ld r0 [sp+.p] # if p is not already in a register jz r0 .panic ld r0 [r0] # *p jsr use because the jz can only be taken when undefined behaviour happens.
- deleted 5y ago[deleted]