Hm? What were the other (unrelated) failures? ср, 18 февр. 2015, 1:43, Reid Kleckner <[email protected]>:
> Should be fixed in r229575. It took me a while to clear up the other > unrelated check-asan failures on my system. > > On Fri, Feb 6, 2015 at 8:11 AM, Timur Iskhodzhanov <[email protected]> > wrote: > >> ping >> >> Thu Feb 05 2015 at 4:53:30 PM, Timur Iskhodzhanov <[email protected]>: >> >> Interesting: this has broken down the dll_noreturn ASan tests (run as >>> part of check-asan and check-asan-dynamic), which uses -O0 (yes, o-zero). >>> Can you please make sure this doesn't affect -O0? >>> >>> >>> On Thu Feb 05 2015 at 2:52:57 AM Reid Kleckner <[email protected]> >>> wrote: >>> >>>> Author: rnk >>>> Date: Wed Feb 4 17:45:07 2015 >>>> New Revision: 228236 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=228236&view=rev >>>> Log: >>>> Driver: Stop forcing frame pointer usage on Windows >>>> >>>> Previously, we would use a frame pointer by default on non-Linux OSs. On >>>> Linux, any optimization flags imply -fomit-frame-pointer. XCore always >>>> defaulted to -fomit-frame-pointer. >>>> >>>> Now x86 Windows matches our behavior on Linux. All other ISAs supported >>>> by Windows (ARM, x64) use xdata information, and frame pointers aren't >>>> useful. Frame pointers are now off by default for such targets, but can >>>> be forced via -fno-omit-frame-pointer and code using alloca(). >>>> >>>> In fact, on Win64 our frame-pointer prologue is not describable with >>>> UNWIND_INFO. This change is a workaround to avoid using the broken FP >>>> using prologue for most functions. This is PR22467. >>>> >>>> Modified: >>>> cfe/trunk/lib/Driver/Tools.cpp >>>> >>>> Modified: cfe/trunk/lib/Driver/Tools.cpp >>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Too >>>> ls.cpp?rev=228236&r1=228235&r2=228236&view=diff >>>> ============================================================ >>>> ================== >>>> --- cfe/trunk/lib/Driver/Tools.cpp (original) >>>> +++ cfe/trunk/lib/Driver/Tools.cpp Wed Feb 4 17:45:07 2015 >>>> @@ -2288,27 +2288,49 @@ static bool addSanitizerRuntimes(const T >>>> return !StaticRuntimes.empty(); >>>> } >>>> >>>> +static bool areOptimizationsEnabled(const ArgList &Args) { >>>> + // Find the last -O arg and see if it is non-zero. >>>> + if (Arg *A = Args.getLastArg(options::OPT_O_Group)) >>>> + return !A->getOption().matches(options::OPT_O0); >>>> + // Defaults to -O0. >>>> + return false; >>>> +} >>>> + >>>> static bool shouldUseFramePointerForTarget(const ArgList &Args, >>>> const llvm::Triple &Triple) >>>> { >>>> - switch (Triple.getArch()) { >>>> - // Don't use a frame pointer on linux if optimizing for certain >>>> targets. >>>> - case llvm::Triple::mips64: >>>> - case llvm::Triple::mips64el: >>>> - case llvm::Triple::mips: >>>> - case llvm::Triple::mipsel: >>>> - case llvm::Triple::systemz: >>>> - case llvm::Triple::x86: >>>> - case llvm::Triple::x86_64: >>>> - if (Triple.isOSLinux()) >>>> - if (Arg *A = Args.getLastArg(options::OPT_O_Group)) >>>> - if (!A->getOption().matches(options::OPT_O0)) >>>> - return false; >>>> - return true; >>>> - case llvm::Triple::xcore: >>>> + // XCore never wants frame pointers, regardless of OS. >>>> + if (Triple.getArch() == llvm::Triple::xcore) { >>>> return false; >>>> - default: >>>> - return true; >>>> } >>>> + >>>> + if (Triple.isOSLinux()) { >>>> + switch (Triple.getArch()) { >>>> + // Don't use a frame pointer on linux if optimizing for certain >>>> targets. >>>> + case llvm::Triple::mips64: >>>> + case llvm::Triple::mips64el: >>>> + case llvm::Triple::mips: >>>> + case llvm::Triple::mipsel: >>>> + case llvm::Triple::systemz: >>>> + case llvm::Triple::x86: >>>> + case llvm::Triple::x86_64: >>>> + return !areOptimizationsEnabled(Args); >>>> + default: >>>> + return true; >>>> + } >>>> + } >>>> + >>>> + if (Triple.isOSWindows()) { >>>> + switch (Triple.getArch()) { >>>> + case llvm::Triple::x86: >>>> + return !areOptimizationsEnabled(Args); >>>> + default: >>>> + // All other supported Windows ISAs use xdata unwind >>>> information, so frame >>>> + // pointers are not generally useful. >>>> + return false; >>>> + } >>>> + } >>>> + >>>> + return true; >>>> } >>>> >>>> static bool shouldUseFramePointer(const ArgList &Args, >>>> >>>> >>>> _______________________________________________ >>>> cfe-commits mailing list >>>> [email protected] >>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>>> >>> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
