@@ -78,6 +78,23 @@ typedef struct LLVMTupleAttr {
78
78
#define EXPRCONTEXT_SCANTUPLE_FIELDNO 1
79
79
#define EXPRCONTEXT_INNERTUPLE_FIELDNO 2
80
80
#define EXPRCONTEXT_OUTERTUPLE_FIELDNO 3
81
+ #define FUNCTIONCALLINFODATA_FLINFO_FIELDNO 0
82
+ #define FUNCTIONCALLINFODATA_CONTEXT_FIELDNO 1
83
+ #define FUNCTIONCALLINFODATA_RESULTINFO_FIELDNO 2
84
+ #define FUNCTIONCALLINFODATA_FNCOLLATION_FIELDNO 3
85
+ #define FUNCTIONCALLINFODATA_ISNULL_FIELDNO 4
86
+ #define FUNCTIONCALLINFODATA_NARGS_FIELDNO 5
87
+ #define FUNCTIONCALLINFODATA_ARG_FIELDNO 6
88
+ #define FUNCTIONCALLINFODATA_ARGNULL_FIELDNO 7
89
+ #define HEAPTUPLEDATA_DATA_FIELDNO 3
90
+ #define RETURNSETINFO_TYPE_FIELDNO 0
91
+ #define RETURNSETINFO_ECONTEXT_FIELDNO 1
92
+ #define RETURNSETINFO_EXPECTEDDESC_FIELDNO 2
93
+ #define RETURNSETINFO_ALLOWEDMODES_FIELDNO 3
94
+ #define RETURNSETINFO_RETURNMODE_FIELDNO 4
95
+ #define RETURNSETINFO_ISDONE_FIELDNO 5
96
+ #define RETURNSETINFO_SETRESULT_FIELDNO 6
97
+ #define RETURNSETINFO_SETDESC_FIELDNO 7
81
98
#define TUPLETABLESLOT_TUPLE_FIELDNO 5
82
99
#define TUPLETABLESLOT_TUPLEDESCRIPTOR_FIELDNO 6
83
100
#define TUPLETABLESLOT_VALUES_FIELDNO 10
@@ -273,13 +290,21 @@ GenerateInitFCInfo(LLVMBuilderRef builder, FunctionCallInfo fcinfo,
273
290
nargs_ptr , argnulls ;
274
291
275
292
context_ptr =
276
- LLVMBuildStructGEP (builder , fcinfo_llvm , 1 , "context_ptr" );
293
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
294
+ FUNCTIONCALLINFODATA_CONTEXT_FIELDNO ,
295
+ "context_ptr" );
277
296
resultinfo_ptr =
278
- LLVMBuildStructGEP (builder , fcinfo_llvm , 2 , "resultinfo_ptr" );
297
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
298
+ FUNCTIONCALLINFODATA_RESULTINFO_FIELDNO ,
299
+ "resultinfo_ptr" );
279
300
fncollation_ptr =
280
- LLVMBuildStructGEP (builder , fcinfo_llvm , 3 , "fncollation_ptr" );
301
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
302
+ FUNCTIONCALLINFODATA_FNCOLLATION_FIELDNO ,
303
+ "fncollation_ptr" );
281
304
nargs_ptr =
282
- LLVMBuildStructGEP (builder , fcinfo_llvm , 5 , "nargs_ptr" );
305
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
306
+ FUNCTIONCALLINFODATA_NARGS_FIELDNO ,
307
+ "nargs_ptr" );
283
308
284
309
LLVMBuildStore (builder ,
285
310
ConstPointer (
@@ -300,7 +325,9 @@ GenerateInitFCInfo(LLVMBuilderRef builder, FunctionCallInfo fcinfo,
300
325
* Zero-initialize `argnull`.
301
326
*/
302
327
StaticAssertStmt (sizeof (bool ) == sizeof (int8_t ), "bool is 8-bit" );
303
- argnulls = LLVMBuildStructGEP (builder , fcinfo_llvm , 7 , "argnull_ptr" );
328
+ argnulls = LLVMBuildStructGEP (builder , fcinfo_llvm ,
329
+ FUNCTIONCALLINFODATA_ARG_FIELDNO ,
330
+ "argnull_ptr" );
304
331
argnulls = LLVMBuildStructGEP (builder , argnulls , 0 , "argnull_ptr" );
305
332
GenerateMemSet (builder , 1 , argnulls ,
306
333
LLVMConstNull (LLVMInt8Type ()),
@@ -379,10 +406,13 @@ GenerateFunctionCallNCollNull(LLVMBuilderRef builder, FunctionCallInfo fcinfo,
379
406
LLVMValueRef functionRef = define_llvm_pg_function (
380
407
builder , fcinfo -> flinfo );
381
408
LLVMValueRef flinfo_ptr = LLVMBuildStructGEP (
382
- builder , fcinfo_llvm , 0 , "flinfo_ptr" );
383
- LLVMValueRef args = LLVMBuildStructGEP (builder , fcinfo_llvm , 6 , "args" );
409
+ builder , fcinfo_llvm , FUNCTIONCALLINFODATA_FLINFO_FIELDNO ,
410
+ "flinfo_ptr" );
411
+ LLVMValueRef args = LLVMBuildStructGEP (
412
+ builder , fcinfo_llvm , FUNCTIONCALLINFODATA_ARG_FIELDNO , "args" );
384
413
LLVMValueRef argnulls = LLVMBuildStructGEP (
385
- builder , fcinfo_llvm , 7 , "argnulls" );
414
+ builder , fcinfo_llvm , FUNCTIONCALLINFODATA_ARGNULL_FIELDNO ,
415
+ "argnulls" );
386
416
LLVMTypeRef fcinfo_type ;
387
417
LLVMValueRef resultinfo_ptr , rsinfo_isDone_ptr ;
388
418
int arg_index ;
@@ -398,7 +428,9 @@ GenerateFunctionCallNCollNull(LLVMBuilderRef builder, FunctionCallInfo fcinfo,
398
428
LLVMBuildStore (builder , attr [arg_index ].isNull , argnull_ptr );
399
429
}
400
430
401
- isNull_ptr = LLVMBuildStructGEP (builder , fcinfo_llvm , 4 , "isNull_ptr" );
431
+ isNull_ptr = LLVMBuildStructGEP (
432
+ builder , fcinfo_llvm , FUNCTIONCALLINFODATA_ISNULL_FIELDNO ,
433
+ "isNull_ptr" );
402
434
LLVMBuildStore (builder , LLVMConstNull (LLVMInt8Type ()), isNull_ptr );
403
435
404
436
LLVMBuildStore (builder ,
@@ -416,13 +448,16 @@ GenerateFunctionCallNCollNull(LLVMBuilderRef builder, FunctionCallInfo fcinfo,
416
448
if (retSet )
417
449
{
418
450
resultinfo_ptr =
419
- LLVMBuildStructGEP (builder , fcinfo_llvm , 2 , "resultinfo_ptr" );
451
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
452
+ FUNCTIONCALLINFODATA_RESULTINFO_FIELDNO ,
453
+ "resultinfo_ptr" );
420
454
resultinfo_ptr = LLVMBuildBitCast (builder ,
421
455
LLVMBuildLoad (builder , resultinfo_ptr , "resultinfo" ),
422
456
LLVMPointerType (BackendStructType (ReturnSetInfo ), 0 ),
423
457
"resultinfo" );
424
458
rsinfo_isDone_ptr =
425
- LLVMBuildStructGEP (builder , resultinfo_ptr , 5 , "&isDone" );
459
+ LLVMBuildStructGEP (builder , resultinfo_ptr ,
460
+ RETURNSETINFO_ISDONE_FIELDNO , "&isDone" );
426
461
}
427
462
428
463
LLVMGetParamTypes (LLVMGetElementType (LLVMTypeOf (functionRef )),
@@ -451,26 +486,44 @@ FCInfoLLVMAddRetSet(LLVMBuilderRef builder, ExprContext* econtext,
451
486
TupleDesc expectedDesc , LLVMValueRef fcinfo_llvm )
452
487
{
453
488
LLVMValueRef resultinfo_ptr =
454
- LLVMBuildStructGEP (builder , fcinfo_llvm , 2 , "resultinfo_ptr" );
489
+ LLVMBuildStructGEP (builder , fcinfo_llvm ,
490
+ FUNCTIONCALLINFODATA_RESULTINFO_FIELDNO ,
491
+ "resultinfo_ptr" );
455
492
LLVMTypeRef rsinfoType = BackendStructType (ReturnSetInfo );
456
493
LLVMValueRef rsinfo_ptr = LLVMBuildAlloca (builder , rsinfoType , "rsinfo" );
457
494
LLVMValueRef ret = rsinfo_ptr ;
458
495
LLVMValueRef rsinfo_type_ptr =
459
- LLVMBuildStructGEP (builder , rsinfo_ptr , 0 , "&rsinfo->type" );
496
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
497
+ RETURNSETINFO_TYPE_FIELDNO ,
498
+ "&rsinfo->type" );
460
499
LLVMValueRef rsinfo_econtext_ptr =
461
- LLVMBuildStructGEP (builder , rsinfo_ptr , 1 , "&rsinfo->econtext" );
500
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
501
+ RETURNSETINFO_ECONTEXT_FIELDNO ,
502
+ "&rsinfo->econtext" );
462
503
LLVMValueRef rsinfo_expectedDesc_ptr =
463
- LLVMBuildStructGEP (builder , rsinfo_ptr , 2 , "&rsinfo->expectedDesc" );
504
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
505
+ RETURNSETINFO_EXPECTEDDESC_FIELDNO ,
506
+ "&rsinfo->expectedDesc" );
464
507
LLVMValueRef rsinfo_allowedModes_ptr =
465
- LLVMBuildStructGEP (builder , rsinfo_ptr , 3 , "&rsinfo->allowedModes" );
508
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
509
+ RETURNSETINFO_ALLOWEDMODES_FIELDNO ,
510
+ "&rsinfo->allowedModes" );
466
511
LLVMValueRef rsinfo_returnMode_ptr =
467
- LLVMBuildStructGEP (builder , rsinfo_ptr , 4 , "&rsinfo->returnMode" );
512
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
513
+ RETURNSETINFO_RETURNMODE_FIELDNO ,
514
+ "&rsinfo->returnMode" );
468
515
LLVMValueRef rsinfo_isDone_ptr =
469
- LLVMBuildStructGEP (builder , rsinfo_ptr , 5 , "&rsinfo->isDone" );
516
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
517
+ RETURNSETINFO_ISDONE_FIELDNO ,
518
+ "&rsinfo->isDone" );
470
519
LLVMValueRef rsinfo_setResult_ptr =
471
- LLVMBuildStructGEP (builder , rsinfo_ptr , 6 , "&rsinfo->setResult" );
520
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
521
+ RETURNSETINFO_SETRESULT_FIELDNO ,
522
+ "&rsinfo->setResult" );
472
523
LLVMValueRef rsinfo_setDesc_ptr =
473
- LLVMBuildStructGEP (builder , rsinfo_ptr , 7 , "&rsinfo->setDesc" );
524
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
525
+ RETURNSETINFO_SETDESC_FIELDNO ,
526
+ "&rsinfo->setDesc" );
474
527
475
528
LLVMBuildStore (builder , LLVMConstInt (
476
529
LLVMInt32Type (), T_ReturnSetInfo , false), rsinfo_type_ptr );
@@ -1047,7 +1100,8 @@ GenerateExpr(LLVMBuilderRef builder,
1047
1100
builder , define_heap_form_tuple , heap_form_tuple_args , 3 );
1048
1101
1049
1102
/* HeapTupleGetDatum */
1050
- t_data = LLVMBuildStructGEP (builder , tuple , 3 , "t_data_ptr" );
1103
+ t_data = LLVMBuildStructGEP (
1104
+ builder , tuple , HEAPTUPLEDATA_DATA_FIELDNO , "t_data_ptr" );
1051
1105
t_data = LLVMBuildLoad (builder , t_data , "t_data" );
1052
1106
result .value = GenerateCallBackend (
1053
1107
builder , define_HeapTupleHeaderGetDatum , & t_data , 1 );
@@ -1310,8 +1364,9 @@ GenerateExpr(LLVMBuilderRef builder,
1310
1364
BackendStructType (TupleTableSlot ), 0 ), 0 ),
1311
1365
& fexprstate -> funcResultSlot );
1312
1366
LLVMValueRef rsinfo_returnMode_ptr =
1313
- LLVMBuildStructGEP (builder , rsinfo_ptr , 4 ,
1314
- "&rsinfo->returnMode" );
1367
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
1368
+ RETURNSETINFO_RETURNMODE_FIELDNO ,
1369
+ "&rsinfo->returnMode" );
1315
1370
LLVMValueRef returnMode = LLVMBuildLoad (
1316
1371
builder , rsinfo_returnMode_ptr , "rsinfo->returnMode" );
1317
1372
LLVMValueRef cond = LLVMBuildICmp (builder , LLVMIntEQ , returnMode ,
@@ -1341,8 +1396,9 @@ GenerateExpr(LLVMBuilderRef builder,
1341
1396
LLVMAddIncoming (result .isDone , & end_llvm ,
1342
1397
& materialize_bb , 1 );
1343
1398
rsinfo_setResult_ptr =
1344
- LLVMBuildStructGEP (builder , rsinfo_ptr , 6 ,
1345
- "&rsinfo->setResult" );
1399
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
1400
+ RETURNSETINFO_SETRESULT_FIELDNO ,
1401
+ "&rsinfo->setResult" );
1346
1402
setResult = LLVMBuildLoad (
1347
1403
builder , rsinfo_setResult_ptr , "rsinfo->setResult" );
1348
1404
@@ -1354,8 +1410,9 @@ GenerateExpr(LLVMBuilderRef builder,
1354
1410
LLVMPositionBuilderAtEnd (builder , restart_bb );
1355
1411
LLVMBuildStore (builder , setResult , funcResultStore_ptr );
1356
1412
rsinfo_setDesc_ptr =
1357
- LLVMBuildStructGEP (builder , rsinfo_ptr , 7 ,
1358
- "&rsinfo->setDesc" );
1413
+ LLVMBuildStructGEP (builder , rsinfo_ptr ,
1414
+ RETURNSETINFO_SETDESC_FIELDNO ,
1415
+ "&rsinfo->setDesc" );
1359
1416
setDesc = LLVMBuildLoad (
1360
1417
builder , rsinfo_setDesc_ptr , "rsinfo->setDesc" );
1361
1418
if (fexprstate -> funcResultDesc )
0 commit comments