[LLVMdev] Inconsistent label syntax in LLVM assembly

nkavv at physics.auth.gr nkavv at physics.auth.gr
Sun Jan 20 03:00:34 PST 2013

Hi all,

i'm writing a TXL (http://www.txl.ca) grammar and a revamp of  
bison/flex grammar for LLVM.

I've noticed an inconsistency regarding label naming conventions.

For instance, the following is a segment of legit LLVM assembly  
(human-readable) IR:

   br i1 %38, label %17, label %39
; <label>:39                                      ; preds = %._crit_edge
   ret void

However, ";" is a comment-line character. How is this interpreted, as  
a meta-comment? (a semantically important comment)?

Other branches appear using regular conventions:

   br i1 %exitcond, label %._crit_edge, label %.lr.ph
._crit_edge:             ; preds = %.lr.ph, %.preheader

So, naturally I have some questions:

1) What is the differences among the branch labels? Differences in the  
formation (e.g. emitted by different passes?)

2) How to normalize the appearance of branch labels? I.e. is it  
possible to not emit the strange ; <label>:39 like ones?

3) Why <label>:39 and not 39: ?

4) Why not prefixing all labels with <label>?

Best regards
Nikolaos Kavvadias

More information about the llvm-dev mailing list