[llvm-dev] Understand the meaning of preds = %0

Alberto Barbaro via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 26 22:49:53 PDT 2019


Hi all,
I have seen in multiple cases that, usually at the beginning of the
function. if a BranchInst is encountered the next block might have %0
indicated as predecessor. I think it is a way to say "no predecessors
found". Am I correct?

Few examples just for clarifying what I mean:

define noalias %struct.png_struct_def* @png_create_read_struct_2(i8*
%user_png_ver, i8* %error_ptr, void (%struct.png_struct_def*, i8*)*
%error_fn, void (%struct.png_struct_def*, i8*)* %warn_fn, i8* %mem_ptr, i8*
(%struct.png_struct_def*, i64)* %malloc_fn, void (%struct.png_struct_def*,
i8*)* %free_fn) #5 {
  %1 = tail call noalias %struct.png_struct_def* @png_create_png_struct(i8*
%user_png_ver, i8* %error_ptr, void (%struct.png_struct_def*, i8*)*
%error_fn, void (%struct.png_struct_def*, i8*)* %warn_fn, i8* %mem_ptr, i8*
(%struct.png_struct_def*, i64)* %malloc_fn, void (%struct.png_struct_def*,
i8*)* %free_fn) #15
  %2 = icmp eq %struct.png_struct_def* %1, null
  br i1 %2, label %9, label %3

; <label>:3:                                      *; preds = %0*
  %4 = getelementptr inbounds %struct.png_struct_def,
%struct.png_struct_def* %1, i64 0, i32 15
...
}

define noalias %struct.png_struct_def* @png_create_read_struct(i8*
%user_png_ver, i8* %error_ptr, void (%struct.png_struct_def*, i8*)*
%error_fn, void (%struct.png_struct_def*, i8*)* %warn_fn) #5 {
  %1 = tail call noalias %struct.png_struct_def* @png_create_png_struct(i8*
%user_png_ver, i8* %error_ptr, void (%struct.png_struct_def*, i8*)*
%error_fn, void (%struct.png_struct_def*, i8*)* %warn_fn, i8* null, i8*
(%struct.png_struct_def*, i64)* null, void (%struct.png_struct_def*, i8*)*
null) #15
  %2 = icmp eq %struct.png_struct_def* %1, null
  br i1 %2, label %png_create_read_struct_2.exit, label %3

; <label>:3:                                      *; preds = %0*
  %4 = getelementptr inbounds %struct.png_struct_def,
%struct.png_struct_def* %1, i64 0, i32 15
 ...
}

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190427/66ab0e1d/attachment.html>


More information about the llvm-dev mailing list