diff --git a/analysis/test/src/pointers.rs b/analysis/test/src/pointers.rs
index fe0b88374f..85d66299d1 100644
--- a/analysis/test/src/pointers.rs
+++ b/analysis/test/src/pointers.rs
@@ -75,7 +75,7 @@ pub struct S {
     pub field4: T,
 }
 #[no_mangle]
-pub static mut global: *mut S = 0 as *const S as *mut S;
+pub static mut global: *mut S = std::ptr::null_mut();
 #[no_mangle]
 pub unsafe extern "C" fn malloc_wrapper(mut size: size_t) -> *mut libc::c_void {
     return malloc(size);
@@ -105,7 +105,7 @@ pub unsafe extern "C" fn simple() {
     (*y).field4 = T {
         field: 0i32,
         field2: 0u64,
-        field3: 0 as *const S,
+        field3: std::ptr::null(),
         field4: 0i32,
     };
     let s = *y;
@@ -232,7 +232,7 @@ pub unsafe extern "C" fn fdevent_unregister(mut ev: *mut fdevents, mut fd: libc:
         return;
     }
     let ref mut fresh1 = *((*ev).fdarray).offset(fd as isize);
-    *fresh1 = 0 as *mut fdnode;
+    *fresh1 = std::ptr::null_mut();
     fdnode_free(fdn);
 }
 unsafe extern "C" fn fdnode_free(mut fdn: *mut fdnode) {
@@ -345,7 +345,7 @@ pub unsafe extern "C" fn invalid() {
         b"%i\n\x00" as *const u8 as *const libc::c_char,
         (*global).field,
     );
-    global = 0 as *mut S;
+    global = std::ptr::null_mut();
     free(s as *mut libc::c_void);
 }
 pub unsafe extern "C" fn testing() {
@@ -416,14 +416,14 @@ pub unsafe extern "C" fn test_ref_field() {
     let t =  T {
         field: 0i32,
         field2: 0u64,
-        field3: 0 as *const S,
+        field3: std::ptr::null(),
         field4: 0i32,
     };
 
     let ref mut s = S {
         field: 0i32,
         field2: 0u64,
-        field3: 0 as *const S,
+        field3: std::ptr::null(),
         field4: t,
     };
     s.field4.field4 = s.field4.field4;
diff --git a/pdg/src/snapshots/c2rust_pdg__tests__analysis_test_pdg_snapshot_debug.snap b/pdg/src/snapshots/c2rust_pdg__tests__analysis_test_pdg_snapshot_debug.snap
index 7cb168250f..bdae795391 100644
--- a/pdg/src/snapshots/c2rust_pdg__tests__analysis_test_pdg_snapshot_debug.snap
+++ b/pdg/src/snapshots/c2rust_pdg__tests__analysis_test_pdg_snapshot_debug.snap
@@ -18,11 +18,13 @@ nodes_that_need_write = []
 g {
 	n[0]: copy        _    => _14   @ bb6[4]:  fn main;                _14 = null_mut();
 	n[1]: copy        n[0] => _1    @ bb0[0]:  fn once;                _13 = once(move _14);
-	n[2]: int_to_ptr  _    => _17   @ bb4[29]: fn simple;              _17 = const 0_usize as *const pointers::S (PointerFromExposedAddress);
-	n[3]: value.store _    => _20.* @ bb4[7]:  fn invalid;             (*_20) = const 0_usize as *mut pointers::S (PointerFromExposedAddress);
-	n[4]: value.store _    => _17.* @ bb8[4]:  fn fdevent_unregister;  (*_17) = const 0_usize as *mut pointers::fdnode_st (PointerFromExposedAddress);
-	n[5]: int_to_ptr  _    => _2    @ bb0[2]:  fn test_ref_field;      _2 = const 0_usize as *const pointers::S (PointerFromExposedAddress);
-	n[6]: int_to_ptr  _    => _5    @ bb0[8]:  fn test_ref_field;      _5 = const 0_usize as *const pointers::S (PointerFromExposedAddress);
+	n[2]: copy        _    => _17   @ bb4[29]: fn simple;              _17 = null();
+	n[3]: copy        _    => _20   @ bb4[6]:  fn invalid;             _20 = null_mut();
+	n[4]: value.store n[3] => _21.* @ bb5[2]:  fn invalid;             (*_21) = move _20;
+	n[5]: copy        _    => _22   @ bb8[5]:  fn fdevent_unregister;  _22 = null_mut();
+	n[6]: value.store n[5] => _17.* @ bb9[0]:  fn fdevent_unregister;  (*_17) = move _22;
+	n[7]: copy        _    => _2    @ bb0[2]:  fn test_ref_field;      _2 = null();
+	n[8]: copy        _    => _5    @ bb1[5]:  fn test_ref_field;      _5 = null();
 }
 nodes_that_need_write = []
 
@@ -48,9 +50,9 @@ g {
 	n[1]: copy    n[0] => _1  @ bb2[1]: fn simple;  _1 = move _2 as *mut pointers::S (Misc);
 	n[2]: copy    n[1] => _5  @ bb2[5]: fn simple;  _5 = _1;
 	n[3]: field.0 n[1] => _10 @ bb4[5]: fn simple;  _10 = &raw const ((*_1).0: i32);
-	n[4]: copy    n[2] => _24 @ bb5[5]: fn simple;  _24 = _5;
-	n[5]: copy    n[4] => _23 @ bb5[6]: fn simple;  _23 = move _24 as *mut libc::c_void (Misc);
-	n[6]: free    n[5] => _22 @ bb5[8]: fn simple;  _22 = free(move _23);
+	n[4]: copy    n[2] => _24 @ bb6[5]: fn simple;  _24 = _5;
+	n[5]: copy    n[4] => _23 @ bb6[6]: fn simple;  _23 = move _24 as *mut libc::c_void (Misc);
+	n[6]: free    n[5] => _22 @ bb6[8]: fn simple;  _22 = free(move _23);
 }
 nodes_that_need_write = []
 
@@ -74,11 +76,11 @@ g {
 	n[16]: field.2     n[3]  => _      @ bb4[25]: fn simple;  ((*_1).2: *const pointers::S) = move _15;
 	n[17]: addr.store  n[16] => _      @ bb4[25]: fn simple;  ((*_1).2: *const pointers::S) = move _15;
 	n[18]: value.store n[15] => _1.*.2 @ bb4[25]: fn simple;  ((*_1).2: *const pointers::S) = move _15;
-	n[19]: field.3     n[1]  => _      @ bb4[32]: fn simple;  ((*_6).3: pointers::T) = move _16;
-	n[20]: addr.store  n[19] => _      @ bb4[32]: fn simple;  ((*_6).3: pointers::T) = move _16;
-	n[21]: addr.load   n[1]  => _      @ bb4[35]: fn simple;  _18 = (*_6);
-	n[22]: addr.store  n[3]  => _      @ bb4[39]: fn simple;  (*_1) = move _19;
-	n[23]: copy        n[3]  => _21    @ bb4[43]: fn simple;  _21 = _1;
+	n[19]: field.3     n[1]  => _      @ bb5[2]:  fn simple;  ((*_6).3: pointers::T) = move _16;
+	n[20]: addr.store  n[19] => _      @ bb5[2]:  fn simple;  ((*_6).3: pointers::T) = move _16;
+	n[21]: addr.load   n[1]  => _      @ bb5[5]:  fn simple;  _18 = (*_6);
+	n[22]: addr.store  n[3]  => _      @ bb5[9]:  fn simple;  (*_1) = move _19;
+	n[23]: copy        n[3]  => _21    @ bb5[13]: fn simple;  _21 = _1;
 	n[24]: copy        n[23] => _2     @ bb0[0]:  fn recur;   _20 = recur(const 3_i32, move _21);
 	n[25]: copy        n[24] => _13    @ bb8[3]:  fn recur;   _13 = _2;
 	n[26]: copy        n[25] => _2     @ bb0[0]:  fn recur;   _9 = recur(move _10, move _13);
@@ -363,8 +365,8 @@ g {
 	n[10]: copy       _     => _19 @ bb3[17]: fn invalid;   _19 = const {alloc8: *mut *mut pointers::S};
 	n[11]: field.0    n[10] => _18 @ bb3[18]: fn invalid;   _18 = ((*(*_19)).0: i32);
 	n[12]: addr.load  n[11] => _   @ bb3[18]: fn invalid;   _18 = ((*(*_19)).0: i32);
-	n[13]: copy       _     => _20 @ bb4[6]:  fn invalid;   _20 = const {alloc8: *mut *mut pointers::S};
-	n[14]: addr.store n[13] => _   @ bb4[7]:  fn invalid;   (*_20) = const 0_usize as *mut pointers::S (PointerFromExposedAddress);
+	n[13]: copy       _     => _21 @ bb5[1]:  fn invalid;   _21 = const {alloc8: *mut *mut pointers::S};
+	n[14]: addr.store n[13] => _   @ bb5[2]:  fn invalid;   (*_21) = move _20;
 }
 nodes_that_need_write = [14, 13, 9, 8, 5, 4, 1, 0]
 
@@ -386,9 +388,9 @@ g {
 	n[5]:  value.store n[4] => _6.* @ bb2[10]: fn invalid;  (*_6) = move _5;
 	n[6]:  field.0     n[1] => _12  @ bb2[25]: fn invalid;  _12 = ((*_1).0: i32);
 	n[7]:  addr.load   n[6] => _    @ bb2[25]: fn invalid;  _12 = ((*_1).0: i32);
-	n[8]:  copy        n[1] => _23  @ bb4[12]: fn invalid;  _23 = _1;
-	n[9]:  copy        n[8] => _22  @ bb4[13]: fn invalid;  _22 = move _23 as *mut libc::c_void (Misc);
-	n[10]: free        n[9] => _21  @ bb4[15]: fn invalid;  _21 = free(move _22);
+	n[8]:  copy        n[1] => _24  @ bb5[8]:  fn invalid;  _24 = _1;
+	n[9]:  copy        n[8] => _23  @ bb5[9]:  fn invalid;  _23 = move _24 as *mut libc::c_void (Misc);
+	n[10]: free        n[9] => _22  @ bb5[11]: fn invalid;  _22 = free(move _23);
 }
 nodes_that_need_write = [3, 2, 1, 0]
 
@@ -458,7 +460,7 @@ g {
 	n[12]: value.load  _     => _19    @ bb7[4]:  fn fdevent_unregister;  _19 = ((*_1).0: *mut *mut pointers::fdnode_st);
 	n[13]: offset[0]   n[12] => _18    @ bb7[10]: fn fdevent_unregister;  _18 = offset(move _19, move _20);
 	n[14]: copy        n[13] => _17    @ bb8[3]:  fn fdevent_unregister;  _17 = &mut (*_18);
-	n[15]: addr.store  n[14] => _      @ bb8[4]:  fn fdevent_unregister;  (*_17) = const 0_usize as *mut pointers::fdnode_st (PointerFromExposedAddress);
+	n[15]: addr.store  n[14] => _      @ bb9[0]:  fn fdevent_unregister;  (*_17) = move _22;
 	n[16]: copy        n[1]  => _20    @ bb6[6]:  fn lighttpd_test;       _20 = _1;
 	n[17]: copy        n[16] => _19    @ bb6[7]:  fn lighttpd_test;       _19 = move _20 as *mut libc::c_void (Misc);
 	n[18]: free        n[17] => _18    @ bb6[9]:  fn lighttpd_test;       _18 = free(move _19);
@@ -567,8 +569,8 @@ g {
 	n[29]: value.load  _     => _3     @ bb1[2]:  fn fdevent_unregister;             _3 = (*_4);
 	n[30]: copy        n[29] => _12    @ bb1[11]: fn fdevent_unregister;             _12 = _3;
 	n[31]: ptr_to_int  n[30] => _      @ bb1[12]: fn fdevent_unregister;             _11 = move _12 as usize (PointerExposeAddress);
-	n[32]: copy        n[29] => _23    @ bb8[7]:  fn fdevent_unregister;             _23 = _3;
-	n[33]: copy        n[32] => _1     @ bb0[0]:  fn fdnode_free;                    _22 = fdnode_free(move _23);
+	n[32]: copy        n[29] => _24    @ bb9[4]:  fn fdevent_unregister;             _24 = _3;
+	n[33]: copy        n[32] => _1     @ bb0[0]:  fn fdnode_free;                    _23 = fdnode_free(move _24);
 	n[34]: copy        n[33] => _4     @ bb0[3]:  fn fdnode_free;                    _4 = _1;
 	n[35]: copy        n[34] => _3     @ bb0[4]:  fn fdnode_free;                    _3 = move _4 as *mut libc::c_void (Misc);
 	n[36]: free        n[35] => _2     @ bb0[6]:  fn fdnode_free;                    _2 = free(move _3);
@@ -942,16 +944,16 @@ g {
 nodes_that_need_write = [75, 74, 73, 66, 65, 64, 63, 62, 61, 54, 53, 52, 45, 44, 43, 33, 32, 31, 27, 26, 25, 15, 14, 13, 6, 5, 4, 0]
 
 g {
-	n[0]: &_4        _    => _3 @ bb0[15]: fn test_ref_field;  _3 = &mut _4;
-	n[1]: field.3    n[0] => _  @ bb0[17]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
-	n[2]: field.3    n[1] => _7 @ bb0[17]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
-	n[3]: addr.load  n[2] => _  @ bb0[17]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
-	n[4]: field.3    n[0] => _  @ bb0[18]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
-	n[5]: field.3    n[4] => _  @ bb0[18]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
-	n[6]: addr.store n[5] => _  @ bb0[18]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
+	n[0]: &_4        _    => _3 @ bb2[6]: fn test_ref_field;  _3 = &mut _4;
+	n[1]: field.3    n[0] => _  @ bb2[8]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
+	n[2]: field.3    n[1] => _7 @ bb2[8]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
+	n[3]: addr.load  n[2] => _  @ bb2[8]: fn test_ref_field;  _7 = (((*_3).3: pointers::T).3: i32);
+	n[4]: field.3    n[0] => _  @ bb2[9]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
+	n[5]: field.3    n[4] => _  @ bb2[9]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
+	n[6]: addr.store n[5] => _  @ bb2[9]: fn test_ref_field;  (((*_3).3: pointers::T).3: i32) = move _7;
 }
 nodes_that_need_write = [6, 5, 4, 0]
 
 num_graphs = 64
-num_nodes = 694
+num_nodes = 696