Yeah - how are they relying on them in a non-asserts build anyway? (were we naming certain things regardless of +/-Asserts? (well, I know we were naming some things, but mostly down in LLVM, I thought Clang generally used the IRBuilder & thus didn't name things in non-Asserts builds))
On Mon, Mar 14, 2016 at 6:36 AM, Chandler Carruth via cfe-commits < cfe-commits@lists.llvm.org> wrote: > A long time ago I argued that the sanitizers should be using debug info > instead of alloca names for this, and I really thought that they had > implemented this... Is that not the case? > > It is really bad that the sanitizers are relying on this stuff... > > On Mon, Mar 14, 2016 at 2:28 PM Benjamin Kramer via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: d0k >> Date: Mon Mar 14 08:23:58 2016 >> New Revision: 263429 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=263429&view=rev >> Log: >> [Frontend] Disable value name discarding for all sanitizers. >> >> ASan also relies on names on allocas and will emit unhelpful output if >> they're not present. Just force-enable value names for now. Should >> unbreak release builds of asan. >> >> Modified: >> cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> >> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=263429&r1=263428&r2=263429&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) >> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Mar 14 08:23:58 2016 >> @@ -541,6 +541,7 @@ static bool ParseCodeGenArgs(CodeGenOpti >> Opts.DisableFPElim = >> (Args.hasArg(OPT_mdisable_fp_elim) || Args.hasArg(OPT_pg)); >> Opts.DisableFree = Args.hasArg(OPT_disable_free); >> + Opts.DiscardValueNames = Args.hasArg(OPT_discard_value_names); >> Opts.DisableTailCalls = Args.hasArg(OPT_mdisable_tail_calls); >> Opts.FloatABI = Args.getLastArgValue(OPT_mfloat_abi); >> if (Arg *A = Args.getLastArg(OPT_meabi)) { >> @@ -793,12 +794,6 @@ static bool ParseCodeGenArgs(CodeGenOpti >> Opts.CudaGpuBinaryFileNames = >> Args.getAllArgValues(OPT_fcuda_include_gpubinary); >> >> - // DiscardValueNames is set here so that it can depend (perhaps >> temporarily) >> - // on other options. >> - // We check SanitizeMemoryTrackOrigins here because the backend pass >> depends >> - // on the name of the alloca in order to print out names. >> - Opts.DiscardValueNames = >> - Args.hasArg(OPT_discard_value_names) && >> !Opts.SanitizeMemoryTrackOrigins; >> return Success; >> } >> >> @@ -2158,6 +2153,12 @@ bool CompilerInvocation::CreateFromArgs( >> if (Res.getFrontendOpts().ProgramAction == frontend::RewriteObjC) >> Res.getLangOpts()->ObjCExceptions = 1; >> } >> + >> + // FIXME: Override value name discarding when sanitizers are used >> because the >> + // backend passes depend on the name of the alloca in order to print >> out >> + // names. >> + Res.getCodeGenOpts().DiscardValueNames &= >> Res.getLangOpts()->Sanitize.empty(); >> + >> // FIXME: ParsePreprocessorArgs uses the FileManager to read the >> contents of >> // PCH file and find the original header name. Remove the need to do >> that in >> // ParsePreprocessorArgs and remove the FileManager >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits