skia2/tools
Mike Klein a9609ea8c5 turn on -Wreturn-std-move-in-c++11
This CL has a complicated back story, but it's concrete change is
simple, just turning the warning on and converting a bunch of

    return foo;

to

    return std::move(foo);

These changes are exclusively in places where RVO and NRVO do not apply,
so it should not conflict with warnings like -Wpessimizing-move.

Since C++11, when you return a named local and its type doesn't match
the declared return type exactly, there's an implicit std::move()
wrapped around the value (what I'm making explicit here) so the move
constructor gets an opportunity to take precedence over the copy
constructor.  You can read about this implicit move here under the
section "automatic move from local variables and parameters":
https://en.cppreference.com/w/cpp/language/return#Notes.

This situation comes up for us with smart pointers: a function declares
its return type as std::unique_ptr<Base> or sk_sp<Base>, and we return a
std::unique_ptr<Impl> or sk_sp<Impl>.  Those types don't match exactly,
so RVO and NRVO don't come into play.  They've always been going through
move constructors, and that's not changed here, just made explicit.

There was apparently once a bug in the C++11 standard and compilers
implementing that which made these copy instead of move, and then this
sort of code would do a little unnecessary ref/unref dance for sk_sp,
and would entirely fail to compile for uncopyable std::unique_ptr.
These explicit moves ostensibly will make our code more compatible with
those older compilers.

That compatibility alone is, I think, a terrible reason to land this CL.
Like, actively bad.  But... to balance that out, I think the explicit
std::move()s here actually help remind us that RVO/NRVO are not in play,
and remind us we're going to call the move constructor.  So that C++11
standard bug becomes kind of useful for us, in that Clang added this
warning to catch it, and its fix improves readability.

So really read this all as, "warn about implicit std::move() on return".
In the end I think it's just about readability.  I don't really hold any
hope out that we'll become compatible with those older compilers.

Bug: skia:9909
Change-Id: Id596e9261188b6f10e759906af6c95fe303f6ffe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/271601
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-02-18 23:55:35 +00:00
..
android [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
calmbench [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
copyright Fix pylint check in presubmit 2018-06-22 14:38:28 +00:00
debugger Return summaries of all layers for display 2020-01-29 20:55:49 +00:00
doxygen Make OUTPUT_DIRECTORY in ProdDoxyfile configurable 2019-12-18 16:46:25 +00:00
fiddle Fix fiddle after change to remove GrSurfaceDesc. 2020-02-10 19:48:24 +00:00
flags DCI-P3 -> Display P3 in Skia 2020-01-16 21:24:16 +00:00
fm basic, untested BGR 1010102 and 101010x 2020-02-11 21:44:57 +00:00
fonts Move scaler context fallback to GDI 2020-02-11 19:50:27 +00:00
gdb Update gdb bitmap viewer. 2018-06-20 21:24:27 +00:00
gpu turn on -Wreturn-std-move-in-c++11 2020-02-18 23:55:35 +00:00
infra [infra] Use "mod download" and "install", not "get" in chrome_release_branch 2019-12-06 11:16:41 +00:00
lottie-web-perf Add blocklist command line parameter 2019-09-06 21:07:20 +00:00
lottiecap [LottieWeb] Fix frames 2018-08-29 17:58:42 +00:00
lua rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
malisc Extend --writeShaders to output SPIR-V 2019-04-15 14:04:18 +00:00
mdbviz Reland "Merge GrOpList and GrRTOpList and rename to GrOpsTask." 2019-08-22 20:52:09 +00:00
rebaseline [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
sk_app Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
skdiff Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
skiaserve Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
skottie_ios_app [minor] tools/skottie_ios_app/Skia*Context: remember to cast 2020-01-14 20:05:17 +00:00
skottie-wasm-perf [skottieWASM] make sure we are using CPU or GPU correctly 2019-12-03 18:29:53 +00:00
skp [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
skpbench Improve DDLPromiseImageHelper 2020-02-14 19:17:10 +00:00
skqp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
skui Hook up pinch-zoom and swipe gestures. 2019-09-10 13:34:47 +00:00
svg [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
timer Adapt GrRectBlur for cases with rect W/H less than six sigma. 2019-09-10 14:39:07 +00:00
trace Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
viewer Change SkSL main() from (float x, float y) to (float2 p) 2020-02-07 20:19:13 +00:00
__init__.py
add_codereview_message.py Remove trailing whitespace. 2017-10-09 21:20:34 +00:00
AndroidSkDebugToStdOut.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
AutoreleasePool.h Reland "Added AutoreleasePool for managing pool memory in testing apps." 2019-05-31 15:40:01 +00:00
AutoreleasePool.mm Reland "Added AutoreleasePool for managing pool memory in testing apps." 2019-05-31 15:40:01 +00:00
BigPathBench.inc
blob_cache_sim.cpp SkRemoteGlyphCache Add tracing to diff canvas 2019-10-24 17:09:31 +00:00
build_command_buffer.py
BUILD_simulator.py
build_workaround_header.py Add CheckGeneratedFiles recipe check for gpu workarounds 2018-04-25 19:26:27 +00:00
check-headers-self-sufficient rm SkPreConfig.h and SkPostConfig.h 2020-02-06 19:16:43 +00:00
chrome_fuzz.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
chrome_release_branch [infra] Add chrome_release_branch script 2019-04-16 19:46:10 +00:00
chrome_release_branch.bat [infra] Add chrome_release_branch script 2019-04-16 19:46:10 +00:00
chrome_release_branch.py [infra] Use "mod download" and "install", not "get" in chrome_release_branch 2019-12-06 11:16:41 +00:00
clang-tidy.sh run clang-tidy on headers too 2018-12-12 15:26:22 +00:00
compare_codereview.py
cpu_modules.cpp Particle cleanup: split SkParticleBinding out of SkParticleEffect 2019-08-30 15:32:38 +00:00
CrashHandler.cpp SKQP Build for Fuchsia SDK 2019-11-18 12:34:28 +00:00
CrashHandler.h
DDLPromiseImageHelper.cpp Improve DDLPromiseImageHelper 2020-02-14 19:17:10 +00:00
DDLPromiseImageHelper.h Improve DDLPromiseImageHelper 2020-02-14 19:17:10 +00:00
DDLTileHelper.cpp fix clang-tidy warnings 2020-02-15 16:32:46 +00:00
DDLTileHelper.h Improve DDLTileHelper 2020-02-14 18:48:50 +00:00
doxygen_footer.txt
dump_record.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DumpRecord.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DumpRecord.h
embed_resources.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
find_run_binary.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
fix_pythonpath.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
force_older_glibc_math.h roll cast toolchain 2019-08-15 20:02:18 +00:00
gcov_shim
get_current_monitor_profile.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
get_images_from_skps.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
git-sync-deps tools/git-sync-deps works with either python 2020-01-10 16:30:11 +00:00
HashAndEncode.cpp basic, untested BGR 1010102 and 101010x 2020-02-11 21:44:57 +00:00
HashAndEncode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
hello-opencl.cpp run all available OpenCL devices 2019-02-11 21:29:33 +00:00
image_diff_metric.cpp pdf-comparison and image_diff_metric tools 2019-09-19 21:18:28 +00:00
imgcvt.cpp Move skcms.h to include/third_party/skcms 2019-04-29 15:02:45 +00:00
install_dependencies.sh Add harfbuzz to tools/install_dependencies.sh 2019-05-03 23:52:09 +00:00
ios_utils.h Fix bugs with fence sync API on iOS devices 2017-10-10 19:05:13 +00:00
ios_utils.m rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
jsondiff.py Fix pylint check in presubmit 2018-06-22 14:38:28 +00:00
list_gms.cpp gm: GMFactory returns a unique_ptr<> 2019-08-12 19:02:40 +00:00
list_gpu_unit_tests.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
LsanSuppressions.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
merge_static_libs.py Remove trailing whitespace. 2017-10-09 21:20:34 +00:00
milestone.py
mirror-dev.sh Update mirror-dev for *-dev:amd64 packages. 2017-11-09 22:44:57 +00:00
misc_utils.py
OverwriteLine.h eliminate SK_BUILD_FOR_WIN32 2018-01-26 19:52:04 +00:00
parse_llvm_coverage.py
pathops_sorter.htm fix pathops bug 8380 2018-12-21 19:15:54 +00:00
pathops_visualizer.htm fix pathops bug 8380 2018-12-21 19:15:54 +00:00
ProcStats.cpp SKQP Build for Fuchsia SDK 2019-11-18 12:34:28 +00:00
ProcStats.h
public_headers_warnings_check.cpp
random_parse_path.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
random_parse_path.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
reformat-json.py
Registry.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
remote_demo.cpp Part 1/2 to remove SkTextBlobCacheDiffCanvas::Settings 2019-08-16 15:27:35 +00:00
ResourceFactory.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Resources.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Resources.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
retrieve_from_googlesource.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
rewrite_includes.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
sanitize_source_files.py
skhello.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkMetaData.cpp SkMetaData: drop unused pointer ownership 2019-08-12 18:26:00 +00:00
SkMetaData.h SkMetaData: drop unused pointer ownership 2019-08-12 18:26:00 +00:00
skottie2movie.cpp Copy SkottieUtils' classes into skresources 2019-11-26 14:25:44 +00:00
skp_parser.cpp Remove an uncessary and unused parameter for partially generating the JSON command list 2019-12-13 19:30:03 +00:00
skpinfo.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSharingProc.cpp Reland "Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger." 2019-06-21 15:49:21 +00:00
SkSharingProc.h Reland "Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger." 2019-06-21 15:49:21 +00:00
SkVMBuilders.cpp use round() instead of trunc() to f32->unorm 2019-11-08 21:28:07 +00:00
SkVMBuilders.h first VEX ymm vector ops 2019-06-20 18:20:00 +00:00
Stats.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
test_all.py
test_pdfs.py
ToolUtils.cpp basic, untested BGR 1010102 and 101010x 2020-02-11 21:44:57 +00:00
ToolUtils.h Move "set_path_pt" from SampleAAGeometry into ToolUtils 2020-01-06 19:00:13 +00:00
UrlDataManager.cpp Support using an externally manage list of images in UrlDataManager for wasm debugger. 2020-01-03 21:25:12 +00:00
UrlDataManager.h Support using an externally manage list of images in UrlDataManager for wasm debugger. 2020-01-03 21:25:12 +00:00
using_skia_and_harfbuzz.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
valgrind.supp Add valgrind suppressions for GrClearImage 2019-11-05 15:46:13 +00:00
whitelist_typefaces.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
win_dbghelp.cpp Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
win_dbghelp.h eliminate SK_BUILD_FOR_WIN32 2018-01-26 19:52:04 +00:00
win_lcid.cpp Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
xsan.blacklist turn on alignment sanitizer 2018-08-09 21:13:15 +00:00