; ModuleID = 'pgdata/75392.0.optimized.bc' source_filename = "pg" target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" target triple = "riscv64-portbld-freebsd13.0" %struct.ExprState = type { i32, i8, i8, i64, %struct.TupleTableSlot*, %struct.ExprEvalStep*, i64 (%struct.ExprState*, %struct.ExprContext*, i8*)*, %struct.Expr*, i8*, i32, i32, %struct.PlanState*, %struct.ParamListInfoData*, i64*, i8*, i64*, i8* } %struct.TupleTableSlot = type { i32, i16, i16, %struct.TupleTableSlotOps*, %struct.TupleDescData*, i64*, i8*, %struct.MemoryContextData*, %struct.ItemPointerData, i32 } %struct.TupleTableSlotOps = type { i64, void (%struct.TupleTableSlot*)*, void (%struct.TupleTableSlot*)*, void (%struct.TupleTableSlot*)*, void (%struct.TupleTableSlot*, i32)*, i64 (%struct.TupleTableSlot*, i32, i8*)*, void (%struct.TupleTableSlot*)*, void (%struct.TupleTableSlot*, %struct.TupleTableSlot*)*, %struct.HeapTupleData* (%struct.TupleTableSlot*)*, %struct.MinimalTupleData* (%struct.TupleTableSlot*)*, %struct.HeapTupleData* (%struct.TupleTableSlot*)*, %struct.MinimalTupleData* (%struct.TupleTableSlot*)* } %struct.HeapTupleData = type { i32, %struct.ItemPointerData, i32, %struct.HeapTupleHeaderData* } %struct.HeapTupleHeaderData = type { %union.anon, %struct.ItemPointerData, i16, i16, i8, [0 x i8] } %union.anon = type { %struct.HeapTupleFields } %struct.HeapTupleFields = type { i32, i32, %union.anon.0 } %union.anon.0 = type { i32 } %struct.MinimalTupleData = type { i32, [6 x i8], i16, i16, i8, [0 x i8] } %struct.TupleDescData = type { i32, i32, i32, i32, %struct.TupleConstr*, [0 x %struct.FormData_pg_attribute] } %struct.TupleConstr = type { %struct.AttrDefault*, %struct.ConstrCheck*, %struct.AttrMissing*, i16, i16, i8, i8 } %struct.AttrDefault = type { i16, i8* } %struct.ConstrCheck = type { i8*, i8*, i8, i8 } %struct.AttrMissing = type opaque %struct.FormData_pg_attribute = type { i32, %struct.nameData, i32, i32, i16, i16, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 } %struct.nameData = type { [64 x i8] } %struct.MemoryContextData = type { i32, i8, i8, i64, %struct.MemoryContextMethods*, %struct.MemoryContextData*, %struct.MemoryContextData*, %struct.MemoryContextData*, %struct.MemoryContextData*, i8*, i8*, %struct.MemoryContextCallback* } %struct.MemoryContextMethods = type { i8* (%struct.MemoryContextData*, i64)*, void (%struct.MemoryContextData*, i8*)*, i8* (%struct.MemoryContextData*, i8*, i64)*, void (%struct.MemoryContextData*)*, void (%struct.MemoryContextData*)*, i64 (%struct.MemoryContextData*, i8*)*, i1 (%struct.MemoryContextData*)*, void (%struct.MemoryContextData*, void (%struct.MemoryContextData*, i8*, i8*, i1)*, i8*, %struct.MemoryContextCounters*, i1)*, void (%struct.MemoryContextData*)* } %struct.MemoryContextCounters = type { i64, i64, i64, i64 } %struct.MemoryContextCallback = type { void (i8*)*, i8*, %struct.MemoryContextCallback* } %struct.ItemPointerData = type { %struct.BlockIdData, i16 } %struct.BlockIdData = type { i16, i16 } %struct.ExprEvalStep = type { i64, i64*, i8*, %union.anon.1 } %union.anon.1 = type { %struct.anon.32 } %struct.anon.32 = type { i8, i8, %struct.ScalarArrayOpExprHashTable*, %struct.FmgrInfo*, %struct.FunctionCallInfoBaseData*, i64 (%struct.FunctionCallInfoBaseData*)*, %struct.FmgrInfo*, %struct.FunctionCallInfoBaseData*, i64 (%struct.FunctionCallInfoBaseData*)* } %struct.ScalarArrayOpExprHashTable = type opaque %struct.FmgrInfo = type { {}*, i32, i16, i8, i8, i8, i8*, %struct.MemoryContextData*, %struct.Node* } %struct.Node = type { i32 } %struct.FunctionCallInfoBaseData = type { %struct.FmgrInfo*, %struct.Node*, %struct.Node*, i32, i8, i16, [0 x %struct.NullableDatum] } %struct.NullableDatum = type { i64, i8 } %struct.Expr = type { i32 } %struct.PlanState = type { i32, %struct.Plan*, %struct.EState*, %struct.TupleTableSlot* (%struct.PlanState*)*, %struct.TupleTableSlot* (%struct.PlanState*)*, %struct.Instrumentation*, %struct.WorkerInstrumentation*, %struct.SharedJitInstrumentation*, %struct.ExprState*, %struct.PlanState*, %struct.PlanState*, %struct.List*, %struct.List*, %struct.Bitmapset*, %struct.TupleDescData*, %struct.TupleTableSlot*, %struct.ExprContext*, %struct.ProjectionInfo*, i8, %struct.TupleDescData*, %struct.TupleTableSlotOps*, %struct.TupleTableSlotOps*, %struct.TupleTableSlotOps*, %struct.TupleTableSlotOps*, i8, i8, i8, i8, i8, i8, i8, i8 } %struct.Plan = type { i32, double, double, double, i32, i8, i8, i8, i32, %struct.List*, %struct.List*, %struct.Plan*, %struct.Plan*, %struct.List*, %struct.Bitmapset*, %struct.Bitmapset* } %struct.EState = type { i32, i32, %struct.SnapshotData*, %struct.SnapshotData*, %struct.List*, i32, %struct.RelationData**, %struct.ExecRowMark**, %struct.PlannedStmt*, i8*, %struct.JunkFilter*, i32, %struct.ResultRelInfo**, %struct.List*, %struct.PartitionDirectoryData*, %struct.List*, %struct.List*, %struct.ParamListInfoData*, %struct.ParamExecData*, %struct.QueryEnvironment*, %struct.MemoryContextData*, %struct.List*, i64, i32, i32, i8, %struct.List*, %struct.List*, %struct.List*, %struct.ExprContext*, %struct.EPQState*, i8, %struct.dsa_area*, i32, %struct.JitContext*, %struct.JitInstrumentation* } %struct.SnapshotData = type { i32, i32, i32, i32*, i32, i32*, i32, i8, i8, i8, i32, i32, %struct.GlobalVisState*, i32, i32, %struct.pairingheap_node, i64, i64, i64 } %struct.GlobalVisState = type opaque %struct.pairingheap_node = type { %struct.pairingheap_node*, %struct.pairingheap_node*, %struct.pairingheap_node* } %struct.RelationData = type opaque %struct.ExecRowMark = type { %struct.RelationData*, i32, i32, i32, i32, i32, i32, i32, i8, %struct.ItemPointerData, i8* } %struct.PlannedStmt = type { i32, i32, i64, i8, i8, i8, i8, i8, i8, i32, %struct.Plan*, %struct.List*, %struct.List*, %struct.List*, %struct.List*, %struct.Bitmapset*, %struct.List*, %struct.List*, %struct.List*, %struct.List*, %struct.Node*, i32, i32 } %struct.JunkFilter = type { i32, %struct.List*, %struct.TupleDescData*, i16*, %struct.TupleTableSlot* } %struct.ResultRelInfo = type { i32, i32, %struct.RelationData*, i32, %struct.RelationData**, %struct.IndexInfo**, i16, %struct.ProjectionInfo*, %struct.TupleTableSlot*, %struct.TupleTableSlot*, i8, %struct.TriggerDesc*, %struct.FmgrInfo*, %struct.ExprState**, %struct.Instrumentation*, %struct.TupleTableSlot*, %struct.TupleTableSlot*, %struct.TupleTableSlot*, %struct.FdwRoutine*, i8*, i8, i32, i32, i32, %struct.TupleTableSlot**, %struct.TupleTableSlot**, %struct.List*, %struct.List*, %struct.ExprState**, %struct.ExprState**, i32, %struct.List*, %struct.ProjectionInfo*, %struct.List*, %struct.OnConflictSetState*, %struct.ExprState*, %struct.ResultRelInfo*, %struct.TupleConversionMap*, %struct.TupleTableSlot*, %struct.TupleConversionMap*, i8, %struct.CopyMultiInsertBuffer* } %struct.IndexInfo = type { i32, i32, i32, [32 x i16], %struct.List*, %struct.List*, %struct.List*, %struct.ExprState*, i32*, i32*, i16*, i32*, i32*, i16*, i64*, i8, i8, i8, i8, i32, i32, i8*, %struct.MemoryContextData* } %struct.TriggerDesc = type { %struct.Trigger*, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 } %struct.Trigger = type { i32, i8*, i32, i16, i8, i8, i8, i32, i32, i32, i8, i8, i16, i16, i16*, i8**, i8*, i8*, i8* } %struct.FdwRoutine = type opaque %struct.OnConflictSetState = type { i32, %struct.TupleTableSlot*, %struct.TupleTableSlot*, %struct.ProjectionInfo*, %struct.ExprState* } %struct.TupleConversionMap = type { %struct.TupleDescData*, %struct.TupleDescData*, %struct.AttrMap*, i64*, i8*, i64*, i8* } %struct.AttrMap = type { i16*, i32 } %struct.CopyMultiInsertBuffer = type opaque %struct.PartitionDirectoryData = type opaque %struct.ParamExecData = type { i8*, i64, i8 } %struct.QueryEnvironment = type opaque %struct.EPQState = type { %struct.EState*, i32, %struct.List*, %struct.TupleTableSlot**, %struct.Plan*, %struct.List*, %struct.TupleTableSlot*, %struct.EState*, %struct.ExecAuxRowMark**, i8*, %struct.PlanState* } %struct.ExecAuxRowMark = type { %struct.ExecRowMark*, i16, i16, i16 } %struct.dsa_area = type opaque %struct.JitContext = type opaque %struct.JitInstrumentation = type opaque %struct.Instrumentation = type { i8, i8, i8, i8, i8, %struct.timespec, %struct.timespec, double, double, %struct.BufferUsage, %struct.WalUsage, double, double, double, double, double, double, double, %struct.BufferUsage, %struct.WalUsage } %struct.timespec = type { i64, i64 } %struct.BufferUsage = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %struct.timespec, %struct.timespec } %struct.WalUsage = type { i64, i64, i64 } %struct.WorkerInstrumentation = type { i32, [0 x %struct.Instrumentation] } %struct.SharedJitInstrumentation = type opaque %struct.List = type { i32, i32, i32, %union.ListCell*, [0 x %union.ListCell] } %union.ListCell = type { i8* } %struct.Bitmapset = type { i32, [0 x i64] } %struct.ProjectionInfo = type { i32, %struct.ExprState, %struct.ExprContext* } %struct.ParamListInfoData = type { %struct.ParamExternData* (%struct.ParamListInfoData*, i32, i1, %struct.ParamExternData*)*, i8*, void (%struct.ParamListInfoData*, %struct.Param*, %struct.ExprState*, i64*, i8*)*, i8*, void (%struct.ParseState*, i8*)*, i8*, i8*, i32, [0 x %struct.ParamExternData] } %struct.ParamExternData = type { i64, i8, i16, i32 } %struct.Param = type { %struct.Expr, i32, i32, i32, i32, i32, i32 } %struct.ParseState = type opaque %struct.ExprContext = type { i32, %struct.TupleTableSlot*, %struct.TupleTableSlot*, %struct.TupleTableSlot*, %struct.MemoryContextData*, %struct.MemoryContextData*, %struct.ParamExecData*, %struct.ParamListInfoData*, i64*, i8*, i64, i8, i64, i8, %struct.EState*, %struct.ExprContext_CB* } %struct.ExprContext_CB = type { %struct.ExprContext_CB*, void (i64)*, i64 } ; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly define i64 @evalexpr_0_0(%struct.ExprState* nocapture %0, %struct.ExprContext* %1, i8* %2) #0 { entry: %v.state.resvalue = getelementptr inbounds %struct.ExprState, %struct.ExprState* %0, i32 0, i32 3 %v.state.resnull = getelementptr inbounds %struct.ExprState, %struct.ExprState* %0, i32 0, i32 2 %3 = getelementptr inbounds %struct.ExprState, %struct.ExprState* %0, i32 0, i32 11 %v.state.parent = load %struct.PlanState*, %struct.PlanState** %3, align 8 %4 = getelementptr inbounds %struct.ExprContext, %struct.ExprContext* %1, i32 0, i32 1 %v_scanslot = load %struct.TupleTableSlot*, %struct.TupleTableSlot** %4, align 8 %5 = getelementptr inbounds %struct.ExprContext, %struct.ExprContext* %1, i32 0, i32 2 %v_innerslot = load %struct.TupleTableSlot*, %struct.TupleTableSlot** %5, align 8 %6 = getelementptr inbounds %struct.ExprContext, %struct.ExprContext* %1, i32 0, i32 3 %v_outerslot = load %struct.TupleTableSlot*, %struct.TupleTableSlot** %6, align 8 %7 = getelementptr inbounds %struct.ExprState, %struct.ExprState* %0, i32 0, i32 4 %v_resultslot = load %struct.TupleTableSlot*, %struct.TupleTableSlot** %7, align 8 %8 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_scanslot, i32 0, i32 5 %v_scanvalues = load i64*, i64** %8, align 8 %9 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_scanslot, i32 0, i32 6 %v_scannulls = load i8*, i8** %9, align 8 %10 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_innerslot, i32 0, i32 5 %v_innervalues = load i64*, i64** %10, align 8 %11 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_innerslot, i32 0, i32 6 %v_innernulls = load i8*, i8** %11, align 8 %12 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_outerslot, i32 0, i32 5 %v_outervalues = load i64*, i64** %12, align 8 %13 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_outerslot, i32 0, i32 6 %v_outernulls = load i8*, i8** %13, align 8 %14 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_resultslot, i32 0, i32 5 %v_resultvalues = load i64*, i64** %14, align 8 %15 = getelementptr inbounds %struct.TupleTableSlot, %struct.TupleTableSlot* %v_resultslot, i32 0, i32 6 %v_resultnulls = load i8*, i8** %15, align 8 %16 = getelementptr inbounds %struct.ExprContext, %struct.ExprContext* %1, i32 0, i32 8 %v.econtext.aggvalues = load i64*, i64** %16, align 8 %17 = getelementptr inbounds %struct.ExprContext, %struct.ExprContext* %1, i32 0, i32 9 %v.econtext.aggnulls = load i8*, i8** %17, align 8 br label %b.op.0.start b.op.0.start: ; preds = %entry store i64 2, i64* inttoptr (i64 1107285880 to i64*), align 8 store i8 0, i8* inttoptr (i64 1107285877 to i8*), align 1 br label %b.op.1.start b.op.1.start: ; preds = %b.op.0.start %18 = load i64, i64* %v.state.resvalue, align 8 %19 = load i8, i8* %v.state.resnull, align 1 %20 = getelementptr i64, i64* %v_resultvalues, i32 0 %21 = getelementptr i8, i8* %v_resultnulls, i32 0 store i8 %19, i8* %21, align 1 store i64 %18, i64* %20, align 8 br label %b.op.2.start b.op.2.start: ; preds = %b.op.1.start %22 = load i64, i64* %v.state.resvalue, align 8 %23 = load i8, i8* %v.state.resnull, align 1 store i8 %23, i8* %2, align 1 ret i64 %22 } attributes #0 = { nofree norecurse nounwind uwtable willreturn writeonly "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+a,+c,+d,+f,+m,+relax,-save-restore" "unsafe-fp-math"="false" "use-soft-float"="false" }