@@ -616,18 +616,21 @@ def process_Alloc(self, insn):
616
616
llalloc = self .llbuilder .alloca (self .llty_of_type (insn .type , bare = True ))
617
617
for index , operand in enumerate (insn .operands ):
618
618
lloperand = self .map (operand )
619
- llfieldptr = self .llbuilder .gep (llalloc , [self .llindex (0 ), self .llindex (index )])
619
+ llfieldptr = self .llbuilder .gep (llalloc , [self .llindex (0 ), self .llindex (index )],
620
+ inbounds = True )
620
621
self .llbuilder .store (lloperand , llfieldptr )
621
622
return llalloc
622
623
623
624
def llptr_to_var (self , llenv , env_ty , var_name , var_type = None ):
624
625
if var_name in env_ty .params and (var_type is None or
625
626
env_ty .params [var_name ] == var_type ):
626
627
var_index = list (env_ty .params .keys ()).index (var_name )
627
- return self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (var_index )])
628
+ return self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (var_index )],
629
+ inbounds = True )
628
630
else :
629
631
outer_index = list (env_ty .params .keys ()).index ("$outer" )
630
- llptr = self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (outer_index )])
632
+ llptr = self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (outer_index )],
633
+ inbounds = True )
631
634
llouterenv = self .llbuilder .load (llptr )
632
635
llouterenv .metadata ['invariant.load' ] = self .empty_metadata
633
636
return self .llptr_to_var (llouterenv , env_ty .params ["$outer" ], var_name )
@@ -671,14 +674,14 @@ def process_GetAttr(self, insn):
671
674
else :
672
675
llptr = self .llbuilder .gep (self .map (insn .object ()),
673
676
[self .llindex (0 ), self .llindex (self .attr_index (insn ))],
674
- name = insn .name )
677
+ inbounds = True , name = insn .name )
675
678
return self .llbuilder .load (llptr )
676
679
677
680
def process_SetAttr (self , insn ):
678
681
assert builtins .is_allocated (insn .object ().type )
679
682
llptr = self .llbuilder .gep (self .map (insn .object ()),
680
683
[self .llindex (0 ), self .llindex (self .attr_index (insn ))],
681
- name = insn .name )
684
+ inbounds = True , name = insn .name )
682
685
return self .llbuilder .store (self .map (insn .value ()), llptr )
683
686
684
687
def process_GetElem (self , insn ):
@@ -876,7 +879,8 @@ def process_Builtin(self, insn):
876
879
def get_outer (llenv , env_ty ):
877
880
if "$outer" in env_ty .params :
878
881
outer_index = list (env_ty .params .keys ()).index ("$outer" )
879
- llptr = self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (outer_index )])
882
+ llptr = self .llbuilder .gep (llenv , [self .llindex (0 ), self .llindex (outer_index )],
883
+ inbounds = True )
880
884
llouterenv = self .llbuilder .load (llptr )
881
885
llouterenv .metadata ['invariant.load' ] = self .empty_metadata
882
886
return self .llptr_to_var (llouterenv , env_ty .params ["$outer" ], var_name )
@@ -1258,7 +1262,8 @@ def process_LandingPad(self, insn):
1258
1262
cleanup = True )
1259
1263
llrawexn = self .llbuilder .extract_value (lllandingpad , 1 )
1260
1264
llexn = self .llbuilder .bitcast (llrawexn , self .llty_of_type (insn .type ))
1261
- llexnnameptr = self .llbuilder .gep (llexn , [self .llindex (0 ), self .llindex (0 )])
1265
+ llexnnameptr = self .llbuilder .gep (llexn , [self .llindex (0 ), self .llindex (0 )],
1266
+ inbounds = True )
1262
1267
llexnname = self .llbuilder .load (llexnnameptr )
1263
1268
1264
1269
for target , typ in insn .clauses ():
0 commit comments