diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 9a2d0527f81bb0ed0166fb699cefd311fa842757..fc10d30f45be7aac863751f64d77c7a899a08148 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -1763,8 +1763,8 @@ Datum
 plperl_call_handler(PG_FUNCTION_ARGS)
 {
 	Datum		retval;
-	plperl_call_data *save_call_data = current_call_data;
-	plperl_interp_desc *oldinterp = plperl_active_interp;
+	plperl_call_data *volatile save_call_data = current_call_data;
+	plperl_interp_desc *volatile oldinterp = plperl_active_interp;
 	plperl_call_data this_call_data;
 
 	/* Initialize current-call status record */
@@ -1813,8 +1813,8 @@ plperl_inline_handler(PG_FUNCTION_ARGS)
 	FunctionCallInfoData fake_fcinfo;
 	FmgrInfo	flinfo;
 	plperl_proc_desc desc;
-	plperl_call_data *save_call_data = current_call_data;
-	plperl_interp_desc *oldinterp = plperl_active_interp;
+	plperl_call_data *volatile save_call_data = current_call_data;
+	plperl_interp_desc *volatile oldinterp = plperl_active_interp;
 	plperl_call_data this_call_data;
 	ErrorContextCallback pl_error_context;