<p dir="ltr">>> What I mean by "conflict" or "valid" here are all under the assumption<br>
>> that what the optimizer will do if it choose not to ignore them<br>
>> (otherwise there's no point of including the metadata).<br>
>> Or in another word, whether a pass that uses these metadata (i.e. not<br>
>> ignoring them) will do the right thing (i.e. not mis-optimize the<br>
>> code), or doing optimizations following the alias analysis using the<br>
>> TBAA metadata will indeed not change the schematics.<br>
>><br>
>> In that sense I believe having two memory operation on the same<br>
>> runtime path with the same pointer value (and same address space and<br>
>> everything else) but with TBAA metadata that are not child of each<br>
>> other does "conflict" in the sense that the optimizer can do<br>
>> transformation based on the TBAA metadata that can change the result<br>
>> of the operation (the value loaded).<br>
><br>
><br>
> Yes, but this is what the higher lavel language has explicitly told us is<br>
> valid to do.<br>
> Who are we to argue?</p>
<p dir="ltr">Well, in this case, it's about whether LLVM can generate this so we are arguing with the optimizer. I think the explaination that I want to confirm should be relatively close and can explain why the merge of the metadata is the right solution so Ill just use it until I hit another case that it doesnt work.....<br>
</p>