本文整理匯總了Golang中golang.org/x/tools/go/ssa.Value.Pos方法的典型用法代碼示例。如果您正苦於以下問題:Golang Value.Pos方法的具體用法?Golang Value.Pos怎麽用?Golang Value.Pos使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類golang.org/x/tools/go/ssa.Value
的用法示例。
在下文中一共展示了Value.Pos方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Declare
// Declare creates an llvm.dbg.declare call for the specified function
// parameter or local variable.
func (d *DIBuilder) Declare(b llvm.Builder, v ssa.Value, llv llvm.Value, paramIndex int) {
tag := tagAutoVariable
if paramIndex >= 0 {
tag = tagArgVariable
}
var diFile llvm.Value
var line int
if file := d.fset.File(v.Pos()); file != nil {
line = file.Line(v.Pos())
diFile = d.getFile(file)
}
localVar := d.builder.CreateLocalVariable(d.scope(), llvm.DILocalVariable{
Tag: tag,
Name: llv.Name(),
File: diFile,
Line: line,
ArgNo: paramIndex + 1,
Type: d.DIType(v.Type()),
})
expr := d.builder.CreateExpression(nil)
d.builder.InsertDeclareAtEnd(llv, localVar, expr, b.GetInsertBlock())
}
示例2: isCondFair
// isCondFair returns true if an if condition (bool expression) is constant.
func (fa *FairnessAnalysis) isCondFair(cond ssa.Value) bool {
switch cond := cond.(type) {
case *ssa.Const:
fa.logger.Println(color.YellowString("Warning: loop condition is constant"))
return false
case *ssa.BinOp: // <, <=, !=, ==
if _, xConst := cond.X.(*ssa.Const); xConst {
if _, yConst := cond.Y.(*ssa.Const); yConst {
fa.logger.Println(color.YellowString("Warning: loop condition is constant"))
return false
} else {
fa.logger.Println(color.YellowString("Try to trace back on Y"))
}
} else {
fa.logger.Println(color.YellowString("Try to trace back on X"))
}
case *ssa.UnOp:
if _, con := cond.X.(*ssa.Const); con {
fa.logger.Println(color.YellowString("Warning: loop condition is constant"))
return false
}
case *ssa.Call:
fa.logger.Println(color.YellowString("Warning:%s: condition is function call --> unsure", fa.info.FSet.Position(cond.Pos()).String()))
return false
}
return true // Assume fair by default
}