Fix iterator invalidation issue when building options. (#8103)

diff --git a/llvm-external-projects/iree-compiler-api/python/IREECTransforms.cpp b/llvm-external-projects/iree-compiler-api/python/IREECTransforms.cpp
index c7c1d7a..74029b1 100644
--- a/llvm-external-projects/iree-compiler-api/python/IREECTransforms.cpp
+++ b/llvm-external-projects/iree-compiler-api/python/IREECTransforms.cpp
@@ -60,7 +60,10 @@
   std::vector<const char *> cArgs;
   for (auto &argObject : args) {
     allocedArgs.push_back(py::cast<std::string>(argObject));
-    cArgs.push_back(allocedArgs.back().c_str());
+  }
+  // Can only get c_str() after finished mutating the vector.
+  for (auto &argStr : allocedArgs) {
+    cArgs.push_back(argStr.c_str());
   }
 
   std::string errorMessage;