[llvm-dev] In ISel, where Constant<0> comes from?

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Mon Dec 17 06:40:33 PST 2018

On 12/17/2018 8:08 AM, Gleb Popov via llvm-dev wrote:
> However, I don't see that Constant node when compiling using X86 
> backend. How does it achieve this? And why initial DAGs are different at 
> all? I got impression that initial DAG is fully target-independent, so 
> these DAG should be the same before starting ISel. Am I wrong?

The selection DAG is very much target-specific. The differences in the 
initial DAG usually come from lowering function arguments and return 
values, and from lowering calls to other functions. This is where 
different calling conventions are applied, so the initial DAG may be 
different even for the same target if you change the calling convention.

Later on more differences appear from legalization (which each target 
needs to customize to match its needs), and custom DAG combines. All of 
this happens before the actual selection process starts.


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

More information about the llvm-dev mailing list