From c20a80092c15c6da5de2e5829be88e2009d5899f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20Gr=C3=A4nitz?= Date: Wed, 23 Nov 2022 11:19:13 +0100 Subject: [PATCH] [ObjC][ARC] Fix UB in ObjCARCOpt with -enable-objc-arc-opts=false When ObjCARCOpt::run() returned early, Changed and CFGChanged were never initialized. CFGChanged is read unconditionally afterwards. This came up in the course of D137942. --- llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 9834679..d703468 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -481,8 +481,8 @@ namespace { /// The main ARC optimization pass. class ObjCARCOpt { - bool Changed; - bool CFGChanged; + bool Changed = false; + bool CFGChanged = false; ProvenanceAnalysis PA; /// A cache of references to runtime entry point constants. -- 2.7.4