[PATCH] D34299: [ubsan] Improve diagnostics for return value checks (clang)

Filipe Cabecinhas via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 22 05:35:10 PDT 2017

filcab added a comment.

Splitting the attrloc from the useloc might make sense since we would be able to emit attrloc just once. But I don't see why we need to store/load those pointers in runtime instead of just caching the `Constant*` in `CodeGenFunction`.
I'd also like to have some asserts and explicit resets to `nullptr` after use on the `ReturnLocation` variable, if possible.

Comment at: lib/CodeGen/CGStmt.cpp:1035
+    assert(ReturnLocation.isValid() && "No valid return location");
+    Builder.CreateStore(Builder.CreateBitCast(SLocPtr, Int8PtrTy),
+                        ReturnLocation);
Can't you just keep the `Constant*` around and use it later for the static data? Instead of creating a global var and have runtime store/load?

Comment at: lib/CodeGen/CodeGenFunction.h:1412
+  /// source location for diagnostics.
+  Address ReturnLocation = Address::invalid();
Maybe `CurrentReturnLocation`?


More information about the cfe-commits mailing list