Bug 199061

Summary: Sparse IR does not provide enough information for value pseudos (PSEUDO_VAL) in certain situations
Product: Tools Reporter: Dibyendu Majumdar (mobile)
Component: SparseAssignee: Tools-Sparse Virtual Assignee (tools_sparse)
Status: RESOLVED CODE_FIX    
Severity: normal CC: luc.vanoostenryck
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: N/A Subsystem:
Regression: No Bisected commit-id:

Description Dibyendu Majumdar 2018-03-08 22:00:52 UTC
Sparse IR generates a type of pseudo known as PSEUDO_VAL. This represents an integer value of size up to 64-bits (long long). Both pointers and integer values may be represented using such pseudos.

Normally the associated Sparse IR instruction provides additional information such as type / size / signedness, etc. However in certain conditions such as when calling a variadic function, there may not be any information available other than the value itself; this can mean that when calling variadic functions, a backend code generator such as sparse-llvm, does not know the intended size of the argument, and cannot emit code correctly.

For previous discussion of this issue please see:

https://marc.info/?l=linux-sparse&m=151060861909217&w=2

https://marc.info/?l=linux-sparse&m=148968793623434&w=2

https://marc.info/?l=linux-sparse&m=148969555725868&w=2

https://marc.info/?l=linux-sparse&m=148924738713657&w=2

https://marc.info/?l=linux-sparse&m=148852426115193&w=2
Comment 1 Luc Van Oostenryck 2018-11-19 22:50:00 UTC
Do you know of any other conditions than the variadic args?