From 9f4dbff6669c8037f3b036bcf580d14f1a4f12a5 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Mon, 24 Nov 2014 09:15:30 +0000 Subject: Vendor import of clang RELEASE_350/final tag r216957 (effectively, 3.5.0 release): https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_350/final@216957 --- test/ARCMT/GC-check-warn-nsalloc.m | 9 +- test/ARCMT/GC-check.m | 1 - test/ARCMT/GC-no-arc-runtime.m | 1 - test/ARCMT/GC-no-arc-runtime.m.result | 1 - test/ARCMT/GC-no-finalize-removal.m | 1 - test/ARCMT/GC-no-finalize-removal.m.result | 1 - test/ARCMT/GC.m | 1 - test/ARCMT/GC.m.result | 1 - .../SubFramework.framework/Headers/SubFramework.h | 5 + .../Module.framework/Headers/Buried/Treasure.h | 1 + .../ARCMT/Inputs/Module.framework/Headers/Module.h | 28 + .../Inputs/Module.framework/Headers/NotInModule.h | 1 + test/ARCMT/Inputs/Module.framework/Headers/Sub.h | 3 + test/ARCMT/Inputs/Module.framework/Headers/Sub2.h | 1 + test/ARCMT/Inputs/Module.framework/Module | 0 .../PrivateHeaders/ModulePrivate.h | 1 + test/ARCMT/Inputs/module.map | 309 + test/ARCMT/api.m | 1 - test/ARCMT/api.m.result | 1 - test/ARCMT/assign-prop-with-arc-runtime.m | 1 - test/ARCMT/assign-prop-with-arc-runtime.m.result | 1 - test/ARCMT/atautorelease-2.m | 1 - test/ARCMT/atautorelease-2.m.result | 1 - test/ARCMT/atautorelease-3.m | 1 - test/ARCMT/atautorelease-3.m.result | 1 - test/ARCMT/atautorelease-check.m | 1 - test/ARCMT/atautorelease.m | 1 - test/ARCMT/atautorelease.m.result | 1 - test/ARCMT/autoreleases.m | 1 - test/ARCMT/autoreleases.m.result | 1 - test/ARCMT/check-with-pch.m | 1 - test/ARCMT/checking-in-arc.m | 1 - test/ARCMT/checking.m | 7 +- test/ARCMT/cxx-checking.mm | 3 +- test/ARCMT/cxx-rewrite.mm | 1 - test/ARCMT/cxx-rewrite.mm.result | 1 - test/ARCMT/dealloc.m | 1 - test/ARCMT/dealloc.m.result | 1 - .../designated-init-in-header.m | 3 + test/ARCMT/designated-init-in-header/file1.m.in | 2 + test/ARCMT/designated-init-in-header/file2.m.in | 14 + .../designated-init-in-header/file2.m.in.result | 14 + test/ARCMT/designated-init-in-header/header1.h | 14 + .../designated-init-in-header/header1.h.result | 13 + test/ARCMT/init.m | 1 - test/ARCMT/init.m.result | 1 - test/ARCMT/migrate-on-pch-and-module.m | 12 + test/ARCMT/migrate-plist-output.m | 1 - test/ARCMT/migrate-space-in-path.m | 1 - test/ARCMT/migrate-with-pch.m | 1 - test/ARCMT/migrate.m | 1 - test/ARCMT/no-canceling-bridge-to-bridge-cast.m | 1 - test/ARCMT/nonobjc-to-objc-cast-2.m | 1 - test/ARCMT/nonobjc-to-objc-cast.m | 1 - test/ARCMT/nonobjc-to-objc-cast.m.result | 1 - test/ARCMT/objcmt-arc-cf-annotations.m | 48 +- test/ARCMT/objcmt-arc-cf-annotations.m.result | 48 +- test/ARCMT/objcmt-atomic-property.m.result | 44 +- test/ARCMT/objcmt-deprecated-category.m | 48 - test/ARCMT/objcmt-deprecated-category.m.result | 48 - test/ARCMT/objcmt-designated-initializer.m | 44 + test/ARCMT/objcmt-designated-initializer.m.result | 44 + test/ARCMT/objcmt-instancetype-2.m.result | 8 +- test/ARCMT/objcmt-instancetype-unnecessary-diff.m | 10 + test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result | 44 +- test/ARCMT/objcmt-property-availability.m.result | 10 +- test/ARCMT/objcmt-property.m | 3 + test/ARCMT/objcmt-property.m.result | 47 +- test/ARCMT/objcmt-protocol-conformance.m | 16 + test/ARCMT/objcmt-protocol-conformance.m.result | 16 + test/ARCMT/protected-scope.m | 1 - test/ARCMT/protected-scope.m.result | 1 - test/ARCMT/whitelisted/header1.h | 1 + test/ARCMT/whitelisted/header1.h.result | 1 + .../ARCMT/whitelisted/objcmt-with-whitelist-impl.m | 18 + .../objcmt-with-whitelist-impl.m.result | 18 + test/ARCMT/whitelisted/objcmt-with-whitelist.m | 4 +- test/Analysis/Inputs/system-header-simulator-cxx.h | 33 +- .../Analysis/Inputs/system-header-simulator-objc.h | 7 +- test/Analysis/NSContainers.m | 18 +- test/Analysis/NewDelete-checker-test.cpp | 6 +- test/Analysis/NewDelete-variadic.cpp | 16 +- test/Analysis/NewDeleteLeaks-PR18394.cpp | 16 + test/Analysis/NoReturn.m | 2 +- test/Analysis/PR9741.cpp | 2 +- test/Analysis/analyzer-stats.c | 2 +- test/Analysis/auto-obj-dtors-cfg-output.cpp | 16 +- test/Analysis/bitwise-ops.c | 20 +- test/Analysis/call-invalidation.cpp | 29 + test/Analysis/casts.c | 3 +- test/Analysis/casts.cpp | 13 +- test/Analysis/cfg.cpp | 256 +- test/Analysis/checker-plugins.c | 10 + test/Analysis/ctor.mm | 30 + test/Analysis/dead-stores.c | 12 +- test/Analysis/dead-stores.m | 8 + test/Analysis/default-analyze.m | 2 +- test/Analysis/diagnostics/undef-value-param.m | 2 +- test/Analysis/dtor-cxx11.cpp | 15 + test/Analysis/dtor.cpp | 71 +- test/Analysis/dynamic-cast.cpp | 2 +- test/Analysis/exercise-ps.c | 2 +- .../Analysis/idempotent-operations-limited-loops.c | 21 - test/Analysis/idempotent-operations.c | 244 - test/Analysis/idempotent-operations.cpp | 34 - test/Analysis/idempotent-operations.m | 55 - test/Analysis/identical-expressions.cpp | 571 + test/Analysis/inline.cpp | 3 +- test/Analysis/inlining/containers.cpp | 50 +- test/Analysis/inlining/dyn-dispatch-bifurcate.cpp | 2 +- test/Analysis/inlining/path-notes.cpp | 20 +- test/Analysis/inlining/stl.cpp | 5 + test/Analysis/kmalloc-linux.c | 58 + test/Analysis/malloc-three-arg.c | 58 + test/Analysis/malloc.c | 216 + test/Analysis/malloc.m | 5 + test/Analysis/member-expr.cpp | 20 +- test/Analysis/method-arg-decay.m | 4 +- test/Analysis/misc-ps-region-store.cpp | 5 +- test/Analysis/misc-ps-region-store.m | 10 +- test/Analysis/misc-ps.m | 12 +- test/Analysis/new.cpp | 2 +- test/Analysis/no-outofbounds.c | 4 +- test/Analysis/nonnull.m | 56 +- test/Analysis/null-deref-ps.c | 8 +- test/Analysis/objc-arc.m | 2 +- test/Analysis/objc-boxing.m | 17 +- test/Analysis/objc-for.m | 2 +- test/Analysis/objc-properties.m | 4 +- test/Analysis/objc-radar17039661.m | 60 + test/Analysis/objc-string.mm | 2 +- ...direct-ivar-assignment-in-annotated-functions.m | 4 +- test/Analysis/properties.m | 180 +- test/Analysis/properties.mm | 79 + test/Analysis/pthreadlock.c | 263 + test/Analysis/ptr-arith.c | 4 +- test/Analysis/reference.cpp | 2 +- test/Analysis/region-1.m | 2 +- test/Analysis/retain-release-cache-out.m | 27 + test/Analysis/retain-release.m | 12043 ++++++++++--------- test/Analysis/stack-addr-ps.cpp | 2 +- test/Analysis/stackaddrleak.c | 4 +- test/Analysis/superclass.m | 2 +- test/Analysis/temp-obj-dtors-cfg-output.cpp | 506 +- test/Analysis/temporaries.cpp | 65 +- test/Analysis/test-after-div-zero.c | 204 + test/Analysis/uninit-const.c | 216 + test/Analysis/uninit-const.cpp | 128 + test/Analysis/uninit-vals-ps-region.m | 4 +- test/Analysis/weak-functions.c | 2 +- test/CMakeLists.txt | 103 +- .../basic.lookup.qual/class.qual/p2.cpp | 3 +- .../basic.lookup.qual/namespace.qual/p2.cpp | 11 + .../basic/basic.lookup/basic.lookup.qual/p6-0x.cpp | 25 +- .../basic/basic.lookup/basic.lookup.qual/p6.cpp | 3 +- .../basic/basic.lookup/basic.lookup.unqual/p15.cpp | 10 +- .../CXX/basic/basic.scope/basic.scope.local/p2.cpp | 10 +- test/CXX/basic/basic.start/basic.start.init/p3.cpp | 24 + test/CXX/basic/basic.start/basic.start.main/p2.cpp | 2 + .../basic.stc.dynamic.allocation/p1.cpp | 3 +- .../basic.stc.dynamic.deallocation/p1.cpp | 3 +- test/CXX/class.access/class.access.base/p1.cpp | 15 + test/CXX/class.access/p4.cpp | 4 +- test/CXX/class.access/p6.cpp | 2 +- .../class/class.static/class.static.data/p4.cpp | 9 +- test/CXX/class/class.union/p8.cpp | 10 + .../basic.namespace/namespace.udecl/p11.cpp | 32 +- .../basic.namespace/namespace.udecl/p5-cxx0x.cpp | 4 +- .../basic.namespace/namespace.udecl/p6-cxx0x.cpp | 2 +- .../basic.namespace/namespace.udecl/p8-cxx0x.cpp | 104 +- test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp | 1 + .../dcl.dcl/dcl.attr/dcl.attr.deprecated/p1.cpp | 14 +- test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp | 2 +- test/CXX/dcl.dcl/dcl.enum/p2.cpp | 6 + test/CXX/dcl.dcl/dcl.link/p2.cpp | 14 + test/CXX/dcl.dcl/dcl.link/p7.cpp | 4 +- test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp | 4 +- test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp | 2 +- test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp | 2 +- test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp | 7 +- test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp | 4 + test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp | 5 +- .../dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp | 25 +- .../dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp | 32 +- test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp | 30 +- test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp | 2 +- test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp | 4 +- test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp | 16 +- .../dcl.init/dcl.init.list/p7-0x-fixits.cpp | 2 +- test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp | 105 +- .../dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp | 91 +- test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp | 15 +- test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp | 13 + test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp | 6 +- test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp | 2 +- test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp | 5 +- test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp | 80 + test/CXX/dcl.decl/dcl.meaning/p1.cpp | 18 +- test/CXX/drs/dr0xx.cpp | 77 +- test/CXX/drs/dr10xx.cpp | 33 + test/CXX/drs/dr13xx.cpp | 29 + test/CXX/drs/dr14xx.cpp | 196 + test/CXX/drs/dr15xx.cpp | 20 + test/CXX/drs/dr1xx.cpp | 27 +- test/CXX/drs/dr2xx.cpp | 337 +- test/CXX/drs/dr3xx.cpp | 1285 ++ test/CXX/drs/dr412.cpp | 20 + test/CXX/drs/dr4xx.cpp | 1197 +- test/CXX/drs/dr5xx.cpp | 212 + test/CXX/drs/dr9xx.cpp | 45 + test/CXX/except/except.spec/canonical.cpp | 10 +- test/CXX/except/except.spec/p11.cpp | 2 +- test/CXX/except/except.spec/p14-ir.cpp | 4 +- test/CXX/except/except.spec/p15.cpp | 20 +- test/CXX/expr/expr.const/p2-0x.cpp | 6 +- test/CXX/expr/expr.const/p3-0x.cpp | 2 +- test/CXX/expr/expr.mptr.oper/p5.cpp | 28 +- test/CXX/expr/expr.mptr.oper/p6-0x.cpp | 8 +- .../CXX/expr/expr.prim/expr.prim.general/p4-0x.cpp | 2 + test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm | 20 +- .../generic-lambda-unimplemented-1y.cpp | 31 - test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp | 9 + test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp | 2 +- .../expr.prim.lambda/p2-generic-lambda-1y.cpp | 50 +- .../expr.prim.lambda/p5-generic-lambda-1y.cpp | 262 +- test/CXX/expr/expr.unary/expr.new/p2-cxx0x.cpp | 2 + test/CXX/expr/expr.unary/expr.unary.op/p4.cpp | 2 +- test/CXX/expr/expr.unary/expr.unary.op/p6.cpp | 2 +- .../over.match.funcs/over.match.oper/p3.cpp | 28 +- test/CXX/special/class.copy/implicit-move-def.cpp | 6 +- test/CXX/special/class.copy/implicit-move.cpp | 10 +- test/CXX/special/class.copy/p11.0x.copy.cpp | 19 + test/CXX/special/class.copy/p11.0x.move.cpp | 34 +- test/CXX/special/class.copy/p13-0x.cpp | 15 + test/CXX/special/class.copy/p23-cxx11.cpp | 19 +- test/CXX/special/class.copy/p33-0x.cpp | 2 +- test/CXX/special/class.dtor/p10-0x.cpp | 2 +- test/CXX/special/class.dtor/p3-0x.cpp | 2 +- test/CXX/special/class.dtor/p9.cpp | 9 +- test/CXX/special/class.inhctor/elsewhere.cpp | 6 +- test/CXX/special/class.inhctor/p4.cpp | 4 +- .../special/class.init/class.base.init/p8-0x.cpp | 15 +- test/CXX/special/class.temporary/p1.cpp | 2 +- test/CXX/temp/p3.cpp | 3 +- test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp | 2 +- test/CXX/temp/temp.decls/temp.class.spec/p8-1y.cpp | 4 +- .../temp.decls/temp.fct/temp.func.order/p3-0x.cpp | 52 - .../temp.decls/temp.fct/temp.func.order/p3.cpp | 42 +- test/CXX/temp/temp.decls/temp.mem/p3.cpp | 2 +- .../temp.decls/temp.variadic/fixed-expansion.cpp | 15 +- test/CXX/temp/temp.decls/temp.variadic/p5.cpp | 4 +- .../temp.deduct/temp.deduct.type/p9-0x.cpp | 2 +- test/CXX/temp/temp.param/p14.cpp | 5 - test/CXX/temp/temp.res/temp.local/p3.cpp | 2 +- .../temp.spec/cxx1y-variable-template-no-body.cpp | 6 +- test/CXX/temp/temp.spec/no-body.cpp | 4 +- test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp | 44 +- test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp | 2 +- test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp | 4 +- test/CodeCompletion/objc-message.mm | 46 + test/CodeGen/2007-06-18-SextAttrAggregate.c | 2 +- test/CodeGen/2009-02-13-zerosize-union-field-ppc.c | 2 +- test/CodeGen/2010-01-13-MemBarrier.c | 1 - test/CodeGen/2010-06-17-asmcrash.c | 5 +- test/CodeGen/Atomics.c | 81 +- test/CodeGen/PR4611-bitfield-layout.c | 2 +- test/CodeGen/PR8880.c | 173 + test/CodeGen/a15.c | 5 - test/CodeGen/a5.c | 5 - test/CodeGen/aarch64-arguments.c | 194 - test/CodeGen/aarch64-inline-asm.c | 2 +- test/CodeGen/aarch64-neon-2velem.c | 1362 ++- test/CodeGen/aarch64-neon-3v.c | 486 + test/CodeGen/aarch64-neon-across.c | 90 +- test/CodeGen/aarch64-neon-copy.c | 1319 -- test/CodeGen/aarch64-neon-crypto.c | 94 - test/CodeGen/aarch64-neon-extract.c | 92 +- test/CodeGen/aarch64-neon-fcvt-intrinsics.c | 84 +- test/CodeGen/aarch64-neon-fma.c | 199 + test/CodeGen/aarch64-neon-intrinsics.c | 5234 ++++---- test/CodeGen/aarch64-neon-ldst-one.c | 1384 +-- test/CodeGen/aarch64-neon-misc.c | 834 +- test/CodeGen/aarch64-neon-perm.c | 471 +- test/CodeGen/aarch64-neon-scalar-copy.c | 86 +- test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c | 151 +- test/CodeGen/aarch64-neon-shifts.c | 2 +- test/CodeGen/aarch64-neon-tbl.c | 302 +- test/CodeGen/aarch64-neon-vcombine.c | 3 +- test/CodeGen/aarch64-neon-vget-hilo.c | 116 +- test/CodeGen/aarch64-poly128.c | 205 + test/CodeGen/aarch64-poly64.c | 149 +- test/CodeGen/aarch64-type-sizes.c | 6 +- test/CodeGen/aarch64-varargs.c | 23 +- test/CodeGen/alias.c | 11 + test/CodeGen/altivec.c | 1 - test/CodeGen/arm-aapcs-vfp.c | 70 +- test/CodeGen/arm-arguments.c | 8 +- test/CodeGen/arm-asm-deprecated.c | 13 + test/CodeGen/arm-atomics-m.c | 35 + test/CodeGen/arm-atomics-m0.c | 35 + test/CodeGen/arm-atomics.c | 37 + test/CodeGen/arm-be-result-return.c | 37 + test/CodeGen/arm-byval-align.c | 14 + test/CodeGen/arm-cortex-cpus.c | 11 + test/CodeGen/arm-homogenous.c | 58 +- test/CodeGen/arm-metadata.c | 12 + test/CodeGen/arm-microsoft-intrinsics.c | 63 + test/CodeGen/arm-neon-vcvtX.c | 99 + test/CodeGen/arm64-aapcs-arguments.c | 42 + test/CodeGen/arm64-abi-vector.c | 430 + test/CodeGen/arm64-arguments.c | 719 ++ test/CodeGen/arm64-be-bitfield.c | 9 + test/CodeGen/arm64-be-hfa-vararg.c | 13 + test/CodeGen/arm64-crc32.c | 55 + test/CodeGen/arm64-lanes.c | 74 + test/CodeGen/arm64-scalar-test.c | 547 + test/CodeGen/arm64-vrnd.c | 51 + test/CodeGen/arm64-vrsqrt.c | 43 + test/CodeGen/arm64_crypto.c | 93 + test/CodeGen/arm64_neon_high_half.c | 559 + test/CodeGen/arm64_vCMP.c | 108 + test/CodeGen/arm64_vLdStNum_lane.c | 141 + test/CodeGen/arm64_vMaxMin.c | 207 + test/CodeGen/arm64_vadd.c | 102 + test/CodeGen/arm64_vca.c | 59 + test/CodeGen/arm64_vcopy.c | 69 + test/CodeGen/arm64_vcreate.c | 23 + test/CodeGen/arm64_vcvtfp.c | 48 + test/CodeGen/arm64_vdup.c | 42 + test/CodeGen/arm64_vdupq_n_f64.c | 88 + test/CodeGen/arm64_vecCmpBr.c | 111 + test/CodeGen/arm64_vext.c | 239 + test/CodeGen/arm64_vfma.c | 136 + test/CodeGen/arm64_vget.c | 13 + test/CodeGen/arm64_vneg.c | 18 + test/CodeGen/arm64_vqmov.c | 77 + test/CodeGen/arm64_vrecps.c | 26 + test/CodeGen/arm64_vset_lane.c | 31 + test/CodeGen/arm64_vshift.c | 357 + test/CodeGen/arm64_vsli.c | 148 + test/CodeGen/arm64_vsri.c | 149 + test/CodeGen/arm64_vtst.c | 22 + test/CodeGen/arm_acle.c | 209 + test/CodeGen/arm_neon_intrinsics.c | 4028 ++++--- test/CodeGen/asan-globals.cpp | 36 + test/CodeGen/asm.c | 9 + test/CodeGen/asm_arm64.c | 45 + test/CodeGen/atomic-arm64.c | 73 + test/CodeGen/atomic-ops-libcall.c | 37 + test/CodeGen/atomic-ops.c | 210 +- test/CodeGen/atomic.c | 15 +- test/CodeGen/attr-optnone.c | 25 + test/CodeGen/avx-builtins.c | 12 + test/CodeGen/avx-shuffle-builtins.c | 34 + test/CodeGen/avx2-builtins.c | 27 +- test/CodeGen/big-atomic-ops.c | 11 +- test/CodeGen/bitfield-2.c | 8 +- test/CodeGen/blocks-opencl.cl | 16 + test/CodeGen/blockstret.c | 9 +- test/CodeGen/bmi-builtins.c | 87 +- test/CodeGen/bool-convert.c | 16 +- test/CodeGen/bool-init.c | 3 +- test/CodeGen/bool_test.c | 2 +- test/CodeGen/branch-on-bool.c | 8 - test/CodeGen/builtin-assume.c | 8 + test/CodeGen/builtin-ms-noop.cpp | 30 +- test/CodeGen/builtins-aarch64.c | 6 - test/CodeGen/builtins-arm-exclusive.c | 265 +- test/CodeGen/builtins-arm-microsoft.c | 41 + test/CodeGen/builtins-arm.c | 40 +- test/CodeGen/builtins-arm64.c | 31 + test/CodeGen/builtins-mips-msa.c | 18 +- test/CodeGen/builtins-nvptx.c | 1 - test/CodeGen/builtins-ppc-altivec.c | 11237 ++++++++++++----- test/CodeGen/builtins-ppc.c | 2 +- test/CodeGen/builtins-x86.c | 7 +- test/CodeGen/builtinshufflevector2.c | 24 +- test/CodeGen/c-strings.c | 15 +- test/CodeGen/c11atomics.c | 5 + test/CodeGen/captured-statements-nested.c | 34 +- test/CodeGen/captured-statements.c | 20 +- test/CodeGen/catch-undef-behavior.c | 82 +- test/CodeGen/cfstring.c | 6 +- test/CodeGen/clear_cache.c | 12 + test/CodeGen/complex-convert.c | 11 +- test/CodeGen/cxx-default-arg.cpp | 2 +- test/CodeGen/darwin-string-literals.c | 12 +- test/CodeGen/debug-dead-local-var.c | 14 - test/CodeGen/debug-info-block.c | 1 - test/CodeGen/debug-info-enum.c | 10 + test/CodeGen/debug-info-iv.c | 36 - test/CodeGen/debug-info-scope-file.c | 20 + test/CodeGen/debug-info-typedef.c | 11 + test/CodeGen/debug-info-var-location.c | 3 +- test/CodeGen/debug-info-version.c | 2 +- test/CodeGen/dependent-lib.c | 8 +- test/CodeGen/disable-tail-calls.c | 16 + test/CodeGen/dllexport.c | 115 + test/CodeGen/dllimport-dllexport.c | 12 - test/CodeGen/dllimport.c | 93 + test/CodeGen/dwarf-version.c | 12 +- test/CodeGen/exceptions-seh.c | 5 +- test/CodeGen/ffp-contract-option.c | 2 +- test/CodeGen/flatten.c | 19 + test/CodeGen/fp-contract-pragma.cpp | 2 +- test/CodeGen/fp16-ops.c | 258 +- test/CodeGen/function-attributes.c | 11 + test/CodeGen/function-sections.c | 28 + test/CodeGen/hidden-alias-to-internal-function.c | 8 + test/CodeGen/indirect-goto.c | 2 +- test/CodeGen/init.c | 8 + test/CodeGen/inline.c | 5 +- test/CodeGen/inline2.c | 9 +- test/CodeGen/le32-vaarg.c | 28 + test/CodeGen/libcall-declarations.c | 21 +- test/CodeGen/libcalls.c | 12 +- test/CodeGen/lineno-dbginfo.c | 2 +- test/CodeGen/long-double-x86-nacl.c | 7 - test/CodeGen/malign-double-x86-nacl.c | 43 + test/CodeGen/mangle-windows.c | 3 +- test/CodeGen/mips-count-builtins.c | 32 + test/CodeGen/mips-target-data.c | 16 - test/CodeGen/mips-type-sizes-int128.c | 13 + test/CodeGen/mips-type-sizes.c | 92 + test/CodeGen/mmx-builtins.c | 2 +- test/CodeGen/mmx-inline-asm-error.c | 6 +- test/CodeGen/mozilla-ms-inline-asm.c | 61 + test/CodeGen/ms-inline-asm-64.c | 6 +- test/CodeGen/ms-inline-asm.c | 78 +- test/CodeGen/ms-inline-asm.cpp | 36 +- test/CodeGen/ms-intrinsics.c | 38 + test/CodeGen/ms_struct-bitfield.c | 78 +- test/CodeGen/ms_struct-pack.c | 21 +- test/CodeGen/named_reg_global.c | 47 + test/CodeGen/neon-crypto.c | 96 + test/CodeGen/noduplicate-cxx11-test.cpp | 20 + test/CodeGen/noinline.c | 7 + test/CodeGen/nonnull.c | 23 + test/CodeGen/overloadable.c | 4 +- test/CodeGen/packed-nest-unpacked.c | 2 +- test/CodeGen/packed-union.c | 4 +- test/CodeGen/powerpc_types.c | 1 - test/CodeGen/ppc64-align-long-double.c | 4 +- test/CodeGen/ppc64-align-struct.c | 154 + test/CodeGen/ppc64-complex-parms.c | 1 - test/CodeGen/ppc64-complex-return.c | 2 +- test/CodeGen/ppc64-extend.c | 2 +- test/CodeGen/ppc64-inline-asm.c | 26 + test/CodeGen/ppc64-struct-onefloat.c | 2 +- test/CodeGen/ppc64-struct-onevect.c | 2 +- test/CodeGen/ppc64-varargs-complex.c | 2 +- test/CodeGen/ppc64-varargs-struct.c | 2 +- test/CodeGen/ppc64-vector.c | 52 + test/CodeGen/ppc64le-aggregates.c | 423 + test/CodeGen/ppc64le-varargs-complex.c | 69 + test/CodeGen/pr18235.c | 3 + test/CodeGen/pr19841.cpp | 29 + test/CodeGen/pragma-comment.c | 4 +- test/CodeGen/pragma-detect_mismatch.c | 4 +- test/CodeGen/pragma-loop.cpp | 129 + test/CodeGen/pragma-pack-1.c | 4 +- test/CodeGen/pragma-pack-2.c | 3 +- test/CodeGen/pragma-unroll.cpp | 99 + test/CodeGen/predefined-expr.c | 1 + test/CodeGen/r5.c | 5 - test/CodeGen/sanitize-init-order.cpp | 20 +- test/CodeGen/sanitize-use-after-scope.c | 22 - test/CodeGen/sections.c | 75 +- test/CodeGen/sparc-target-data.c | 5 - test/CodeGen/sparcv9-abi.c | 3 + test/CodeGen/sparcv9-dwarf.c | 99 + test/CodeGen/split-stacks.c | 26 + test/CodeGen/sret.c | 2 + test/CodeGen/sret2.c | 2 + test/CodeGen/sse-builtins-dbg.c | 12 + test/CodeGen/sse-builtins.c | 22 +- test/CodeGen/stack-protector.c | 6 +- test/CodeGen/string-literal-short-wstring.c | 9 +- test/CodeGen/struct-x86-darwin.c | 20 +- test/CodeGen/target-data.c | 172 +- test/CodeGen/tbaa-for-vptr.cpp | 21 +- test/CodeGen/tbaa-ms-abi.cpp | 6 +- test/CodeGen/tbaa-struct.cpp | 11 +- test/CodeGen/ubsan-type-blacklist.cpp | 25 + test/CodeGen/union.c | 13 + test/CodeGen/utf16-cfstrings.c | 2 +- test/CodeGen/varargs.c | 10 +- test/CodeGen/variadic-gpfp-x86.c | 15 + test/CodeGen/vla.c | 9 + test/CodeGen/volatile-complex.c | 12 +- test/CodeGen/volatile.c | 21 +- test/CodeGen/wchar-const.c | 2 +- test/CodeGen/windows-itanium.c | 15 + test/CodeGen/windows-on-arm-dllimport-dllexport.c | 25 + test/CodeGen/x86-64-inline-asm.c | 17 + test/CodeGen/x86_64-atomic-128.c | 29 + test/CodeGen/xcore-abi.c | 23 +- test/CodeGen/xcore-abi.cpp | 27 + test/CodeGen/xcore-stringtype.c | 179 + test/CodeGenCUDA/Inputs/cuda.h | 20 + test/CodeGenCUDA/address-spaces.cu | 74 +- test/CodeGenCUDA/device-stub.cu | 2 +- test/CodeGenCUDA/filter-decl.cu | 6 +- test/CodeGenCUDA/kernel-call.cu | 2 +- test/CodeGenCUDA/launch-bounds.cu | 30 + test/CodeGenCUDA/ptx-kernels.cu | 2 +- .../2003-11-27-MultipleInheritanceThunk.cpp | 3 +- test/CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp | 3 +- .../2004-03-09-UnmangledBuiltinMethods.cpp | 2 +- test/CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp | 3 +- .../2010-05-11-alwaysinlineinstantiation.cpp | 2 +- .../CodeGenCXX/Inputs/debug-info-class-limited.cpp | 49 + test/CodeGenCXX/PR19955.cpp | 27 + test/CodeGenCXX/PR20038.cpp | 16 + test/CodeGenCXX/PR5050-constructor-conversion.cpp | 15 +- test/CodeGenCXX/PR5093-static-member-function.cpp | 2 +- test/CodeGenCXX/PR5863-unreachable-block.cpp | 2 +- test/CodeGenCXX/aarch64-arguments.cpp | 2 +- test/CodeGenCXX/aarch64-cxxabi.cpp | 6 +- test/CodeGenCXX/aarch64-mangle-neon-vectors.cpp | 7 +- test/CodeGenCXX/aarch64-neon.cpp | 6 +- test/CodeGenCXX/abstract-class-ctors-dtors.cpp | 4 +- test/CodeGenCXX/address-of-fntemplate.cpp | 2 +- test/CodeGenCXX/address-space-ref.cpp | 34 + test/CodeGenCXX/apple-kext.cpp | 4 +- test/CodeGenCXX/arm.cpp | 18 +- test/CodeGenCXX/arm64-constructor-return.cpp | 19 + test/CodeGenCXX/arm64-darwinpcs.cpp | 15 + test/CodeGenCXX/arm64-empty-struct.cpp | 27 + test/CodeGenCXX/arm64.cpp | 88 + test/CodeGenCXX/array-construction.cpp | 14 +- test/CodeGenCXX/array-operator-delete-call.cpp | 13 +- test/CodeGenCXX/atomicinit.cpp | 56 +- test/CodeGenCXX/attr-cleanup.cpp | 2 +- test/CodeGenCXX/attr-used.cpp | 20 +- test/CodeGenCXX/bitfield-layout.cpp | 2 +- test/CodeGenCXX/bitfield.cpp | 58 +- test/CodeGenCXX/block-byref-cxx-objc.cpp | 2 +- test/CodeGenCXX/block-in-ctor-dtor.cpp | 4 +- test/CodeGenCXX/block.cpp | 3 +- test/CodeGenCXX/blocks-cxx11.cpp | 2 +- test/CodeGenCXX/blocks.cpp | 2 +- test/CodeGenCXX/c-linkage.cpp | 4 +- test/CodeGenCXX/call-arg-zero-temp.cpp | 2 +- test/CodeGenCXX/captured-statements.cpp | 2 +- test/CodeGenCXX/cast-conversion.cpp | 28 +- test/CodeGenCXX/catch-undef-behavior.cpp | 48 +- test/CodeGenCXX/class-layout.cpp | 11 +- test/CodeGenCXX/conditional-gnu-ext.cpp | 4 +- test/CodeGenCXX/const-base-cast.cpp | 2 +- test/CodeGenCXX/const-global-linkage.cpp | 2 +- test/CodeGenCXX/const-init-cxx11.cpp | 42 +- test/CodeGenCXX/const-init-cxx1y.cpp | 55 +- test/CodeGenCXX/constructor-attr.cpp | 2 +- test/CodeGenCXX/constructor-conversion.cpp | 19 +- test/CodeGenCXX/constructor-default-arg.cpp | 19 +- .../constructor-destructor-return-this.cpp | 49 +- test/CodeGenCXX/constructor-direct-call.cpp | 15 +- test/CodeGenCXX/constructor-for-array-members.cpp | 13 +- test/CodeGenCXX/constructor-init-reference.cpp | 4 +- test/CodeGenCXX/constructor-init.cpp | 2 +- test/CodeGenCXX/constructor-template.cpp | 2 +- test/CodeGenCXX/constructors.cpp | 32 +- test/CodeGenCXX/convert-to-fptr.cpp | 17 +- test/CodeGenCXX/copy-assign-synthesis-1.cpp | 4 +- test/CodeGenCXX/copy-assign-synthesis-2.cpp | 4 +- test/CodeGenCXX/copy-constructor-elim-2.cpp | 3 +- test/CodeGenCXX/copy-constructor-elim.cpp | 9 +- test/CodeGenCXX/copy-constructor-synthesis-2.cpp | 4 +- test/CodeGenCXX/copy-constructor-synthesis.cpp | 18 +- test/CodeGenCXX/coverage.cpp | 2 +- test/CodeGenCXX/ctor-dtor-alias.cpp | 4 +- test/CodeGenCXX/cxx0x-defaulted-templates.cpp | 6 +- test/CodeGenCXX/cxx0x-delegating-ctors.cpp | 22 +- ...xx0x-initializer-stdinitializerlist-pr12086.cpp | 128 +- ...x0x-initializer-stdinitializerlist-startend.cpp | 4 +- .../cxx0x-initializer-stdinitializerlist.cpp | 54 +- test/CodeGenCXX/cxx11-exception-spec.cpp | 3 +- test/CodeGenCXX/cxx11-initializer-aggregate.cpp | 21 +- test/CodeGenCXX/cxx11-initializer-array-new.cpp | 86 +- test/CodeGenCXX/cxx11-noreturn.cpp | 2 +- test/CodeGenCXX/cxx11-thread-local-reference.cpp | 4 +- test/CodeGenCXX/cxx11-thread-local.cpp | 32 +- test/CodeGenCXX/cxx11-unrestricted-union.cpp | 2 +- test/CodeGenCXX/cxx1y-initializer-aggregate.cpp | 2 +- test/CodeGenCXX/cxx1y-variable-template.cpp | 4 +- test/CodeGenCXX/debug-info-alias.cpp | 37 + test/CodeGenCXX/debug-info-anon-union-vars.cpp | 28 + test/CodeGenCXX/debug-info-byval.cpp | 3 +- test/CodeGenCXX/debug-info-char16.cpp | 2 +- .../debug-info-class-limited-plugin.test | 2 + test/CodeGenCXX/debug-info-class-limited.cpp | 52 - test/CodeGenCXX/debug-info-class-limited.test | 1 + test/CodeGenCXX/debug-info-class-nolimit.cpp | 4 +- test/CodeGenCXX/debug-info-class.cpp | 15 +- test/CodeGenCXX/debug-info-ctor2.cpp | 3 +- test/CodeGenCXX/debug-info-dup-fwd-decl.cpp | 2 +- test/CodeGenCXX/debug-info-enum-class.cpp | 52 +- test/CodeGenCXX/debug-info-enum.cpp | 11 +- test/CodeGenCXX/debug-info-function-context.cpp | 8 +- test/CodeGenCXX/debug-info-gline-tables-only.cpp | 2 +- test/CodeGenCXX/debug-info-global-ctor-dtor.cpp | 4 +- test/CodeGenCXX/debug-info-global.cpp | 19 + test/CodeGenCXX/debug-info-indirect-field-decl.cpp | 17 + test/CodeGenCXX/debug-info-limited.cpp | 3 +- test/CodeGenCXX/debug-info-line-if.cpp | 20 + test/CodeGenCXX/debug-info-member.cpp | 3 +- test/CodeGenCXX/debug-info-method-spec.cpp | 3 +- test/CodeGenCXX/debug-info-method.cpp | 2 +- test/CodeGenCXX/debug-info-method2.cpp | 2 +- test/CodeGenCXX/debug-info-namespace.cpp | 34 +- test/CodeGenCXX/debug-info-pubtypes.cpp | 16 - test/CodeGenCXX/debug-info-qualifiers.cpp | 26 + test/CodeGenCXX/debug-info-same-line.cpp | 155 +- test/CodeGenCXX/debug-info-scope.cpp | 4 +- ...debug-info-template-explicit-specialization.cpp | 93 + test/CodeGenCXX/debug-info-template-fwd.cpp | 27 + test/CodeGenCXX/debug-info-template-limit.cpp | 2 +- test/CodeGenCXX/debug-info-template-member.cpp | 6 +- .../debug-info-template-partial-specialization.cpp | 31 + test/CodeGenCXX/debug-info-template.cpp | 10 +- test/CodeGenCXX/debug-info-thunk.cpp | 2 +- test/CodeGenCXX/debug-info-use-after-free.cpp | 2 +- test/CodeGenCXX/debug-info-uuid.cpp | 2 +- test/CodeGenCXX/debug-info-varargs.cpp | 22 + test/CodeGenCXX/debug-info-vtable-optzn.cpp | 22 + test/CodeGenCXX/debug-info.cpp | 20 +- test/CodeGenCXX/decl-ref-init.cpp | 16 +- test/CodeGenCXX/default-arg-temps.cpp | 4 +- test/CodeGenCXX/default-arguments.cpp | 6 +- .../default-constructor-default-argument.cpp | 2 +- .../CodeGenCXX/default-constructor-for-members.cpp | 13 +- .../default-constructor-template-member.cpp | 2 +- test/CodeGenCXX/default-destructor-nested.cpp | 2 +- test/CodeGenCXX/deferred-global-init.cpp | 4 +- test/CodeGenCXX/delayed-template-parsing.cpp | 4 +- test/CodeGenCXX/delete-two-arg.cpp | 3 +- test/CodeGenCXX/dependent-type-member-pointer.cpp | 1 + test/CodeGenCXX/derived-to-base-conv.cpp | 4 +- .../derived-to-virtual-base-class-calls-final.cpp | 4 +- test/CodeGenCXX/destructor-exception-spec.cpp | 6 +- test/CodeGenCXX/destructors.cpp | 37 +- test/CodeGenCXX/dllexport-members.cpp | 647 + test/CodeGenCXX/dllexport.cpp | 686 ++ test/CodeGenCXX/dllimport-members.cpp | 875 ++ test/CodeGenCXX/dllimport-rtti.cpp | 13 + test/CodeGenCXX/dllimport.cpp | 771 ++ test/CodeGenCXX/duplicate-mangled-name.cpp | 10 + test/CodeGenCXX/dynamic_cast-no-rtti.cpp | 2 +- test/CodeGenCXX/eh.cpp | 11 +- test/CodeGenCXX/elide-call-reference.cpp | 2 +- test/CodeGenCXX/empty-nontrivially-copyable.cpp | 3 +- test/CodeGenCXX/enable_if.cpp | 20 + test/CodeGenCXX/exceptions-no-rtti.cpp | 10 +- test/CodeGenCXX/exceptions.cpp | 2 +- test/CodeGenCXX/explicit-instantiation.cpp | 76 +- test/CodeGenCXX/extern-c.cpp | 18 +- test/CodeGenCXX/fastcall.cpp | 2 +- test/CodeGenCXX/field-access-debug-info.cpp | 7 +- test/CodeGenCXX/flatten.cpp | 10 + test/CodeGenCXX/funcsig.cpp | 29 + .../function-template-explicit-specialization.cpp | 2 +- .../function-template-specialization.cpp | 2 +- test/CodeGenCXX/global-array-destruction.cpp | 4 +- test/CodeGenCXX/global-init.cpp | 6 +- test/CodeGenCXX/global-llvm-constant.cpp | 2 +- test/CodeGenCXX/globalinit-loc.cpp | 23 + test/CodeGenCXX/goto.cpp | 2 +- test/CodeGenCXX/implicit-copy-assign-operator.cpp | 3 +- test/CodeGenCXX/implicit-copy-constructor.cpp | 2 +- test/CodeGenCXX/implicit-instantiation-1.cpp | 2 +- test/CodeGenCXX/inheriting-constructor.cpp | 4 +- test/CodeGenCXX/init-priority-attr.cpp | 26 +- test/CodeGenCXX/inline-functions.cpp | 58 +- test/CodeGenCXX/instrument-functions.cpp | 2 +- test/CodeGenCXX/int64_uint64.cpp | 23 + test/CodeGenCXX/internal-linkage.cpp | 2 +- test/CodeGenCXX/linetable-cleanup.cpp | 6 +- test/CodeGenCXX/linetable-eh.cpp | 44 + test/CodeGenCXX/linetable-fnbegin.cpp | 28 + test/CodeGenCXX/linkage.cpp | 42 +- test/CodeGenCXX/mangle-abi-examples.cpp | 2 +- test/CodeGenCXX/mangle-address-space.cpp | 2 +- test/CodeGenCXX/mangle-alias-template.cpp | 7 - test/CodeGenCXX/mangle-lambdas.cpp | 2 +- test/CodeGenCXX/mangle-local-class-names.cpp | 2 +- test/CodeGenCXX/mangle-local-class-vtables.cpp | 2 +- test/CodeGenCXX/mangle-local-classes-nested.cpp | 2 +- test/CodeGenCXX/mangle-ms-abi-examples.cpp | 8 +- test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp | 24 +- .../mangle-ms-back-references-pr13207.cpp | 2 +- test/CodeGenCXX/mangle-ms-back-references.cpp | 2 +- test/CodeGenCXX/mangle-ms-cxx11.cpp | 132 +- test/CodeGenCXX/mangle-ms-cxx14.cpp | 40 + test/CodeGenCXX/mangle-ms-return-qualifiers.cpp | 8 +- test/CodeGenCXX/mangle-ms-string-literals.cpp | 721 ++ test/CodeGenCXX/mangle-ms-template-callback.cpp | 19 +- test/CodeGenCXX/mangle-ms-templates-memptrs-2.cpp | 45 + test/CodeGenCXX/mangle-ms-templates-memptrs.cpp | 143 + test/CodeGenCXX/mangle-ms-templates.cpp | 18 +- test/CodeGenCXX/mangle-ms-vector-types.cpp | 2 +- test/CodeGenCXX/mangle-ms.cpp | 19 +- test/CodeGenCXX/mangle-neon-vectors.cpp | 43 +- test/CodeGenCXX/mangle-nullptr-arg.cpp | 2 +- test/CodeGenCXX/mangle-std-externc.cpp | 4 +- test/CodeGenCXX/mangle-subst-std.cpp | 2 +- test/CodeGenCXX/mangle-template.cpp | 30 +- test/CodeGenCXX/mangle-windows.cpp | 4 +- test/CodeGenCXX/mangle.cpp | 52 +- test/CodeGenCXX/member-alignment.cpp | 2 +- test/CodeGenCXX/member-function-pointer-calls.cpp | 5 + test/CodeGenCXX/member-init-anon-union.cpp | 34 +- test/CodeGenCXX/member-templates.cpp | 2 +- test/CodeGenCXX/microsoft-abi-alignment-fail.cpp | 8 +- test/CodeGenCXX/microsoft-abi-arg-order.cpp | 74 + test/CodeGenCXX/microsoft-abi-array-cookies.cpp | 2 +- test/CodeGenCXX/microsoft-abi-byval-sret.cpp | 29 + test/CodeGenCXX/microsoft-abi-byval-vararg.cpp | 52 + .../CodeGenCXX/microsoft-abi-cdecl-method-sret.cpp | 44 + .../microsoft-abi-constexpr-vs-inheritance.cpp | 2 +- test/CodeGenCXX/microsoft-abi-default-cc.cpp | 4 +- test/CodeGenCXX/microsoft-abi-dynamic-cast.cpp | 130 + test/CodeGenCXX/microsoft-abi-exceptions.cpp | 65 +- test/CodeGenCXX/microsoft-abi-member-pointers.cpp | 180 +- test/CodeGenCXX/microsoft-abi-methods.cpp | 2 +- ...crosoft-abi-multiple-nonvirtual-inheritance.cpp | 2 +- .../microsoft-abi-non-virtual-base-ordering.cpp | 10 + .../microsoft-abi-nontrivial-covariant-thunk.cpp | 24 + test/CodeGenCXX/microsoft-abi-rtti.cpp | 267 + test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp | 158 +- .../microsoft-abi-static-initializers.cpp | 123 +- test/CodeGenCXX/microsoft-abi-structors-alias.cpp | 21 +- test/CodeGenCXX/microsoft-abi-structors.cpp | 145 +- test/CodeGenCXX/microsoft-abi-thunks.cpp | 23 +- test/CodeGenCXX/microsoft-abi-try-throw.cpp | 23 + test/CodeGenCXX/microsoft-abi-typeid.cpp | 52 + test/CodeGenCXX/microsoft-abi-vbtables.cpp | 53 +- test/CodeGenCXX/microsoft-abi-vftables.cpp | 42 + ...microsoft-abi-virtual-inheritance-vtordisps.cpp | 10 +- .../microsoft-abi-virtual-inheritance.cpp | 152 +- .../microsoft-abi-virtual-member-pointers.cpp | 80 +- ...s-multiple-nonvirtual-inheritance-no-thunks.cpp | 302 + ...ultiple-nonvirtual-inheritance-pure-virtual.cpp | 35 + ...le-nonvirtual-inheritance-return-adjustment.cpp | 297 + ...iple-nonvirtual-inheritance-this-adjustment.cpp | 140 + ...bles-multiple-nonvirtual-inheritance-vdtors.cpp | 94 + ...abi-vtables-multiple-nonvirtual-inheritance.cpp | 579 - .../microsoft-abi-vtables-return-thunks.cpp | 106 + .../microsoft-abi-vtables-single-inheritance.cpp | 279 +- ...t-abi-vtables-virtual-inheritance-vtordisps.cpp | 411 +- .../microsoft-abi-vtables-virtual-inheritance.cpp | 667 +- test/CodeGenCXX/microsoft-compatibility.cpp | 21 + test/CodeGenCXX/microsoft-interface.cpp | 25 +- test/CodeGenCXX/microsoft-new.cpp | 78 +- test/CodeGenCXX/microsoft-no-rtti-data.cpp | 21 + test/CodeGenCXX/microsoft-templ-uuidof.cpp | 37 + test/CodeGenCXX/microsoft-uuidof.cpp | 6 +- test/CodeGenCXX/mingw-new-abi.cpp | 13 + test/CodeGenCXX/mips-size_t-ptrdiff_t.cpp | 49 + .../ms-integer-static-data-members-exported.cpp | 22 + test/CodeGenCXX/ms-integer-static-data-members.cpp | 8 +- test/CodeGenCXX/ms_wide_predefined_expr.cpp | 2 +- test/CodeGenCXX/new-array-init.cpp | 19 +- test/CodeGenCXX/new.cpp | 17 +- test/CodeGenCXX/no-elide-constructors.cpp | 35 + test/CodeGenCXX/noinline-template.cpp | 4 +- test/CodeGenCXX/nrvo.cpp | 50 +- test/CodeGenCXX/pod-member-memcpys.cpp | 52 +- test/CodeGenCXX/pointers-to-data-members.cpp | 2 +- test/CodeGenCXX/poly-unsigned.cpp | 20 + test/CodeGenCXX/pr11797.cpp | 2 +- test/CodeGenCXX/pr12104.cpp | 6 +- test/CodeGenCXX/pr13396.cpp | 4 +- test/CodeGenCXX/pr18661.cpp | 14 + test/CodeGenCXX/pr18962.cpp | 32 + test/CodeGenCXX/pr9965.cpp | 2 +- test/CodeGenCXX/pragma-init_seg.cpp | 72 + test/CodeGenCXX/pragma-pack-3.cpp | 18 + test/CodeGenCXX/pragma-weak.cpp | 4 +- test/CodeGenCXX/predefined-expr.cpp | 12 +- test/CodeGenCXX/ptr-to-member-function.cpp | 17 +- test/CodeGenCXX/reference-cast.cpp | 18 +- test/CodeGenCXX/reference-field.cpp | 4 +- test/CodeGenCXX/reference-init.cpp | 2 +- test/CodeGenCXX/references.cpp | 4 +- test/CodeGenCXX/return.cpp | 4 +- test/CodeGenCXX/rtti-fundamental.cpp | 125 +- test/CodeGenCXX/rtti-linkage.cpp | 113 +- test/CodeGenCXX/rtti-visibility.cpp | 12 +- test/CodeGenCXX/runtimecc.cpp | 2 +- test/CodeGenCXX/rvalue-references.cpp | 16 +- test/CodeGenCXX/scoped-enums.cpp | 2 +- test/CodeGenCXX/sparcv9-abi.cpp | 26 + .../specialized-static-data-mem-init.cpp | 6 +- test/CodeGenCXX/split-stacks.cpp | 33 + test/CodeGenCXX/static-init-3.cpp | 4 +- test/CodeGenCXX/static-init.cpp | 12 +- ...tic-member-variable-explicit-specialization.cpp | 20 +- test/CodeGenCXX/stmtexpr.cpp | 2 +- .../template-dependent-bind-temporary.cpp | 2 +- .../template-inner-struct-visibility-hidden.cpp | 6 +- test/CodeGenCXX/template-instantiation.cpp | 28 +- test/CodeGenCXX/temporaries.cpp | 87 +- test/CodeGenCXX/throw-expression-dtor.cpp | 2 +- test/CodeGenCXX/throw-expressions.cpp | 45 + test/CodeGenCXX/thunk-use-after-free.cpp | 2 +- test/CodeGenCXX/thunks.cpp | 9 +- test/CodeGenCXX/tls-init-funcs.cpp | 26 +- test/CodeGenCXX/trivial-constructor-init.cpp | 2 +- test/CodeGenCXX/type-traits.cpp | 6 + test/CodeGenCXX/type_visibility.cpp | 36 +- test/CodeGenCXX/typeid-should-throw.cpp | 82 + test/CodeGenCXX/unary-type-trait.cpp | 4 - test/CodeGenCXX/uncopyable-args.cpp | 206 + test/CodeGenCXX/value-init.cpp | 53 + test/CodeGenCXX/vararg-non-pod.cpp | 2 +- test/CodeGenCXX/virt-dtor-gen.cpp | 4 +- test/CodeGenCXX/virt-dtor-key.cpp | 4 +- test/CodeGenCXX/virt-template-vtable.cpp | 2 +- test/CodeGenCXX/virtual-base-cast.cpp | 2 +- test/CodeGenCXX/virtual-base-ctor.cpp | 2 +- test/CodeGenCXX/virtual-base-destructor-call.cpp | 2 +- test/CodeGenCXX/virtual-bases.cpp | 4 +- test/CodeGenCXX/virtual-destructor-calls.cpp | 10 +- test/CodeGenCXX/virtual-destructor-synthesis.cpp | 2 +- test/CodeGenCXX/virtual-function-calls.cpp | 6 +- .../virtual-implicit-copy-assignment.cpp | 2 +- .../virtual-implicit-move-assignment.cpp | 2 +- test/CodeGenCXX/virtual-inherited-destructor.cpp | 2 +- test/CodeGenCXX/virtual-pseudo-destructor-call.cpp | 2 +- .../visibility-hidden-extern-templates.cpp | 10 +- test/CodeGenCXX/visibility-ms-compat.cpp | 12 +- test/CodeGenCXX/vla.cpp | 2 +- test/CodeGenCXX/volatile-1.cpp | 6 +- test/CodeGenCXX/volatile.cpp | 2 +- test/CodeGenCXX/vtable-available-externally.cpp | 2 +- test/CodeGenCXX/vtable-cast-crash.cpp | 2 +- test/CodeGenCXX/vtable-key-function-arm.cpp | 26 +- test/CodeGenCXX/vtable-key-function-ios.cpp | 18 +- test/CodeGenCXX/vtable-layout-abi-examples.cpp | 2 +- test/CodeGenCXX/vtable-linkage.cpp | 32 +- test/CodeGenCXX/weak-extern-typeinfo.cpp | 16 +- test/CodeGenCXX/weak-external.cpp | 2 +- test/CodeGenCXX/windows-itanium-exceptions.cpp | 47 + test/CodeGenObjC/2009-08-05-utf16.m | 2 +- test/CodeGenObjC/2010-02-01-utf16-with-null.m | 6 +- test/CodeGenObjC/arc-arm.m | 17 +- test/CodeGenObjC/arc-foreach.m | 2 +- test/CodeGenObjC/arc-ivar-layout.m | 11 +- test/CodeGenObjC/arc-linetable-autorelease.m | 9 +- test/CodeGenObjC/arc-linetable.m | 27 +- test/CodeGenObjC/arc-property.m | 2 +- test/CodeGenObjC/arc.m | 10 +- test/CodeGenObjC/arm64-int32-ivar.m | 17 + test/CodeGenObjC/attr-callconv.m | 13 + test/CodeGenObjC/block-var-layout.m | 8 + test/CodeGenObjC/blocks.m | 2 +- test/CodeGenObjC/boxing.m | 24 +- test/CodeGenObjC/complex-property.m | 4 +- test/CodeGenObjC/constant-strings.m | 2 +- test/CodeGenObjC/debug-info-block-helper.m | 2 +- test/CodeGenObjC/debug-info-block-line.m | 2 +- test/CodeGenObjC/debug-info-blocks.m | 2 +- test/CodeGenObjC/debug-info-class-extension.m | 3 +- test/CodeGenObjC/debug-info-class-extension2.m | 3 +- test/CodeGenObjC/debug-info-crash-2.m | 2 +- test/CodeGenObjC/debug-info-getter-name.m | 2 +- test/CodeGenObjC/debug-info-ivars-indirect.m | 29 +- test/CodeGenObjC/debug-info-lifetime-crash.m | 2 +- test/CodeGenObjC/debug-info-property.m | 3 +- test/CodeGenObjC/debug-info-property2.m | 3 +- test/CodeGenObjC/debug-info-property4.m | 3 +- test/CodeGenObjC/debug-info-property5.m | 3 +- test/CodeGenObjC/debug-info-pubtypes.m | 2 +- test/CodeGenObjC/debug-info-self.m | 2 +- test/CodeGenObjC/debug-property-synth.m | 28 +- test/CodeGenObjC/encode-cstyle-method.m | 2 +- test/CodeGenObjC/encode-test-6.m | 19 +- test/CodeGenObjC/encode-test.m | 10 +- test/CodeGenObjC/exceptions-asm-attribute.m | 86 + .../CodeGenObjC/externally-initialized-selectors.m | 6 +- .../forward-protocol-metadata-symbols.m | 26 + test/CodeGenObjC/getter-property-mismatch.m | 2 +- test/CodeGenObjC/image-info.m | 20 +- test/CodeGenObjC/instance-method-metadata.m | 2 +- test/CodeGenObjC/interface-layout-64.m | 18 +- test/CodeGenObjC/ivar-base-as-invariant-load.m | 8 +- test/CodeGenObjC/ivar-layout-64.m | 26 +- test/CodeGenObjC/ivar-layout-array0-struct.m | 2 +- test/CodeGenObjC/ivar-layout-no-optimize.m | 2 +- test/CodeGenObjC/metadata-symbols-32.m | 48 +- test/CodeGenObjC/metadata-symbols-64.m | 44 +- test/CodeGenObjC/metadata_symbols.m | 4 +- test/CodeGenObjC/no-vararg-messaging.m | 2 +- test/CodeGenObjC/non-lazy-classes.m | 4 +- test/CodeGenObjC/objc-align.m | 34 +- test/CodeGenObjC/objc-asm-attribute-neg-test.m | 34 + test/CodeGenObjC/objc-asm-attribute-test.m | 54 + test/CodeGenObjC/objc-read-weak-byref.m | 16 +- test/CodeGenObjC/objc2-weak-block-call.m | 2 +- test/CodeGenObjC/objc2-weak-import-attribute.m | 2 +- test/CodeGenObjC/optimize-ivar-offset-load.m | 64 + test/CodeGenObjC/overloadable.m | 8 +- test/CodeGenObjC/property-array-type.m | 30 + test/CodeGenObjC/property-category-impl.m | 4 +- test/CodeGenObjC/property-dbg.m | 3 +- test/CodeGenObjC/property-list-in-class.m | 2 +- test/CodeGenObjC/property-section-attribute.m | 13 + test/CodeGenObjC/protocol-in-extended-class.m | 2 +- test/CodeGenObjC/reorder-synthesized-ivars.m | 36 +- test/CodeGenObjC/return-objc-object.mm | 4 +- test/CodeGenObjC/stret-1.m | 20 + test/CodeGenObjC/stret.m | 22 + test/CodeGenObjC/try.m | 2 +- test/CodeGenObjC/weak-metaclass-visibility.m | 60 + test/CodeGenObjCXX/arc-blocks.mm | 4 +- test/CodeGenObjCXX/arc-cxx11-member-init.mm | 32 + test/CodeGenObjCXX/arc-globals.mm | 2 +- test/CodeGenObjCXX/arc-mangle.mm | 2 +- test/CodeGenObjCXX/arc-move.mm | 6 +- test/CodeGenObjCXX/arc-special-member-functions.mm | 2 +- test/CodeGenObjCXX/encode.mm | 2 +- .../externally-initialized-selectors.mm | 6 +- .../CodeGenObjCXX/implicit-copy-assign-operator.mm | 2 +- test/CodeGenObjCXX/implicit-copy-constructor.mm | 2 +- test/CodeGenObjCXX/lambda-expressions.mm | 4 +- test/CodeGenObjCXX/lvalue-reference-getter.mm | 4 +- test/CodeGenObjCXX/message-reference.mm | 2 +- .../CodeGenObjCXX/microsoft-abi-arc-param-order.mm | 20 + test/CodeGenObjCXX/property-dot-reference.mm | 10 +- test/CodeGenObjCXX/property-lvalue-capture.mm | 53 + test/CodeGenObjCXX/property-object-reference-2.mm | 4 +- test/CodeGenObjCXX/property-objects.mm | 6 +- test/CodeGenObjCXX/property-reference.mm | 6 +- test/CodeGenObjCXX/rtti.mm | 14 +- .../address-space-constant-initializers.cl | 20 + test/CodeGenOpenCL/address-spaces-mangling.cl | 4 +- test/CodeGenOpenCL/builtins-r600.cl | 114 + test/CodeGenOpenCL/kernel-arg-info.cl | 10 +- test/CodeGenOpenCL/local.cl | 4 +- test/CodeGenOpenCL/str_literals.cl | 2 +- test/Coverage/c-language-features.inc | 12 + test/Coverage/html-diagnostics.c | 2 + .../aarch64-linux-android/bin/.keep | 0 .../aarch64-linux-android/include/c++/4.8/.keep | 0 .../aarch64-linux-android/lib/.keep | 0 .../arm-linux-androideabi/bin/ld | 0 .../arm-linux-androideabi/bin/ld.bfd | 0 .../arm-linux-androideabi/bin/ld.gold | 0 .../bin/arm-linux-androideabi-ld | 0 .../bin/arm-linux-androideabi-ld.bfd | 0 .../bin/arm-linux-androideabi-ld.gold | 0 .../lib/gcc/aarch64-linux-android/4.8/crtbegin.o | 0 .../lib/gcc/aarch64-linux-android/4.8/crtbeginS.o | 0 .../lib/gcc/aarch64-linux-android/4.8/crtbeginT.o | 0 .../lib/gcc/aarch64-linux-android/4.8/crtend.o | 0 .../lib/gcc/aarch64-linux-android/4.8/crtendS.o | 0 .../Inputs/basic_freebsd_tree/usr/bin/ld.bfd | 0 .../Inputs/basic_freebsd_tree/usr/bin/ld.gold | 0 .../Inputs/basic_linux_libcxx_tree/usr/bin/.keep | 0 .../usr/include/c++/v1/.keep | 0 .../Inputs/basic_linux_libcxx_tree/usr/lib/.keep | 0 .../Inputs/basic_netbsd_tree/usr/lib/64/crti.o | 0 .../Inputs/basic_netbsd_tree/usr/lib/eabi/crti.o | 0 .../Inputs/basic_netbsd_tree/usr/lib/i386/crti.o | 0 .../Inputs/basic_netbsd_tree/usr/lib/o32/crti.o | 0 .../Inputs/basic_netbsd_tree/usr/lib/oabi/crti.o | 0 .../Inputs/basic_netbsd_tree/usr/lib/sparc/crti.o | 0 test/Driver/Inputs/cl-libs/cl-test.lib | 0 .../lib/mips64-linux-gnuabi64/.keep | 0 .../lib/mips64el-linux-gnuabi64/.keep | 0 .../usr/include/c++/4.9/backward/.keep | 0 .../include/c++/4.9/mips64-linux-gnuabi64/.keep | 0 .../include/c++/4.9/mips64el-linux-gnuabi64/.keep | 0 .../usr/include/mips64-linux-gnuabi64/.keep | 0 .../usr/include/mips64el-linux-gnuabi64/.keep | 0 .../lib/gcc/mips64-linux-gnuabi64/4.9/crtbegin.o | 0 .../usr/lib/gcc/mips64-linux-gnuabi64/4.9/crtend.o | 0 .../lib/gcc/mips64el-linux-gnuabi64/4.9/crtbegin.o | 0 .../lib/gcc/mips64el-linux-gnuabi64/4.9/crtend.o | 0 .../usr/lib/mips64-linux-gnuabi64/crt1.o | 0 .../usr/lib/mips64-linux-gnuabi64/crti.o | 0 .../usr/lib/mips64-linux-gnuabi64/crtn.o | 0 .../usr/lib/mips64el-linux-gnuabi64/crt1.o | 0 .../usr/lib/mips64el-linux-gnuabi64/crti.o | 0 .../usr/lib/mips64el-linux-gnuabi64/crtn.o | 0 .../Inputs/debian_reduced_mips_tree/lib/.keep | 0 .../lib/mips-linux-gnu/.keep | 0 .../lib/mipsel-linux-gnu/.keep | 0 .../debian_reduced_mips_tree/usr/include/.keep | 0 .../usr/include/c++/4.7/.keep | 0 .../usr/include/c++/4.7/backward/.keep | 0 .../usr/include/c++/4.7/mips-linux-gnu/.keep | 0 .../usr/include/c++/4.7/mipsel-linux-gnu/.keep | 0 .../usr/include/mips-linux-gnu/.keep | 0 .../usr/include/mipsel-linux-gnu/.keep | 0 .../Inputs/debian_reduced_mips_tree/usr/lib/.keep | 0 .../usr/lib/gcc/mips-linux-gnu/4.7/crtbegin.o | 0 .../usr/lib/gcc/mipsel-linux-gnu/4.7/crtbegin.o | 0 .../usr/lib/mips-linux-gnu/.keep | 0 .../usr/lib/mipsel-linux-gnu/.keep | 0 .../lib/gcc/aarch64-redhat-linux/4.9.0/crtbegin.o | 0 .../lib/gcc/aarch64-redhat-linux/4.9.0/crtend.o | 0 test/Driver/Inputs/fedora_21_tree/usr/lib64/crt1.o | 0 test/Driver/Inputs/fedora_21_tree/usr/lib64/crti.o | 0 test/Driver/Inputs/fedora_21_tree/usr/lib64/crtn.o | 0 test/Driver/Inputs/file.ll | 0 .../gentoo_linux_gcc_4.6.2_tree/usr/include/.keep | 0 .../gentoo_linux_gcc_4.6.4_tree/usr/include/.keep | 0 .../4.6.3/include-fixed/nan2008/el/.keep | 0 .../gcc/mips-linux-gnu/4.6.3/nan2008/crtbegin.o | 0 .../lib/gcc/mips-linux-gnu/4.6.3/nan2008/crtend.o | 0 .../gcc/mips-linux-gnu/4.6.3/nan2008/el/crtbegin.o | 0 .../gcc/mips-linux-gnu/4.6.3/nan2008/el/crtend.o | 0 .../mips-linux-gnu/lib/nan2008/el/.keep | 0 .../mips-linux-gnu/libc/nan2008/el/lib/.keep | 0 .../mips-linux-gnu/libc/nan2008/el/usr/lib/crt1.o | 0 .../mips-linux-gnu/libc/nan2008/el/usr/lib/crti.o | 0 .../mips-linux-gnu/libc/nan2008/el/usr/lib/crtn.o | 0 .../mips-linux-gnu/libc/nan2008/lib/.keep | 0 .../mips-linux-gnu/libc/nan2008/usr/lib/crt1.o | 0 .../mips-linux-gnu/libc/nan2008/usr/lib/crti.o | 0 .../mips-linux-gnu/libc/nan2008/usr/lib/crtn.o | 0 .../mips-mti-linux-gnu/4.9.0/el/fp64/crtbegin.o | 0 .../gcc/mips-mti-linux-gnu/4.9.0/el/fp64/crtend.o | 0 .../4.9.0/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/el/fp64/nan2008/crtend.o | 0 .../gcc/mips-mti-linux-gnu/4.9.0/fp64/crtbegin.o | 0 .../lib/gcc/mips-mti-linux-gnu/4.9.0/fp64/crtend.o | 0 .../4.9.0/fp64/nan2008/crtbegin.o | 0 .../mips-mti-linux-gnu/4.9.0/fp64/nan2008/crtend.o | 0 .../4.9.0/micromips/el/fp64/crtbegin.o | 0 .../4.9.0/micromips/el/fp64/crtend.o | 0 .../4.9.0/micromips/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/micromips/el/fp64/nan2008/crtend.o | 0 .../4.9.0/micromips/fp64/crtbegin.o | 0 .../4.9.0/micromips/fp64/crtend.o | 0 .../4.9.0/micromips/fp64/nan2008/crtbegin.o | 0 .../4.9.0/micromips/fp64/nan2008/crtend.o | 0 .../4.9.0/mips16/el/fp64/crtbegin.o | 0 .../4.9.0/mips16/el/fp64/crtend.o | 0 .../4.9.0/mips16/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips16/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips16/fp64/crtbegin.o | 0 .../mips-mti-linux-gnu/4.9.0/mips16/fp64/crtend.o | 0 .../4.9.0/mips16/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips16/fp64/nan2008/crtend.o | 0 .../4.9.0/mips32/el/fp64/crtbegin.o | 0 .../4.9.0/mips32/el/fp64/crtend.o | 0 .../4.9.0/mips32/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips32/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips32/fp64/crtbegin.o | 0 .../mips-mti-linux-gnu/4.9.0/mips32/fp64/crtend.o | 0 .../4.9.0/mips32/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips32/fp64/nan2008/crtend.o | 0 .../4.9.0/mips32/mips16/el/fp64/crtbegin.o | 0 .../4.9.0/mips32/mips16/el/fp64/crtend.o | 0 .../4.9.0/mips32/mips16/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips32/mips16/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips32/mips16/fp64/crtbegin.o | 0 .../4.9.0/mips32/mips16/fp64/crtend.o | 0 .../4.9.0/mips32/mips16/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips32/mips16/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64/64/el/fp64/crtbegin.o | 0 .../4.9.0/mips64/64/el/fp64/crtend.o | 0 .../4.9.0/mips64/64/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64/64/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64/64/fp64/crtbegin.o | 0 .../4.9.0/mips64/64/fp64/crtend.o | 0 .../4.9.0/mips64/64/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64/64/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64/el/fp64/crtbegin.o | 0 .../4.9.0/mips64/el/fp64/crtend.o | 0 .../4.9.0/mips64/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64/fp64/crtbegin.o | 0 .../mips-mti-linux-gnu/4.9.0/mips64/fp64/crtend.o | 0 .../4.9.0/mips64/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64r2/64/el/fp64/crtbegin.o | 0 .../4.9.0/mips64r2/64/el/fp64/crtend.o | 0 .../4.9.0/mips64r2/64/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64r2/64/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64r2/64/fp64/crtbegin.o | 0 .../4.9.0/mips64r2/64/fp64/crtend.o | 0 .../4.9.0/mips64r2/64/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64r2/64/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64r2/el/fp64/crtbegin.o | 0 .../4.9.0/mips64r2/el/fp64/crtend.o | 0 .../4.9.0/mips64r2/el/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64r2/el/fp64/nan2008/crtend.o | 0 .../4.9.0/mips64r2/fp64/crtbegin.o | 0 .../4.9.0/mips64r2/fp64/crtend.o | 0 .../4.9.0/mips64r2/fp64/nan2008/crtbegin.o | 0 .../4.9.0/mips64r2/fp64/nan2008/crtend.o | 0 .../4.9.0/mips-mti-linux-gnu/el/fp64/bits/.keep | 0 .../c++/4.9.0/mips-mti-linux-gnu/fp64/bits/.keep | 0 .../micromips/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/micromips/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips16/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips16/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips32/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips32/fp64/bits/.keep | 0 .../mips64/64/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64/64/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64/fp64/bits/.keep | 0 .../mips64r2/64/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64r2/64/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64r2/el/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/mips64r2/fp64/bits/.keep | 0 .../mips-mti-linux-gnu/lib/el/fp64/nan2008/.keep | 0 .../mips-mti-linux-gnu/lib/fp64/nan2008/.keep | 0 .../lib/micromips/el/fp64/nan2008/.keep | 0 .../lib/micromips/fp64/nan2008/.keep | 0 .../lib/mips16/el/fp64/nan2008/.keep | 0 .../lib/mips16/fp64/nan2008/.keep | 0 .../lib/mips32/el/fp64/nan2008/.keep | 0 .../lib/mips32/fp64/nan2008/.keep | 0 .../lib/mips32/mips16/el/fp64/nan2008/.keep | 0 .../lib/mips32/mips16/fp64/nan2008/.keep | 0 .../lib/mips64/64/el/fp64/nan2008/.keep | 0 .../lib/mips64/64/fp64/nan2008/.keep | 0 .../lib/mips64/el/fp64/nan2008/.keep | 0 .../lib/mips64/fp64/nan2008/.keep | 0 .../lib/mips64r2/64/el/fp64/nan2008/.keep | 0 .../lib/mips64r2/64/fp64/nan2008/.keep | 0 .../lib/mips64r2/el/fp64/nan2008/.keep | 0 .../lib/mips64r2/fp64/nan2008/.keep | 0 .../sysroot/el/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/el/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/el/fp64/nan2008/usr/lib/crtn.o | 0 .../mips_fsf_tree/sysroot/el/fp64/usr/lib/crt1.o | 0 .../mips_fsf_tree/sysroot/el/fp64/usr/lib/crti.o | 0 .../mips_fsf_tree/sysroot/el/fp64/usr/lib/crtn.o | 0 .../sysroot/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/fp64/nan2008/usr/lib/crtn.o | 0 .../mips_fsf_tree/sysroot/fp64/usr/lib/crt1.o | 0 .../mips_fsf_tree/sysroot/fp64/usr/lib/crti.o | 0 .../mips_fsf_tree/sysroot/fp64/usr/lib/crtn.o | 0 .../micromips/el/fp64/nan2008/usr/lib/crt1.o | 0 .../micromips/el/fp64/nan2008/usr/lib/crti.o | 0 .../micromips/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/micromips/el/fp64/usr/lib/crt1.o | 0 .../sysroot/micromips/el/fp64/usr/lib/crti.o | 0 .../sysroot/micromips/el/fp64/usr/lib/crtn.o | 0 .../sysroot/micromips/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/micromips/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/micromips/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/micromips/fp64/usr/lib/crt1.o | 0 .../sysroot/micromips/fp64/usr/lib/crti.o | 0 .../sysroot/micromips/fp64/usr/lib/crtn.o | 0 .../sysroot/mips16/el/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips16/el/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips16/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips16/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips16/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips16/el/fp64/usr/lib/crtn.o | 0 .../sysroot/mips16/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips16/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips16/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips16/fp64/usr/lib/crt1.o | 0 .../sysroot/mips16/fp64/usr/lib/crti.o | 0 .../sysroot/mips16/fp64/usr/lib/crtn.o | 0 .../sysroot/mips32/el/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips32/el/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips32/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips32/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips32/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips32/el/fp64/usr/lib/crtn.o | 0 .../sysroot/mips32/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips32/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips32/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips32/fp64/usr/lib/crt1.o | 0 .../sysroot/mips32/fp64/usr/lib/crti.o | 0 .../sysroot/mips32/fp64/usr/lib/crtn.o | 0 .../mips32/mips16/el/fp64/nan2008/usr/lib/crt1.o | 0 .../mips32/mips16/el/fp64/nan2008/usr/lib/crti.o | 0 .../mips32/mips16/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips32/mips16/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips32/mips16/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips32/mips16/el/fp64/usr/lib/crtn.o | 0 .../mips32/mips16/fp64/nan2008/usr/lib/crt1.o | 0 .../mips32/mips16/fp64/nan2008/usr/lib/crti.o | 0 .../mips32/mips16/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips32/mips16/fp64/usr/lib/crt1.o | 0 .../sysroot/mips32/mips16/fp64/usr/lib/crti.o | 0 .../sysroot/mips32/mips16/fp64/usr/lib/crtn.o | 0 .../mips64/64/el/fp64/nan2008/usr/lib/crt1.o | 0 .../mips64/64/el/fp64/nan2008/usr/lib/crti.o | 0 .../mips64/64/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64/64/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64/64/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips64/64/el/fp64/usr/lib/crtn.o | 0 .../sysroot/mips64/64/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips64/64/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips64/64/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64/64/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64/64/fp64/usr/lib/crti.o | 0 .../sysroot/mips64/64/fp64/usr/lib/crtn.o | 0 .../sysroot/mips64/el/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips64/el/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips64/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips64/el/fp64/usr/lib/crtn.o | 0 .../sysroot/mips64/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips64/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips64/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64/fp64/usr/lib/crti.o | 0 .../sysroot/mips64/fp64/usr/lib/crtn.o | 0 .../mips64r2/64/el/fp64/nan2008/usr/lib/crt1.o | 0 .../mips64r2/64/el/fp64/nan2008/usr/lib/crti.o | 0 .../mips64r2/64/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64r2/64/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64r2/64/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips64r2/64/el/fp64/usr/lib/crtn.o | 0 .../mips64r2/64/fp64/nan2008/usr/lib/crt1.o | 0 .../mips64r2/64/fp64/nan2008/usr/lib/crti.o | 0 .../mips64r2/64/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64r2/64/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64r2/64/fp64/usr/lib/crti.o | 0 .../sysroot/mips64r2/64/fp64/usr/lib/crtn.o | 0 .../mips64r2/el/fp64/nan2008/usr/lib/crt1.o | 0 .../mips64r2/el/fp64/nan2008/usr/lib/crti.o | 0 .../mips64r2/el/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64r2/el/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64r2/el/fp64/usr/lib/crti.o | 0 .../sysroot/mips64r2/el/fp64/usr/lib/crtn.o | 0 .../sysroot/mips64r2/fp64/nan2008/usr/lib/crt1.o | 0 .../sysroot/mips64r2/fp64/nan2008/usr/lib/crti.o | 0 .../sysroot/mips64r2/fp64/nan2008/usr/lib/crtn.o | 0 .../sysroot/mips64r2/fp64/usr/lib/crt1.o | 0 .../sysroot/mips64r2/fp64/usr/lib/crti.o | 0 .../sysroot/mips64r2/fp64/usr/lib/crtn.o | 0 test/Driver/Inputs/mips_img_tree/bin/.keep | 0 .../lib/gcc/mips-img-linux-gnu/4.9.0/crtbegin.o | 0 .../lib/gcc/mips-img-linux-gnu/4.9.0/crtend.o | 0 .../lib/gcc/mips-img-linux-gnu/4.9.0/el/crtbegin.o | 0 .../lib/gcc/mips-img-linux-gnu/4.9.0/el/crtend.o | 0 .../4.9.0/include-fixed/el/.keep | 0 .../4.9.0/include-fixed/mips64r6/64/el/.keep | 0 .../4.9.0/include-fixed/mips64r6/el/.keep | 0 .../lib/gcc/mips-img-linux-gnu/4.9.0/include/.keep | 0 .../4.9.0/mips64r6/64/crtbegin.o | 0 .../mips-img-linux-gnu/4.9.0/mips64r6/64/crtend.o | 0 .../4.9.0/mips64r6/64/el/crtbegin.o | 0 .../4.9.0/mips64r6/64/el/crtend.o | 0 .../mips-img-linux-gnu/4.9.0/mips64r6/crtbegin.o | 0 .../gcc/mips-img-linux-gnu/4.9.0/mips64r6/crtend.o | 0 .../4.9.0/mips64r6/el/crtbegin.o | 0 .../mips-img-linux-gnu/4.9.0/mips64r6/el/crtend.o | 0 .../mips_img_tree/mips-img-linux-gnu/bin/.keep | 0 .../mips-img-linux-gnu/include/c++/4.9.0/.keep | 0 .../mips_img_tree/mips-img-linux-gnu/lib/el/.keep | 0 .../mips-img-linux-gnu/lib/mips64r6/64/el/.keep | 0 .../mips-img-linux-gnu/lib/mips64r6/el/.keep | 0 .../Inputs/mips_img_tree/sysroot/el/usr/bin/.keep | 0 .../Inputs/mips_img_tree/sysroot/el/usr/lib/crt1.o | 0 .../Inputs/mips_img_tree/sysroot/el/usr/lib/crti.o | 0 .../Inputs/mips_img_tree/sysroot/el/usr/lib/crtn.o | 0 .../Inputs/mips_img_tree/sysroot/el/usr/sbin/.keep | 0 .../sysroot/mips64r6/64/el/usr/bin/.keep | 0 .../sysroot/mips64r6/64/el/usr/lib/crt1.o | 0 .../sysroot/mips64r6/64/el/usr/lib/crti.o | 0 .../sysroot/mips64r6/64/el/usr/lib/crtn.o | 0 .../sysroot/mips64r6/64/el/usr/sbin/.keep | 0 .../sysroot/mips64r6/64/usr/bin/.keep | 0 .../sysroot/mips64r6/64/usr/lib/crt1.o | 0 .../sysroot/mips64r6/64/usr/lib/crti.o | 0 .../sysroot/mips64r6/64/usr/lib/crtn.o | 0 .../sysroot/mips64r6/64/usr/sbin/.keep | 0 .../sysroot/mips64r6/el/usr/bin/.keep | 0 .../sysroot/mips64r6/el/usr/lib/crt1.o | 0 .../sysroot/mips64r6/el/usr/lib/crti.o | 0 .../sysroot/mips64r6/el/usr/lib/crtn.o | 0 .../sysroot/mips64r6/el/usr/sbin/.keep | 0 .../mips_img_tree/sysroot/mips64r6/usr/bin/.keep | 0 .../mips_img_tree/sysroot/mips64r6/usr/lib/crt1.o | 0 .../mips_img_tree/sysroot/mips64r6/usr/lib/crti.o | 0 .../mips_img_tree/sysroot/mips64r6/usr/lib/crtn.o | 0 .../mips_img_tree/sysroot/mips64r6/usr/sbin/.keep | 0 .../Inputs/mips_img_tree/sysroot/usr/bin/.keep | 0 .../Inputs/mips_img_tree/sysroot/usr/include/.keep | 0 .../Inputs/mips_img_tree/sysroot/usr/lib/crt1.o | 0 .../Inputs/mips_img_tree/sysroot/usr/lib/crti.o | 0 .../Inputs/mips_img_tree/sysroot/usr/lib/crtn.o | 0 .../Inputs/mips_img_tree/sysroot/usr/sbin/.keep | 0 test/Driver/Inputs/module/module.modulemap | 4 + test/Driver/Inputs/module/simple.h | 1 + .../Inputs/multilib_64bit_linux_tree/libx32/.keep | 0 .../gcc/x86_64-unknown-linux/4.6.0/x32/crtbegin.o | 0 .../gcc/x86_64-unknown-gnu/4.6.0/32/crtbegin.o | 0 .../libx32/gcc/x86_64-unknown-gnu/4.6.0/crtbegin.o | 0 .../gcc/x86_64-unknown-gnu/4.6.0/x32/crtbegin.o | 0 .../usr/x86_64-unknown-linux/libx32/.keep | 0 .../lib/macho_embedded/libclang_rt.hard_pic.a | 0 .../lib/macho_embedded/libclang_rt.hard_static.a | 0 .../lib/macho_embedded/libclang_rt.soft_pic.a | 0 .../lib/macho_embedded/libclang_rt.soft_static.a | 0 .../lib/powerpc64le-linux-gnu/.keep | 0 .../lib/x86_64-linux-gnu/.keep | 0 .../ubuntu_14.04_multiarch_tree/libx32/.keep | 0 .../usr/include/c++/4.8/backward/.keep | 0 .../include/powerpc64le-linux-gnu/c++/4.8/.keep | 0 .../usr/include/x86_64-linux-gnu/c++/4.8/32/.keep | 0 .../usr/include/x86_64-linux-gnu/c++/4.8/x32/.keep | 0 .../lib/gcc/powerpc64le-linux-gnu/4.8/crtbegin.o | 0 .../usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtend.o | 0 .../usr/lib/gcc/powerpc64le-linux-gnu/4.9/.keep | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o | 0 .../lib/gcc/x86_64-linux-gnu/4.8/x32/crtbegin.o | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.9/.keep | 0 .../usr/lib/powerpc64le-linux-gnu/crt1.o | 0 .../usr/lib/powerpc64le-linux-gnu/crti.o | 0 .../usr/lib/powerpc64le-linux-gnu/crtn.o | 0 .../usr/lib/x86_64-linux-gnu/.keep | 0 .../ubuntu_14.04_multiarch_tree/usr/libx32/crt1.o | 0 .../ubuntu_14.04_multiarch_tree/usr/libx32/crti.o | 0 .../ubuntu_14.04_multiarch_tree/usr/libx32/crtn.o | 0 .../lib/i386-linux-gnu/.keep | 0 .../lib/x86_64-linux-gnu/.keep | 0 .../usr/include/c++/4.8/backward/.keep | 0 .../usr/include/i386-linux-gnu/c++/4.8/.keep | 0 .../usr/include/x86_64-linux-gnu/c++/4.8/32/.keep | 0 .../usr/lib/gcc/i686-linux-gnu/4.8/crtbegin.o | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o | 0 .../usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o | 0 .../usr/lib/i386-linux-gnu/.keep | 0 .../usr/lib/x86_64-linux-gnu/.keep | 0 test/Driver/Inputs/wildcard1.c | 0 test/Driver/Inputs/wildcard2.c | 0 test/Driver/Xlinker-args.c | 8 +- test/Driver/aarch64-cpus.c | 81 + test/Driver/aarch64-features.c | 1 + test/Driver/aarch64-mfpu.c | 26 - test/Driver/aarch64-mgeneral_regs_only.c | 9 + test/Driver/altivec-asm.S | 1 + test/Driver/android-standalone.cpp | 30 + test/Driver/arm-alignment.c | 41 +- test/Driver/arm-arch-darwin.c | 6 + test/Driver/arm-cortex-cpus.c | 256 +- test/Driver/arm-hwdiv.c | 5 + test/Driver/arm-long-calls.c | 15 + test/Driver/arm-mfpu.c | 35 +- test/Driver/arm64-as.s | 5 + test/Driver/arm64-darwinpcs.c | 3 + test/Driver/asan.c | 11 +- test/Driver/at_file_missing.c | 7 + test/Driver/bindings.c | 4 +- test/Driver/bitrig.c | 12 +- test/Driver/bounds-checking.c | 11 - test/Driver/cfi.c | 9 - test/Driver/cl-eh.cpp | 24 + test/Driver/cl-fallback.c | 40 +- test/Driver/cl-inputs.c | 17 + test/Driver/cl-link.c | 5 + test/Driver/cl-options.c | 116 +- test/Driver/cl-outputs.c | 12 + test/Driver/cl-x86-flags.c | 83 + test/Driver/cl.c | 1 - test/Driver/clang-g-opts.c | 14 +- test/Driver/clang-translation.c | 63 +- test/Driver/clang_f_opts.c | 103 +- test/Driver/code-model.c | 13 + test/Driver/compress.c | 8 + test/Driver/constructors.c | 9 + test/Driver/coverage-ld.c | 9 + test/Driver/crash-report-modules.m | 32 + test/Driver/crash-report.c | 3 +- test/Driver/cross-linux.c | 8 + test/Driver/darwin-asan-nofortify.c | 3 +- test/Driver/darwin-dsymutil.c | 3 + test/Driver/darwin-eabi.c | 12 - test/Driver/darwin-embedded.c | 60 + test/Driver/darwin-ld.c | 50 + test/Driver/darwin-objc-defaults.m | 9 + test/Driver/darwin-objc-options.m | 3 + test/Driver/darwin-verify-debug.c | 10 +- test/Driver/debug-options.c | 56 +- test/Driver/dwarf2-cfi-asm.c | 35 - test/Driver/dyld-prefix.c | 3 + test/Driver/fast-math.c | 3 + test/Driver/freebsd-mips-as.c | 28 +- test/Driver/freebsd.c | 39 +- test/Driver/fsanitize.c | 89 +- test/Driver/function-sections.c | 62 + test/Driver/fuse-ld.c | 63 + test/Driver/gcc_forward.c | 15 +- test/Driver/gold-lto.c | 5 + test/Driver/hexagon-toolchain-elf.c | 40 +- test/Driver/hexagon-toolchain.c | 40 +- test/Driver/ident_md.c | 4 +- test/Driver/implicit-function-as-error.c | 9 + test/Driver/instrprof-ld.c | 58 + test/Driver/integrated-as.c | 11 + test/Driver/integrated-as.s | 28 +- test/Driver/krait-cpu.c | 3 + test/Driver/linker-opts.c | 5 + test/Driver/linux-as.c | 26 + test/Driver/linux-header-search.cpp | 119 +- test/Driver/linux-ld.c | 491 +- test/Driver/macho-embedded.c | 15 + test/Driver/masm.c | 12 + test/Driver/mips-abi.c | 101 +- test/Driver/mips-as.c | 196 +- test/Driver/mips-cs-header-search.cpp | 257 - test/Driver/mips-cs-ld.c | 288 - test/Driver/mips-cs.cpp | 504 + test/Driver/mips-eleb.c | 12 +- test/Driver/mips-features.c | 34 + test/Driver/mips-float.c | 18 +- test/Driver/mips-fsf.cpp | 1256 +- test/Driver/mips-img.cpp | 163 + test/Driver/mips-integrated-as.s | 207 + test/Driver/mips-reduced-toolchain.cpp | 28 + test/Driver/mno-global-merge.c | 8 + test/Driver/modules.m | 15 + test/Driver/msc-version.c | 68 + test/Driver/netbsd.c | 231 +- test/Driver/netbsd.cpp | 166 +- test/Driver/no-integrated-as.c | 19 + test/Driver/nostdincxx.cpp | 4 +- test/Driver/nozlibcompress.c | 6 + test/Driver/openbsd.c | 15 + test/Driver/pch-deps.c | 10 + test/Driver/pic.c | 24 +- test/Driver/ppc-features.cpp | 29 +- test/Driver/preprocess-multiple.c | 6 + test/Driver/qa_override.c | 6 +- test/Driver/r600-mcpu.cl | 2 + test/Driver/sanitize_unwind_tables.c | 11 + test/Driver/sanitizer-ld.c | 98 +- test/Driver/sparc-float.c | 38 + test/Driver/stack-protector.c | 20 +- test/Driver/std.cpp | 8 + test/Driver/target-triple-deployment.c | 12 +- test/Driver/target.c | 6 - test/Driver/unknown-gcc-arch.c | 40 +- test/Driver/verify_pch.m | 12 + test/Driver/vfsoverlay.c | 5 + test/Driver/via-file-asm.c | 10 + test/Driver/visibility.cpp | 16 +- test/Driver/windows-arm-minimal-arch.c | 5 + test/Driver/windows-wildcard-expansion.c | 7 + test/Driver/woa-restrict-it.c | 4 + test/Driver/x86_m16.c | 4 + test/Driver/xcore-opts.c | 27 +- test/FixIt/fixit-cxx0x.cpp | 23 +- test/FixIt/fixit-include.h | 2 +- test/FixIt/fixit-multiple-selector-warnings.m | 26 + test/FixIt/fixit-objc-arc.m | 24 + test/FixIt/fixit-objc-bridge-related-attr.m | 35 + test/FixIt/fixit-objc-bridge-related-property.m | 23 + test/FixIt/fixit-objc-bridge-related.m | 43 + test/FixIt/fixit-objc.m | 20 +- test/FixIt/fixit-unicode-with-utf8-output.c | 1 + test/FixIt/fixit.cpp | 6 +- test/FixIt/format-darwin.m | 34 +- test/FixIt/format.m | 30 +- test/FixIt/lit.local.cfg | 2 - test/FixIt/no-diagnostics-fixit-info.c | 16 + test/FixIt/typo-location-bugs.cpp | 15 + test/Format/disable-format.cpp | 6 + test/Format/language-detection.cpp | 7 + test/Format/style-on-command-line.cpp | 19 +- test/Frontend/Inputs/rewrite-includes-messages.h | 4 + test/Frontend/backend-diagnostic.c | 31 + test/Frontend/darwin-eabi.c | 2 +- test/Frontend/darwin-version.c | 2 + test/Frontend/disable-output.c | 7 + test/Frontend/exceptions.c | 6 + test/Frontend/invalid-o-level.c | 2 +- test/Frontend/ir-support-codegen.ll | 10 +- test/Frontend/ir-support.c | 19 + test/Frontend/lit.local.cfg | 2 +- test/Frontend/optimization-remark-line-directive.c | 12 + test/Frontend/optimization-remark.c | 51 + test/Frontend/plugins.c | 5 + test/Frontend/print-header-includes.c | 8 +- test/Frontend/rewrite-includes-bom.c | 6 +- test/Frontend/rewrite-includes-cli-include.c | 9 + test/Frontend/rewrite-includes-eof.c | 4 + test/Frontend/rewrite-includes-messages.c | 7 + test/Frontend/rewrite-includes-missing.c | 1 + test/Frontend/rewrite-includes-modules.c | 2 + test/Frontend/rewrite-includes.c | 11 + test/Frontend/rewrite-macros.c | 2 - test/Frontend/stdlang.c | 9 + test/Frontend/system-header-prefix.c | 9 +- test/Frontend/verify.c | 11 +- test/Frontend/verify2.c | 21 +- test/Frontend/verify2.h | 4 +- test/Frontend/warning-options.cpp | 4 +- test/Frontend/windows-nul.c | 8 + test/Headers/Inputs/include/setjmp.h | 8 + test/Headers/altivec-header.c | 9 +- test/Headers/arm-acle-header.c | 9 + test/Headers/c11.c | 12 +- test/Headers/cxx11.cpp | 2 + test/Headers/ms-intrin.cpp | 26 +- test/Headers/ms-null-ms-header-vs-stddef.cpp | 2 +- test/Headers/stddefneeds.cpp | 69 + test/Headers/xmmintrin.c | 13 + test/Index/Inputs/CommentXML/valid-function-02.xml | 11 +- .../DocCommentsA.framework/Headers/DocCommentsA.h | 8 + .../DocCommentsB.framework/Headers/DocCommentsB.h | 7 + .../DocCommentsC.framework/Headers/DocCommentsC.h | 2 + test/Index/Inputs/base_module_needs_vfs.h | 1 + .../Inputs/crash-recovery-code-complete-remap.c | 4 +- test/Index/Inputs/module.map | 6 + test/Index/Inputs/module_needs_vfs.h | 4 + .../retain-comments-from-system-headers-module.map | 4 + test/Index/Inputs/usrs-system.h | 1 + test/Index/Inputs/vfsoverlay.yaml | 18 + test/Index/annotate-comments-objc.m | 74 +- test/Index/annotate-comments-typedef.m | 2 +- test/Index/annotate-deep-statements.cpp | 4 +- test/Index/annotate-module.m | 2 +- test/Index/annotate-tokens-cxx0x.cpp | 4 +- test/Index/annotate-tokens.cpp | 28 +- test/Index/attributes-cuda.cu | 15 + test/Index/attributes.c | 10 + test/Index/comment-cplus-decls.cpp | 2 +- test/Index/comment-cplus-template-decls.cpp | 17 +- test/Index/comment-to-html-xml-conversion.cpp | 196 +- test/Index/comment-xml-schema.c | 1 + test/Index/complete-macros.c | 23 +- test/Index/complete-macros.h | 6 + test/Index/complete-method-decls.m | 19 + test/Index/complete-property-flags.m | 12 +- test/Index/complete-recovery.m | 2 +- test/Index/crash-recovery-code-complete.c | 4 +- test/Index/crash-recovery-reparse.c | 2 +- test/Index/crash-recovery.c | 1 + test/Index/cxx11-lambdas.cpp | 4 +- test/Index/fix-its.m | 2 - test/Index/index-module-with-vfs.m | 26 + test/Index/index-module.m | 14 +- test/Index/index-pch-objc.m | 10 + test/Index/index-refs.cpp | 2 +- test/Index/index-templates.cpp | 2 +- test/Index/load-classes.cpp | 32 +- test/Index/load-decls.c | 7 + test/Index/load-namespaces.cpp | 2 +- test/Index/local-symbols.m | 7 + test/Index/pch-depending-on-deleted-module.c | 14 + test/Index/preamble-reparse-cmd-define.c | 2 +- test/Index/preamble-reparse-warn-end-of-file.c | 11 + test/Index/preamble-reparse-warn-macro.c | 12 + test/Index/preamble-reparse.c | 2 +- test/Index/preamble.c | 16 +- test/Index/print-type-cxx11.cpp | 4 +- test/Index/print-type.c | 16 +- test/Index/print-type.cpp | 99 +- test/Index/print-type.m | 2 +- test/Index/recursive-cxx-member-calls.cpp | 200 +- test/Index/remap-complete.c | 2 +- test/Index/remap-cursor-at.c | 2 +- test/Index/remap-load.c | 2 +- test/Index/reparse-with-remaps/reparse.c | 8 + test/Index/reparse-with-remaps/test.h | 3 + test/Index/reparse-with-remaps/test.h-0 | 6 + test/Index/reparse-with-remaps/test.h-1 | 6 + test/Index/retain-comments-from-system-headers.c | 6 +- test/Index/skipped-ranges.c | 25 + test/Index/usrs.cpp | 14 +- test/Index/usrs.m | 51 +- test/Integration/carbon.c | 4 + test/Integration/cocoa-pch.m | 7 + test/Integration/cocoa.m | 5 + test/Layout/ms-x86-alias-avoidance-padding.cpp | 599 + test/Layout/ms-x86-aligned-tail-padding.cpp | 640 +- test/Layout/ms-x86-basic-layout.cpp | 1174 +- test/Layout/ms-x86-bitfields-vbases.cpp | 160 +- .../ms-x86-empty-base-after-base-with-vbptr.cpp | 336 +- test/Layout/ms-x86-empty-nonvirtual-bases.cpp | 180 +- test/Layout/ms-x86-empty-virtual-base.cpp | 1079 +- test/Layout/ms-x86-lazy-empty-nonvirtual-base.cpp | 1154 +- test/Layout/ms-x86-member-pointers.cpp | 80 + test/Layout/ms-x86-misalignedarray.cpp | 38 +- test/Layout/ms-x86-pack-and-align.cpp | 683 ++ test/Layout/ms-x86-primary-bases.cpp | 454 +- test/Layout/ms-x86-size-alignment-fail.cpp | 160 +- test/Layout/ms-x86-vfvb-alignment.cpp | 580 +- test/Layout/ms-x86-vfvb-sharing.cpp | 186 +- test/Layout/ms-x86-vtordisp.cpp | 473 +- test/Lexer/Inputs/success.h | 1 + test/Lexer/bcpl-escaped-newline.c | 1 + test/Lexer/clang-keywords.cpp | 4 - test/Lexer/cross-windows-on-linux-default.cpp | 6 + test/Lexer/cross-windows-on-linux.cpp | 15 + test/Lexer/cxx0x_keyword.cpp | 2 - test/Lexer/cxx1y_digit_separators.cpp | 36 + test/Lexer/cxx1z-trigraphs.cpp | 9 + test/Lexer/gnu_keywords.c | 13 - test/Lexer/has_feature_cxx0x.cpp | 20 + test/Lexer/has_feature_exceptions.cpp | 8 +- test/Lexer/has_feature_type_traits.cpp | 5 + test/Lexer/hexfloat.cpp | 2 +- test/Lexer/keywords_test.c | 29 + test/Lexer/keywords_test.cpp | 34 + test/Lexer/ms-extensions.c | 8 + test/Lexer/warn-date-time.c | 23 + test/Makefile | 4 +- test/Misc/Inputs/serialized-diags-stable.dia | Bin 0 -> 580 bytes test/Misc/ast-dump-arm-attr.c | 5 + test/Misc/ast-dump-attr.cpp | 50 +- test/Misc/ast-dump-color.cpp | 64 +- test/Misc/ast-dump-comment.cpp | 8 + test/Misc/ast-dump-decl.c | 4 +- test/Misc/ast-dump-decl.cpp | 43 +- test/Misc/ast-dump-msp430-attr.c | 5 + test/Misc/ast-print-pragmas-xfail.cpp | 21 + test/Misc/ast-print-pragmas.cpp | 40 + test/Misc/backend-optimization-failure.cpp | 21 + .../backend-stack-frame-diagnostics-fallback.cpp | 18 + test/Misc/backend-stack-frame-diagnostics.cpp | 85 + test/Misc/diag-format.c | 22 +- test/Misc/diag-mapping2.c | 11 +- test/Misc/diag-template-diffing.cpp | 191 +- test/Misc/driver-verify.c | 6 + test/Misc/error-limit-multiple-notes.cpp | 16 +- test/Misc/interpreter.c | 10 + test/Misc/languageOptsOpenCL.cl | 26 +- test/Misc/serialized-diags-stable.c | 20 + test/Misc/verify.c | 10 +- test/Misc/warn-sysheader.cpp | 33 + test/Misc/warning-flags.c | 45 +- test/Misc/win32-macho.c | 2 + test/Modules/Inputs/ModuleMapLocations/Both/a.h | 0 test/Modules/Inputs/ModuleMapLocations/Both/b.h | 1 + .../Inputs/ModuleMapLocations/Both/module.map | 3 + .../ModuleMapLocations/Both/module.modulemap | 3 + .../Both_F.framework/Headers/a.h | 1 + .../Both_F.framework/Headers/b.h | 1 + .../Both_F.framework/Modules/module.modulemap | 3 + .../ModuleMapLocations/Both_F.framework/module.map | 3 + .../Inferred.framework/Headers/Inferred.h | 0 .../Inputs/ModuleMapLocations/Module_ModuleMap/a.h | 1 + .../Module_ModuleMap/module.modulemap | 3 + .../Module_ModuleMap_F.framework/Headers/a.h | 0 .../Modules/module.modulemap | 3 + .../Modules/module.private.modulemap | 3 + .../PrivateHeaders/private.h | 0 .../Inputs/ModuleMapLocations/module.modulemap | 2 + test/Modules/Inputs/autolink-sub3.h | 1 + test/Modules/Inputs/autolink-sub3.pch | 1 + test/Modules/Inputs/c-header-bad.h | 4 + test/Modules/Inputs/c-header.h | 1 + test/Modules/Inputs/cxx-decls-imported.h | 20 + test/Modules/Inputs/cxx-decls-merged.h | 1 + test/Modules/Inputs/cxx-header.h | 1 + test/Modules/Inputs/cxx-inline-namespace-b.h | 5 + test/Modules/Inputs/cxx-inline-namespace.h | 6 + test/Modules/Inputs/cxx-irgen-left.h | 11 + test/Modules/Inputs/cxx-irgen-right.h | 3 + test/Modules/Inputs/cxx-irgen-top.h | 16 + test/Modules/Inputs/cxx-templates-a.h | 25 + test/Modules/Inputs/cxx-templates-b-impl.h | 7 + test/Modules/Inputs/cxx-templates-b.h | 5 + test/Modules/Inputs/cxx-templates-c.h | 6 + test/Modules/Inputs/cxx-templates-common.h | 27 + test/Modules/Inputs/declare-use/e.h | 3 +- test/Modules/Inputs/declare-use/h.h | 2 +- test/Modules/Inputs/declare-use/i.h | 1 + test/Modules/Inputs/declare-use/j.h | 14 + test/Modules/Inputs/declare-use/module.map | 13 + test/Modules/Inputs/declare-use/s.h | 0 test/Modules/Inputs/elsewhere/c-header-indirect.h | 1 + test/Modules/Inputs/elsewhere/module.map | 1 + test/Modules/Inputs/exclude-header/module.map | 3 + test/Modules/Inputs/exclude-header/x/a.h | 1 + test/Modules/Inputs/exclude-header/x/bad.h | 1 + test/Modules/Inputs/exclude-header/y/b.h | 1 + test/Modules/Inputs/include-relative/a.h | 1 + test/Modules/Inputs/include-relative/module.map | 1 + test/Modules/Inputs/macro-hiding/a1.h | 1 + test/Modules/Inputs/macro-hiding/a2.h | 0 test/Modules/Inputs/macro-hiding/b1.h | 0 test/Modules/Inputs/macro-hiding/b2.h | 2 + test/Modules/Inputs/macro-hiding/c1.h | 2 + test/Modules/Inputs/macro-hiding/d1.h | 2 + test/Modules/Inputs/macro-hiding/e1.h | 1 + test/Modules/Inputs/macro-hiding/e2.h | 2 + test/Modules/Inputs/macro-hiding/module.modulemap | 18 + test/Modules/Inputs/macro-undef-through-pch/A.h | 2 + test/Modules/Inputs/macro-undef-through-pch/foo.h | 1 + .../Inputs/macro-undef-through-pch/module.map | 3 + test/Modules/Inputs/macros_other.h | 7 +- test/Modules/Inputs/macros_right.h | 2 + test/Modules/Inputs/macros_right_undef.h | 3 + test/Modules/Inputs/macros_top.h | 8 + test/Modules/Inputs/macros_top_b.h | 5 + test/Modules/Inputs/macros_top_c.h | 2 + test/Modules/Inputs/malformed/a1.h | 1 + test/Modules/Inputs/malformed/a2.h | 1 + test/Modules/Inputs/malformed/b1.h | 3 + test/Modules/Inputs/malformed/b2.h | 1 + test/Modules/Inputs/malformed/module.map | 8 + test/Modules/Inputs/module.map | 31 + .../modules-with-same-name/DependsOnA/DependsOnA.h | 1 + .../DependsOnA/module.modulemap | 4 + .../Inputs/modules-with-same-name/path1/A/a.h | 1 + .../path1/A/module.modulemap | 5 + .../Inputs/modules-with-same-name/path2/A/a.h | 1 + .../path2/A/module.modulemap | 5 + test/Modules/Inputs/namespaces-left.h | 13 + test/Modules/Inputs/namespaces-top.h | 4 + test/Modules/Inputs/recursive1.h | 1 + test/Modules/Inputs/recursive2.h | 1 + test/Modules/Inputs/redecl-add-after-load-decls.h | 24 + test/Modules/Inputs/redecl-add-after-load-top.h | 5 + test/Modules/Inputs/redecl-add-after-load.h | 23 + .../A.framework/Headers/A.h | 1 + .../require-modular-includes/AnotherModule.h | 1 + .../AnotherModuleExcluded.h | 1 + .../B.framework/Headers/B.h | 1 + test/Modules/Inputs/require-modular-includes/C.h | 1 + .../Headers/ExcludedFromAnotherModule.h | 1 + .../Headers/FromAnotherModule.h | 1 + .../Headers/FromImportedModuleFail.h | 2 + .../Headers/FromImportedModuleOK.h | 1 + .../Headers/FromImportedModuleOK2.h | 1 + .../Modules/module.modulemap | 4 + .../Headers/Header.h | 2 + .../Modules/module.modulemap | 5 + .../Subframework.framework/Headers/Subframework.h | 0 .../Headers/FromNonModularSubframework.h | 1 + .../Modules/module.modulemap | 3 + .../Subframework.framework/Headers/Subframework.h | 1 + .../Headers/FromSubframework.h | 1 + .../Modules/module.modulemap | 7 + .../FromUmbrella.framework/Headers/FromUmbrella.h | 2 + .../IncludeExcluded.framework/Headers/Excluded.h | 1 + .../Headers/IncludeExcluded.h | 1 + .../Modules/module.modulemap | 4 + .../Inputs/require-modular-includes/NotFramework.h | 2 + .../Inputs/require-modular-includes/NotInModule.h | 1 + .../require-modular-includes/module.modulemap | 12 + .../require-modular-includes/umbrella/bar/bar.h | 1 + .../Inputs/require-modular-includes/umbrella/foo.h | 1 + test/Modules/Inputs/string_names/a.h | 4 + test/Modules/Inputs/string_names/b.h | 4 + test/Modules/Inputs/string_names/c.h | 4 + test/Modules/Inputs/string_names/module.map | 16 + test/Modules/Inputs/string_names/sub.h | 4 + test/Modules/Inputs/submodules/import-self-b.h | 4 +- test/Modules/Inputs/submodules/module.map | 20 + test/Modules/Inputs/submodules/not_missing.h | 2 + .../Inputs/template-specialization-visibility/a.h | 8 + .../Inputs/template-specialization-visibility/b.h | 7 + .../Inputs/template-specialization-visibility/c.h | 6 + .../Inputs/template-specialization-visibility/d.h | 5 + .../Inputs/template-specialization-visibility/e.h | 6 + .../template-specialization-visibility/module.map | 7 + test/Modules/Inputs/templates-left.h | 27 + test/Modules/Inputs/templates-right.h | 12 + test/Modules/Inputs/templates-top.h | 17 + .../Modules/Inputs/undefined-type-fixit/module.map | 9 + test/Modules/Inputs/undefined-type-fixit/public1.h | 6 + test/Modules/Inputs/undefined-type-fixit/public2.h | 6 + .../Inputs/undefined-type-fixit/public2sub.h | 6 + .../Inputs/unnecessary-module-map-parsing/a1.h | 1 + .../unnecessary-module-map-parsing/module.map | 3 + test/Modules/Inputs/update-after-load/a.h | 1 + test/Modules/Inputs/update-after-load/b.h | 2 + test/Modules/Inputs/update-after-load/module.map | 1 + .../Inputs/update-after-load/modules.timestamp | 0 test/Modules/Rmodule-build.m | 34 + test/Modules/Werror-Wsystem-headers.m | 23 + test/Modules/Werror.m | 75 + test/Modules/auto-module-import.m | 6 +- test/Modules/autolink.m | 16 +- test/Modules/compiler_builtins_arm.m | 1 - test/Modules/config_macros.m | 2 +- test/Modules/cxx-decls.cpp | 15 + test/Modules/cxx-inline-namespace.cpp | 3 + test/Modules/cxx-irgen.cpp | 22 + test/Modules/cxx-templates.cpp | 54 +- test/Modules/declare-use.S | 5 + test/Modules/declare-use1.cpp | 7 +- test/Modules/declare-use2.cpp | 4 +- test/Modules/declare-use3.cpp | 4 + test/Modules/declare-use4.cpp | 10 + test/Modules/decldef.mm | 43 +- test/Modules/dependency-dump-dependent-module.m | 22 + test/Modules/dependency-dump.m | 15 + test/Modules/dependency-gen-inferred-map.m | 8 + test/Modules/dependency-gen-pch.m | 12 + test/Modules/dependency-gen.m | 22 + test/Modules/diag-pragma.c | 2 +- test/Modules/diamond-pch.c | 4 +- test/Modules/diamond.c | 2 +- test/Modules/exclude-header.c | 11 + test/Modules/extern_c.cpp | 81 + test/Modules/extern_c_bad.cpp | 2 + test/Modules/fatal-module-loader-error.m | 2 +- .../fmodules-validate-once-per-build-session.c | 45 + test/Modules/import-self.m | 11 + test/Modules/include-relative.c | 12 + test/Modules/inferred-framework-case.m | 7 + test/Modules/irgen.c | 2 +- test/Modules/linkage-merge.cpp | 5 +- test/Modules/linkage-merge.m | 2 +- test/Modules/load-after-failure.m | 25 + test/Modules/load_failure.c | 4 +- test/Modules/lookup.cpp | 4 +- test/Modules/lookup.m | 4 +- test/Modules/macro-hiding.cpp | 104 + test/Modules/macro-reexport/a1.h | 1 + test/Modules/macro-reexport/a2.h | 0 test/Modules/macro-reexport/b1.h | 0 test/Modules/macro-reexport/b2.h | 2 + test/Modules/macro-reexport/c1.h | 2 + test/Modules/macro-reexport/d1.h | 2 + test/Modules/macro-reexport/d2.h | 1 + test/Modules/macro-reexport/macro-reexport.cpp | 13 + test/Modules/macro-reexport/module.modulemap | 15 + test/Modules/macro-undef-through-pch.m | 10 + test/Modules/macros.c | 43 +- test/Modules/macros2.c | 83 + test/Modules/malformed.cpp | 23 + test/Modules/missing-header.m | 13 + test/Modules/missing-submodule.m | 7 + test/Modules/module-private.cpp | 2 +- test/Modules/module_file_info.m | 12 +- test/Modules/modulemap-locations.m | 18 + test/Modules/modules-with-same-name.m | 35 + test/Modules/namespaces.cpp | 7 +- test/Modules/no-stale-modtime.m | 37 + test/Modules/objc-categories.m | 2 +- test/Modules/objc_redef.m | 2 +- test/Modules/prune.m | 20 +- test/Modules/recursive.c | 11 + test/Modules/redecl-add-after-load.cpp | 59 + test/Modules/redecl-namespaces.mm | 2 +- test/Modules/redeclarations.m | 2 +- test/Modules/redecls/main.m | 6 +- test/Modules/renamed.m | 2 +- test/Modules/require-modular-includes.m | 83 + test/Modules/resolution-change.m | 27 + test/Modules/strict-decluse.cpp | 9 + test/Modules/string_names.cpp | 6 + test/Modules/subframework-from-intermediate-path.m | 5 + test/Modules/submodules.cpp | 8 - test/Modules/system_version.m | 6 +- .../Modules/template-specialization-visibility.cpp | 26 + test/Modules/templates.mm | 37 +- test/Modules/undefined-type-fixit1.cpp | 12 + test/Modules/unnecessary-module-map-parsing.c | 8 + test/Modules/update-after-load.cpp | 8 + test/Modules/validate-system-headers.m | 43 + test/OpenMP/barrier_ast_print.cpp | 32 + test/OpenMP/barrier_messages.cpp | 110 + test/OpenMP/critical_ast_print.cpp | 29 + test/OpenMP/critical_messages.cpp | 72 + test/OpenMP/flush_ast_print.cpp | 38 + test/OpenMP/flush_messages.cpp | 134 + test/OpenMP/for_ast_print.cpp | 64 + test/OpenMP/for_collapse_messages.cpp | 83 + test/OpenMP/for_firstprivate_messages.cpp | 293 + test/OpenMP/for_lastprivate_messages.cpp | 266 + test/OpenMP/for_loop_messages.cpp | 694 ++ test/OpenMP/for_misc_messages.c | 363 + test/OpenMP/for_private_messages.cpp | 173 + test/OpenMP/for_reduction_messages.cpp | 350 + test/OpenMP/for_schedule_messages.cpp | 91 + test/OpenMP/linking.c | 57 +- test/OpenMP/master_ast_print.cpp | 32 + test/OpenMP/master_messages.cpp | 64 + test/OpenMP/nesting_of_regions.cpp | 2278 ++++ test/OpenMP/no_option.c | 2 +- test/OpenMP/no_option_no_warn.c | 2 +- test/OpenMP/openmp_common.c | 2 +- test/OpenMP/parallel_ast_print.cpp | 72 +- test/OpenMP/parallel_codegen.cpp | 145 + test/OpenMP/parallel_copyin_messages.cpp | 67 + test/OpenMP/parallel_default_messages.cpp | 2 +- test/OpenMP/parallel_firstprivate_messages.cpp | 2 +- test/OpenMP/parallel_for_ast_print.cpp | 64 + test/OpenMP/parallel_for_collapse_messages.cpp | 83 + test/OpenMP/parallel_for_copyin_messages.cpp | 93 + test/OpenMP/parallel_for_default_messages.cpp | 36 + test/OpenMP/parallel_for_firstprivate_messages.cpp | 252 + test/OpenMP/parallel_for_if_messages.cpp | 69 + test/OpenMP/parallel_for_lastprivate_messages.cpp | 226 + test/OpenMP/parallel_for_loop_messages.cpp | 593 + test/OpenMP/parallel_for_messages.cpp | 86 + test/OpenMP/parallel_for_misc_messages.c | 309 + test/OpenMP/parallel_for_num_threads_messages.cpp | 65 + test/OpenMP/parallel_for_private_messages.cpp | 173 + test/OpenMP/parallel_for_proc_bind_messages.cpp | 35 + test/OpenMP/parallel_for_reduction_messages.cpp | 295 + test/OpenMP/parallel_for_schedule_messages.cpp | 91 + test/OpenMP/parallel_if_messages.cpp | 46 + test/OpenMP/parallel_messages.cpp | 17 +- test/OpenMP/parallel_num_threads_messages.cpp | 44 + test/OpenMP/parallel_private_messages.cpp | 14 +- test/OpenMP/parallel_proc_bind_messages.cpp | 21 + test/OpenMP/parallel_reduction_messages.cpp | 240 + test/OpenMP/parallel_sections_ast_print.cpp | 144 + test/OpenMP/parallel_sections_copyin_messages.cpp | 105 + test/OpenMP/parallel_sections_default_messages.cpp | 39 + .../parallel_sections_firstprivate_messages.cpp | 295 + test/OpenMP/parallel_sections_if_messages.cpp | 113 + .../parallel_sections_lastprivate_messages.cpp | 269 + test/OpenMP/parallel_sections_messages.cpp | 85 + test/OpenMP/parallel_sections_misc_messages.c | 260 + .../parallel_sections_num_threads_messages.cpp | 63 + test/OpenMP/parallel_sections_private_messages.cpp | 204 + .../parallel_sections_proc_bind_messages.cpp | 28 + .../parallel_sections_reduction_messages.cpp | 358 + test/OpenMP/parallel_sections_shared_messages.cpp | 110 + test/OpenMP/parallel_shared_messages.cpp | 2 +- test/OpenMP/predefined_macro.c | 16 +- test/OpenMP/sections_ast_print.cpp | 52 + test/OpenMP/sections_firstprivate_messages.cpp | 335 + test/OpenMP/sections_lastprivate_messages.cpp | 309 + test/OpenMP/sections_misc_messages.c | 299 + test/OpenMP/sections_private_messages.cpp | 204 + test/OpenMP/sections_reduction_messages.cpp | 413 + test/OpenMP/simd_aligned_messages.cpp | 201 + test/OpenMP/simd_ast_print.cpp | 126 + test/OpenMP/simd_collapse_messages.cpp | 83 + test/OpenMP/simd_lastprivate_messages.cpp | 208 + test/OpenMP/simd_linear_messages.cpp | 206 + test/OpenMP/simd_loop_messages.cpp | 579 + test/OpenMP/simd_metadata.c | 51 + test/OpenMP/simd_misc_messages.c | 555 + test/OpenMP/simd_private_messages.cpp | 134 + test/OpenMP/simd_reduction_messages.cpp | 298 + test/OpenMP/simd_safelen_messages.cpp | 79 + test/OpenMP/single_ast_print.cpp | 38 + test/OpenMP/single_copyprivate_messages.cpp | 157 + test/OpenMP/single_firstprivate_messages.cpp | 239 + test/OpenMP/single_misc_messages.c | 156 + test/OpenMP/single_private_messages.cpp | 140 + test/OpenMP/task_ast_print.cpp | 96 + test/OpenMP/task_default_messages.cpp | 21 + test/OpenMP/task_final_messages.cpp | 46 + test/OpenMP/task_firstprivate_messages.cpp | 86 + test/OpenMP/task_if_messages.cpp | 46 + test/OpenMP/task_messages.cpp | 275 + test/OpenMP/task_private_messages.cpp | 85 + test/OpenMP/task_shared_messages.cpp | 102 + test/OpenMP/taskwait_ast_print.cpp | 32 + test/OpenMP/taskwait_messages.cpp | 110 + test/OpenMP/taskyield_ast_print.cpp | 32 + test/OpenMP/taskyield_messages.cpp | 110 + test/OpenMP/threadprivate_ast_print.cpp | 15 +- test/OpenMP/threadprivate_messages.cpp | 31 +- test/PCH/Inputs/chain-selectors2.h | 2 + test/PCH/Inputs/cuda.h | 20 + test/PCH/chain-pending-instantiations.cpp | 2 +- test/PCH/chain-selectors.m | 6 +- test/PCH/cocoa.m | 7 - test/PCH/cuda-kernel-call.cu | 2 +- test/PCH/cxx-key-functions.cpp | 97 + test/PCH/cxx-mangling.cpp | 28 + test/PCH/cxx-reference.cpp | 6 +- test/PCH/cxx-required-decls.cpp | 6 +- test/PCH/cxx-templates.cpp | 26 +- test/PCH/cxx-templates.h | 47 + test/PCH/cxx-traits.h | 4 +- test/PCH/cxx11-exception-spec.cpp | 47 +- test/PCH/cxx11-inheriting-ctors.cpp | 39 + test/PCH/different-diagnostic-level.c | 17 + test/PCH/different-linker-version.c | 17 + test/PCH/field-designator.c | 6 +- test/PCH/irgen-rdar13114142.mm | 4 +- test/PCH/local_static.cpp | 20 + test/PCH/local_static.h | 7 + test/PCH/macro-undef.cpp | 36 + test/PCH/modified-module-dependency.m | 20 + test/PCH/modified-module-dependency.module.map | 4 + test/PCH/objc_container.m | 4 +- test/PCH/objc_literals.mm | 8 +- test/PCH/objcxx-ivar-class.mm | 8 +- test/PCH/pr18806.cpp | 31 + test/PCH/pr4489.c | 6 - test/PCH/pragma-loop.cpp | 90 + test/PCH/pragma-optimize.c | 27 + test/PCH/single-token-macro.c | 5 + test/PCH/stmt-attrs.cpp | 24 + test/PCH/thread-safety-attrs.cpp | 32 +- test/PCH/verify_pch.m | 30 + test/Parser/DelayedTemplateParsing.cpp | 60 + test/Parser/MicrosoftExtensions.c | 119 +- test/Parser/MicrosoftExtensions.cpp | 156 +- test/Parser/MicrosoftExtensionsInlineAsm.c | 13 + test/Parser/altivec-csk-bool.c | 3 +- test/Parser/altivec.c | 6 +- .../arm-windows-calling-convention-handling.c | 10 + test/Parser/asm.c | 13 + test/Parser/attr-availability.c | 2 + test/Parser/attributes.c | 15 +- test/Parser/attributes.mm | 4 +- test/Parser/bad-control.c | 15 + test/Parser/brackets.c | 79 + test/Parser/brackets.cpp | 153 + test/Parser/builtin_classify_type.c | 2 +- test/Parser/check-objc2-syntax-1.m | 4 +- test/Parser/compound_literal.c | 4 +- test/Parser/cuda-kernel-call-c++11.cu | 20 + test/Parser/cuda-kernel-call.cu | 3 +- test/Parser/cxx-altivec.cpp | 6 +- test/Parser/cxx-ambig-decl-expr-xfail.cpp | 2 + test/Parser/cxx-casting.cpp | 17 + test/Parser/cxx-class.cpp | 28 +- test/Parser/cxx-decl.cpp | 21 +- test/Parser/cxx-friend.cpp | 2 +- test/Parser/cxx-reference.cpp | 2 +- test/Parser/cxx-template-argument.cpp | 1 + test/Parser/cxx-template-decl.cpp | 83 + test/Parser/cxx-using-declaration.cpp | 2 +- test/Parser/cxx0x-ambig.cpp | 4 +- test/Parser/cxx0x-attributes.cpp | 42 +- test/Parser/cxx0x-decl.cpp | 18 + test/Parser/cxx0x-for-range.cpp | 34 +- test/Parser/cxx0x-lambda-expressions.cpp | 30 +- test/Parser/cxx0x-member-initializers.cpp | 4 + test/Parser/cxx0x-rvalue-reference.cpp | 2 +- test/Parser/cxx11-type-specifier.cpp | 4 +- test/Parser/cxx11-user-defined-literals.cpp | 34 +- test/Parser/declarators.c | 35 + test/Parser/diag-crash.c | 6 + test/Parser/eof.cpp | 13 + test/Parser/expressions.c | 6 + test/Parser/ms-if-exists.cpp | 117 + test/Parser/ms-inline-asm-nested-braces.c | 9 + test/Parser/ms-inline-asm.c | 16 +- test/Parser/namespace-alias-attr.cpp | 2 +- test/Parser/objc-error-qualified-implementation.m | 10 +- test/Parser/objcbridge-related-attribute.m | 15 + test/Parser/objcxx11-attributes.mm | 4 +- test/Parser/opencl-astype.cl | 2 +- test/Parser/opencl-keywords.cl | 8 + test/Parser/pragma-loop.cpp | 166 + test/Parser/pragma-optimize-diagnostics.cpp | 28 + test/Parser/pragma-unroll.cpp | 89 + test/Parser/recovery.cpp | 77 + test/Parser/switch-recovery.cpp | 50 + test/Parser/warn-cuda-compat.cu | 13 + test/Parser/warn-semicolon-before-method-body.m | 2 +- .../headermap-rel/Foo.framework/Headers/Foo.h | 2 + test/Preprocessor/Inputs/headermap-rel/foo.hmap | Bin 0 -> 804 bytes .../Inputs/headermap-rel2/Product/someheader.h | 1 + .../Inputs/headermap-rel2/project-headers.hmap | Bin 0 -> 108 bytes .../headermap-rel2/system/usr/include/someheader.h | 1 + .../Inputs/microsoft-header-search/a/b/include3.h | 5 + .../Inputs/microsoft-header-search/a/findme.h | 3 + .../Inputs/microsoft-header-search/a/include2.h | 6 + .../Inputs/microsoft-header-search/falsepos.h | 3 + .../Inputs/microsoft-header-search/findme.h | 3 + .../Inputs/microsoft-header-search/include1.h | 6 + test/Preprocessor/aarch64-target-features.c | 73 +- test/Preprocessor/arm-acle-6.4.c | 40 + test/Preprocessor/arm-target-features.c | 88 +- test/Preprocessor/cxx_oper_keyword.cpp | 30 +- test/Preprocessor/cxx_oper_keyword_ms_compat.cpp | 10 +- test/Preprocessor/has_attribute.c | 12 +- test/Preprocessor/header_lookup1.c | 2 +- test/Preprocessor/headermap-rel.c | 12 + test/Preprocessor/headermap-rel2.c | 14 + test/Preprocessor/ifdef-recover.c | 13 +- test/Preprocessor/ignore-pragmas.c | 10 + test/Preprocessor/init.c | 3692 +++++- test/Preprocessor/macho-embedded-predefines.c | 20 + test/Preprocessor/macro-multiline.c | 7 + test/Preprocessor/macro-multiline.c.ignoreme | 8 - test/Preprocessor/macro_arg_empty.c | 7 + test/Preprocessor/macro_expand_empty.c | 9 +- test/Preprocessor/macro_paste_commaext.c | 4 +- test/Preprocessor/macro_paste_spacing.c | 16 +- test/Preprocessor/macro_redefined.c | 19 + test/Preprocessor/macro_space.c | 36 +- test/Preprocessor/microsoft-header-search.c | 8 + test/Preprocessor/predefined-arch-macros.c | 70 + test/Preprocessor/predefined-macros.c | 76 +- test/Preprocessor/print-pragma-microsoft.c | 20 + test/Preprocessor/stdint.c | 96 +- test/Preprocessor/ucn-allowed-chars.c | 2 +- test/Preprocessor/ucn-pp-identifier.c | 6 +- test/Preprocessor/woa-defaults.c | 33 + test/Preprocessor/woa-wchar_t.c | 5 + test/Preprocessor/x86_target_features.c | 10 +- test/Profile/Inputs/c-attributes.proftext | 34 + test/Profile/Inputs/c-captured.proftext | 25 + test/Profile/Inputs/c-counter-overflows.proftext | 12 + test/Profile/Inputs/c-general.proftext | 157 + test/Profile/Inputs/c-outdated-data.proftext | 12 + test/Profile/Inputs/c-unprofiled-blocks.proftext | 32 + test/Profile/Inputs/c-unprofiled.proftext | 10 + test/Profile/Inputs/cxx-class.proftext | 41 + test/Profile/Inputs/cxx-lambda.proftext | 20 + test/Profile/Inputs/cxx-templates.proftext | 17 + test/Profile/Inputs/cxx-throws.proftext | 18 + test/Profile/Inputs/objc-general.proftext | 17 + test/Profile/Inputs/profiled_header.h | 3 + test/Profile/README | 16 + test/Profile/c-attributes.c | 48 + test/Profile/c-captured.c | 59 + test/Profile/c-counter-overflows.c | 49 + test/Profile/c-general.c | 544 + test/Profile/c-linkage-available_externally.c | 12 + test/Profile/c-linkage.c | 37 + test/Profile/c-outdated-data.c | 28 + test/Profile/c-unprofiled-blocks.c | 69 + test/Profile/c-unprofiled.c | 26 + test/Profile/cxx-class.cpp | 78 + test/Profile/cxx-implicit.cpp | 17 + test/Profile/cxx-lambda.cpp | 58 + test/Profile/cxx-linkage.cpp | 36 + test/Profile/cxx-templates.cpp | 42 + test/Profile/cxx-throws.cpp | 73 + test/Profile/objc-general.m | 75 + test/Rewriter/dllimport-typedef.c | 17 - test/Rewriter/finally.m | 2 +- test/Rewriter/lit.local.cfg | 3 +- test/Rewriter/missing-dllimport.c | 17 +- test/Rewriter/no-integrated-preprocessing-64bit.m | 2 +- test/Rewriter/no-integrated-preprocessing.m | 4 +- test/Rewriter/protocol-rewrite-1.m | 27 +- test/Sema/2007-10-01-BuildArrayRef.c | 6 +- test/Sema/2009-03-09-WeakDeclarations-1.c | 6 +- test/Sema/2009-04-22-UnknownSize.c | 2 +- test/Sema/2009-07-17-VoidParameter.c | 4 +- test/Sema/Inputs/ms-keyword-system-header.h | 2 +- test/Sema/Inputs/warn-unreachable.h | 7 + test/Sema/MicrosoftCompatibility.c | 4 +- test/Sema/MicrosoftExtensions.c | 27 +- test/Sema/__try.c | 19 + test/Sema/aarch64-neon-ranges.c | 218 + test/Sema/aarch64-neon-vector-types.c | 17 + test/Sema/align-x86.c | 4 + test/Sema/alloc_size.c | 27 - test/Sema/arm-interrupt-attr.c | 4 +- test/Sema/arm-neon-types.c | 2 +- test/Sema/arm64-inline-asm.c | 9 + test/Sema/arm64-neon-args.c | 14 + test/Sema/arm_acle.c | 32 + test/Sema/array-init.c | 7 +- test/Sema/asm.c | 21 +- test/Sema/ast-print.c | 21 + test/Sema/atomic-compare.c | 21 + test/Sema/atomic-expr.c | 3 + test/Sema/atomic-ops.c | 223 +- test/Sema/attr-alias-elf.c | 15 + test/Sema/attr-aligned.c | 20 +- test/Sema/attr-availability-ios.c | 8 +- test/Sema/attr-availability-macosx.c | 4 +- test/Sema/attr-availability.c | 4 +- test/Sema/attr-capabilities.c | 62 + test/Sema/attr-cleanup.c | 2 +- test/Sema/attr-coldhot.c | 4 +- test/Sema/attr-deprecated-message.c | 8 +- test/Sema/attr-deprecated.c | 24 +- test/Sema/attr-malloc.c | 4 +- test/Sema/attr-msp430.c | 6 + test/Sema/attr-noduplicate.c | 8 + test/Sema/attr-ownership.c | 6 +- test/Sema/attr-section.c | 4 +- test/Sema/attr-unavailable-message.c | 12 +- test/Sema/attr-used.c | 8 +- test/Sema/big-endian-neon-initializers.c | 13 + test/Sema/bitfield-layout.c | 15 + test/Sema/block-misc.c | 2 +- test/Sema/block-return.c | 2 +- test/Sema/bool-compare.c | 162 + test/Sema/builtin-assume.c | 11 + test/Sema/builtin-clear_cache.c | 1 + test/Sema/builtins-aarch64.c | 2 + test/Sema/builtins-arm-exclusive.c | 51 + test/Sema/builtins-arm.c | 6 + test/Sema/builtins-arm64-exclusive.c | 108 + test/Sema/builtins-arm64.c | 24 + test/Sema/builtins-gnu-mode.c | 8 - test/Sema/builtins.c | 5 + test/Sema/c89.c | 2 + test/Sema/callingconv.c | 2 + test/Sema/carbon.c | 4 - test/Sema/const-eval.c | 2 +- test/Sema/constant-builtins-2.c | 90 +- test/Sema/constructor-attribute.c | 8 +- test/Sema/conversion.c | 12 + test/Sema/crash-invalid-array.c | 8 +- test/Sema/decl-in-prototype.c | 10 +- test/Sema/decl-invalid.c | 1 - test/Sema/dllexport.c | 138 + test/Sema/dllimport-dllexport.c | 48 - test/Sema/dllimport.c | 137 + test/Sema/empty1.c | 4 +- test/Sema/enable_if.c | 97 + test/Sema/ext_vector_casts.c | 76 +- test/Sema/fn-ptr-as-fn-prototype.c | 2 +- test/Sema/format-strings-c90.c | 2 +- test/Sema/format-strings-darwin.c | 12 +- test/Sema/format-strings-enum-fixed-type.cpp | 18 +- test/Sema/format-strings-enum.c | 4 +- test/Sema/format-strings-fixit.c | 23 +- test/Sema/format-strings-ms.c | 2 +- test/Sema/format-strings-non-iso.c | 2 +- test/Sema/format-strings-scanf.c | 9 +- test/Sema/format-strings.c | 20 +- test/Sema/i-c-e.c | 2 +- test/Sema/implicit-builtin-decl.c | 11 +- test/Sema/implicit-cast-dump.c | 2 +- test/Sema/inline-asm-validate.c | 9 + test/Sema/invalid-decl.c | 2 + test/Sema/lit.local.cfg | 4 + test/Sema/loop-control.c | 121 + test/Sema/ms-inline-asm.c | 69 +- test/Sema/ms-wchar.c | 4 +- test/Sema/ms_bitfield_layout.c | 26 +- test/Sema/ms_class_layout.cpp | 20 +- test/Sema/neon-vector-types.c | 3 +- test/Sema/nonnull.c | 34 + test/Sema/overloadable.c | 2 +- test/Sema/pragma-ms_struct.c | 10 +- test/Sema/pragma-pack-apple.c | 4 +- test/Sema/pragma-section.c | 44 + test/Sema/private-extern.c | 8 +- test/Sema/return-noreturn.c | 12 +- test/Sema/return.c | 43 +- test/Sema/sentinel-attribute.c | 2 +- test/Sema/shift.c | 2 +- test/Sema/statements.c | 5 +- test/Sema/static-init.c | 2 +- test/Sema/struct-decl.c | 3 + test/Sema/switch.c | 58 +- test/Sema/tentative-decls.c | 4 +- test/Sema/thread-specifier.c | 27 +- test/Sema/tls.c | 9 +- test/Sema/transparent-union.c | 24 +- test/Sema/typedef-retain.c | 4 +- test/Sema/typeof-use-deprecated.c | 12 +- test/Sema/types.c | 11 +- test/Sema/unused-expr.c | 20 +- test/Sema/var-redecl.c | 2 +- test/Sema/variadic-promotion.c | 2 +- test/Sema/vector-assign.c | 40 +- test/Sema/vector-cast.c | 32 +- test/Sema/vector-init.c | 2 +- test/Sema/vector-ops.c | 6 +- test/Sema/vla.c | 8 +- test/Sema/warn-absolute-value-header.c | 36 + test/Sema/warn-absolute-value.c | 782 ++ test/Sema/warn-bitwise-compare.c | 28 + test/Sema/warn-documentation-almost-trailing.c | 5 +- test/Sema/warn-documentation.cpp | 112 +- test/Sema/warn-main-return-type.c | 10 +- test/Sema/warn-missing-variable-declarations.c | 2 +- test/Sema/warn-null.c | 3 + test/Sema/warn-outof-range-assign-enum.c | 18 + test/Sema/warn-overlap.c | 64 + test/Sema/warn-thread-safety-analysis.c | 41 +- test/Sema/warn-type-safety.c | 4 +- test/Sema/warn-unreachable.c | 261 +- test/Sema/wchar.c | 4 +- test/SemaCUDA/Inputs/cuda.h | 20 + test/SemaCUDA/cuda.h | 19 - test/SemaCUDA/function-target.cu | 2 +- test/SemaCUDA/kernel-call.cu | 2 +- test/SemaCUDA/launch_bounds.cu | 14 + test/SemaCUDA/lit.local.cfg | 4 + test/SemaCUDA/qualifiers.cu | 2 +- test/SemaCXX/MicrosoftCompatibility.cpp | 31 + test/SemaCXX/MicrosoftExtensions.cpp | 68 +- test/SemaCXX/PR19955.cpp | 16 + test/SemaCXX/PR20110.cpp | 15 + test/SemaCXX/PR8012.cpp | 2 +- test/SemaCXX/__try.cpp | 12 +- test/SemaCXX/abstract.cpp | 20 +- test/SemaCXX/access.cpp | 22 + .../addr-of-overloaded-function-casting.cpp | 13 +- test/SemaCXX/addr-of-overloaded-function.cpp | 20 +- test/SemaCXX/aggregate-initialization.cpp | 2 +- test/SemaCXX/alias-template.cpp | 10 +- test/SemaCXX/alignof.cpp | 15 + test/SemaCXX/anonymous-struct.cpp | 7 + test/SemaCXX/anonymous-union-cxx11.cpp | 9 + test/SemaCXX/ast-print.cpp | 46 +- test/SemaCXX/atomic-type.cpp | 85 + test/SemaCXX/atomic-type.cxx | 58 - test/SemaCXX/attr-common.cpp | 2 +- test/SemaCXX/attr-cxx0x.cpp | 5 + test/SemaCXX/attr-deprecated.cpp | 48 +- test/SemaCXX/attr-flatten.cpp | 34 + test/SemaCXX/attr-no-sanitize-address.cpp | 10 +- test/SemaCXX/attr-no-sanitize-memory.cpp | 10 +- test/SemaCXX/attr-no-sanitize-thread.cpp | 10 +- test/SemaCXX/attr-no-split-stack.cpp | 34 + test/SemaCXX/attr-optnone.cpp | 47 + test/SemaCXX/attr-selectany.cpp | 5 +- test/SemaCXX/attr-unavailable.cpp | 21 +- test/SemaCXX/attr-used.cpp | 4 +- test/SemaCXX/attr-weak.cpp | 10 +- test/SemaCXX/attr-weakref.cpp | 4 +- test/SemaCXX/bool-compare.cpp | 207 + test/SemaCXX/c99-variable-length-array.cpp | 21 + test/SemaCXX/calling-conv-compat.cpp | 21 +- test/SemaCXX/compare.cpp | 2 +- test/SemaCXX/conditional-expr.cpp | 27 +- test/SemaCXX/const-cast.cpp | 2 +- test/SemaCXX/constant-expression-cxx11.cpp | 21 +- test/SemaCXX/constant-expression.cpp | 17 + test/SemaCXX/constexpr-value-init.cpp | 2 +- test/SemaCXX/constructor-initializer.cpp | 7 +- test/SemaCXX/constructor.cpp | 2 + test/SemaCXX/conversion-function.cpp | 14 + test/SemaCXX/crashes.cpp | 13 + test/SemaCXX/cstyle-cast.cpp | 4 +- test/SemaCXX/cxx-altivec.cpp | 5 + test/SemaCXX/cxx0x-compat.cpp | 3 +- test/SemaCXX/cxx0x-cursory-default-delete.cpp | 4 + test/SemaCXX/cxx0x-delegating-ctors.cpp | 2 +- test/SemaCXX/cxx0x-deleted-default-ctor.cpp | 4 +- test/SemaCXX/cxx0x-initializer-constructor.cpp | 46 +- test/SemaCXX/cxx0x-initializer-scalars.cpp | 4 +- ...nitializer-stdinitializerlist-system-header.cpp | 23 + .../cxx0x-initializer-stdinitializerlist.cpp | 29 + test/SemaCXX/cxx0x-type-convert-construct.cpp | 4 +- test/SemaCXX/cxx11-attr-print.cpp | 3 - test/SemaCXX/cxx11-gnu-attrs.cpp | 2 - test/SemaCXX/cxx11-inheriting-ctors.cpp | 8 + test/SemaCXX/cxx11-unused.cpp | 33 + test/SemaCXX/cxx11-user-defined-literals.cpp | 24 + test/SemaCXX/cxx1y-deduced-return-type.cpp | 7 + test/SemaCXX/cxx1y-generic-lambdas-capturing.cpp | 17 +- test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp | 100 + test/SemaCXX/cxx1y-generic-lambdas.cpp | 25 +- test/SemaCXX/cxx1y-init-captures.cpp | 2 +- test/SemaCXX/cxx1y-variable-templates_in_class.cpp | 32 +- .../SemaCXX/cxx1y-variable-templates_top_level.cpp | 44 +- test/SemaCXX/cxx98-compat.cpp | 49 +- test/SemaCXX/dcl_init_aggr.cpp | 4 +- test/SemaCXX/decl-expr-ambiguity.cpp | 2 +- test/SemaCXX/decl-microsoft-call-conv.cpp | 42 +- test/SemaCXX/declspec-thread.cpp | 42 + test/SemaCXX/decltype.cpp | 31 + test/SemaCXX/default1.cpp | 3 + test/SemaCXX/deleted-function.cpp | 6 +- test/SemaCXX/deleted-operator.cpp | 5 +- test/SemaCXX/deprecated.cpp | 9 +- test/SemaCXX/destructor.cpp | 25 +- test/SemaCXX/dllexport.cpp | 1010 ++ test/SemaCXX/dllimport.cpp | 1085 ++ test/SemaCXX/elaborated-type-specifier.cpp | 9 + test/SemaCXX/enable_if.cpp | 79 + test/SemaCXX/enum-bitfield.cpp | 12 + test/SemaCXX/enum-scoped.cpp | 13 +- test/SemaCXX/err_init_conversion_failed.cpp | 16 + test/SemaCXX/explicit.cpp | 5 + test/SemaCXX/expression-traits.cpp | 15 +- test/SemaCXX/expressions.cpp | 17 + test/SemaCXX/flexible-array-test.cpp | 21 +- test/SemaCXX/for-range-dereference.cpp | 2 +- test/SemaCXX/for-range-examples.cpp | 34 +- test/SemaCXX/format-strings.cpp | 2 +- test/SemaCXX/friend.cpp | 8 + test/SemaCXX/funcdname.cpp | 32 + test/SemaCXX/functional-cast.cpp | 4 +- test/SemaCXX/goto.cpp | 2 +- test/SemaCXX/implicit-member-functions.cpp | 2 +- test/SemaCXX/implicit-virtual-member-functions.cpp | 8 +- test/SemaCXX/init-priority-attr.cpp | 3 +- test/SemaCXX/lambda-expressions.cpp | 65 + test/SemaCXX/linkage.cpp | 19 + test/SemaCXX/linkage2.cpp | 4 + test/SemaCXX/member-expr.cpp | 4 +- test/SemaCXX/member-init.cpp | 10 + test/SemaCXX/member-pointer-ms.cpp | 122 +- test/SemaCXX/member-pointer.cpp | 10 +- test/SemaCXX/microsoft-cxx0x.cpp | 2 +- test/SemaCXX/microsoft-dtor-lookup-cxx11.cpp | 13 + test/SemaCXX/microsoft-dtor-lookup.cpp | 66 +- test/SemaCXX/microsoft-new-delete.cpp | 26 +- test/SemaCXX/microsoft-varargs-diagnostics.cpp | 42 + test/SemaCXX/microsoft-varargs.cpp | 22 + test/SemaCXX/missing-members.cpp | 9 +- test/SemaCXX/ms-friend-lookup.cpp | 104 + test/SemaCXX/ms-interface.cpp | 2 +- test/SemaCXX/ms_integer_suffix.cpp | 18 + test/SemaCXX/ms_struct.cpp | 26 +- test/SemaCXX/nested-name-spec.cpp | 121 +- test/SemaCXX/new-delete-cxx0x.cpp | 13 +- test/SemaCXX/new-delete.cpp | 9 +- test/SemaCXX/new-null.cpp | 63 + test/SemaCXX/nonnull.cpp | 15 + test/SemaCXX/ns_returns_retained_block_return.cpp | 17 + test/SemaCXX/null_in_arithmetic_ops.cpp | 2 +- test/SemaCXX/nullptr_in_arithmetic_ops.cpp | 2 +- test/SemaCXX/old-style-cast.cpp | 11 + test/SemaCXX/operator-arrow-depth.cpp | 4 +- test/SemaCXX/overload-0x.cpp | 84 +- test/SemaCXX/overload-call.cpp | 30 +- test/SemaCXX/overloaded-operator.cpp | 67 + test/SemaCXX/pr13394-crash-on-invalid.cpp | 4 +- test/SemaCXX/pr18284-crash-on-invalid.cpp | 24 + test/SemaCXX/pr9812.c | 21 + test/SemaCXX/pr9812.cpp | 9 + test/SemaCXX/pragma-init_seg.cpp | 21 + test/SemaCXX/pragma-optimize.cpp | 113 + test/SemaCXX/pragma-vtordisp.cpp | 40 + test/SemaCXX/pragma-weak.cpp | 3 + test/SemaCXX/primary-base.cpp | 2 +- test/SemaCXX/qualified-id-lookup.cpp | 2 +- test/SemaCXX/references.cpp | 12 +- test/SemaCXX/reinterpret-cast.cpp | 6 +- test/SemaCXX/return-noreturn.cpp | 30 + test/SemaCXX/return-stack-addr.cpp | 23 +- test/SemaCXX/return.cpp | 10 + test/SemaCXX/rval-references-examples.cpp | 2 +- test/SemaCXX/scope-check.cpp | 158 +- test/SemaCXX/sourceranges.cpp | 11 +- test/SemaCXX/static-assert.cpp | 3 + test/SemaCXX/static-cast.cpp | 5 +- .../SemaCXX/switch-implicit-fallthrough-blocks.cpp | 19 + test/SemaCXX/switch-implicit-fallthrough.cpp | 71 +- test/SemaCXX/template-implicit-vars.cpp | 14 + test/SemaCXX/trailing-return-0x.cpp | 4 +- test/SemaCXX/type-definition-in-specifier.cpp | 45 +- test/SemaCXX/type-traits.cpp | 40 + test/SemaCXX/typeid-ref.cpp | 4 +- test/SemaCXX/types_compatible_p.cpp | 10 +- test/SemaCXX/typo-correction-pt2.cpp | 117 +- test/SemaCXX/typo-correction.cpp | 15 +- test/SemaCXX/undefined-inline.cpp | 8 +- test/SemaCXX/undefined-internal.cpp | 46 +- test/SemaCXX/underlying_type.cpp | 14 + test/SemaCXX/uninit-variables.cpp | 5 +- test/SemaCXX/uninitialized.cpp | 2 +- test/SemaCXX/unreachable-code.cpp | 20 +- test/SemaCXX/using-decl-1.cpp | 97 +- test/SemaCXX/vararg-class.cpp | 48 + test/SemaCXX/vector-casts.cpp | 47 +- test/SemaCXX/vector.cpp | 10 +- test/SemaCXX/virtual-base-used.cpp | 49 +- test/SemaCXX/virtual-override-x86.cpp | 2 +- test/SemaCXX/virtual-override.cpp | 3 +- test/SemaCXX/vla.cpp | 14 + test/SemaCXX/vtordisp-mode.cpp | 26 + test/SemaCXX/warn-absolute-value-header.cpp | 53 + test/SemaCXX/warn-absolute-value.cpp | 823 ++ test/SemaCXX/warn-address.cpp | 20 + test/SemaCXX/warn-bad-memaccess.cpp | 29 +- test/SemaCXX/warn-bool-conversion.cpp | 96 + test/SemaCXX/warn-consumed-analysis.cpp | 176 +- test/SemaCXX/warn-consumed-parsing.cpp | 16 +- test/SemaCXX/warn-exit-time-destructors.cpp | 20 +- test/SemaCXX/warn-float-conversion.cpp | 38 + test/SemaCXX/warn-func-as-bool.cpp | 40 - test/SemaCXX/warn-global-constructors.cpp | 21 +- test/SemaCXX/warn-infinite-recursion.cpp | 152 + test/SemaCXX/warn-memsize-comparison.cpp | 93 + test/SemaCXX/warn-new-overaligned.cpp | 4 +- test/SemaCXX/warn-reinterpret-base-class.cpp | 18 +- test/SemaCXX/warn-self-assign.cpp | 3 + test/SemaCXX/warn-shadow.cpp | 2 +- test/SemaCXX/warn-sign-conversion.cpp | 34 +- test/SemaCXX/warn-string-conversion.cpp | 8 +- test/SemaCXX/warn-sysheader-macro.cpp | 35 + test/SemaCXX/warn-tautological-compare.cpp | 138 + .../warn-tautological-undefined-compare.cpp | 112 + test/SemaCXX/warn-thread-safety-analysis.cpp | 676 +- test/SemaCXX/warn-thread-safety-parsing.cpp | 216 +- test/SemaCXX/warn-undefined-bool-conversion.cpp | 97 + test/SemaCXX/warn-unreachable.cpp | 302 +- test/SemaCXX/warn-unused-attribute.cpp | 28 +- test/SemaCXX/warn-unused-comparison.cpp | 41 + test/SemaCXX/warn-unused-filescoped.cpp | 15 + test/SemaCXX/warn-unused-label-error.cpp | 26 + test/SemaCXX/warn-unused-value.cpp | 2 +- test/SemaCXX/warn-unused-variables.cpp | 47 +- test/SemaCXX/warn-weak-vtables.cpp | 3 +- test/SemaCXX/windows-arm-valist.cpp | 17 + test/SemaCXX/writable-strings-deprecated.cpp | 13 +- test/SemaObjC/arc-decls.m | 20 +- test/SemaObjC/arc-invalid.m | 28 +- test/SemaObjC/arc-jump-block.m | 2 +- test/SemaObjC/arc-objcbridge-related-attribute.m | 41 + test/SemaObjC/arc-property-lifetime.m | 4 +- test/SemaObjC/arc-unavailable-for-weakref.m | 2 + test/SemaObjC/arc-unavailable-system-function.m | 2 +- test/SemaObjC/arc.m | 18 +- test/SemaObjC/attr-availability.m | 6 +- test/SemaObjC/attr-deprecated.m | 93 +- test/SemaObjC/attr-designated-init.m | 412 + test/SemaObjC/attr-ns-bridged.m | 15 - test/SemaObjC/block-type-safety.m | 43 + test/SemaObjC/builtin_objc_lib_functions.m | 14 +- test/SemaObjC/builtin_objc_nslog.m | 4 +- test/SemaObjC/category-1.m | 7 +- .../check-objcbridge-related-attribute-lookup.m | 41 + test/SemaObjC/class-def-test-1.m | 2 +- test/SemaObjC/class-extension-dup-methods.m | 13 + test/SemaObjC/class-property-access.m | 43 + test/SemaObjC/class-proto-1.m | 14 +- test/SemaObjC/class-unavail-warning.m | 33 +- test/SemaObjC/cocoa.m | 5 - test/SemaObjC/compare-qualified-class.m | 2 +- test/SemaObjC/compare-qualified-id.m | 4 +- test/SemaObjC/comptypes-legal.m | 17 + test/SemaObjC/conditional-expr.m | 4 +- test/SemaObjC/continuation-class-property.m | 12 + test/SemaObjC/dealloc.m | 34 +- test/SemaObjC/default-synthesize-3.m | 38 +- test/SemaObjC/default-synthesize.m | 2 +- test/SemaObjC/deprecate_function_containers.m | 37 + test/SemaObjC/encode-typeof-test.m | 26 + test/SemaObjC/error-missing-getter.m | 3 +- test/SemaObjC/format-arg-attribute.m | 28 +- test/SemaObjC/format-strings-objc.m | 3 + .../forward-protocol-incomplete-impl-warn.m | 6 +- test/SemaObjC/ibaction.m | 4 +- test/SemaObjC/iboutlet.m | 16 +- test/SemaObjC/incomplete-implementation.m | 26 + test/SemaObjC/ivar-lookup-resolution-builtin.m | 2 +- test/SemaObjC/method-attributes.m | 33 +- test/SemaObjC/method-sentinel-attr.m | 2 +- test/SemaObjC/method-undef-category-warn-1.m | 8 +- test/SemaObjC/method-undef-extension-warn-1.m | 4 +- test/SemaObjC/nonnull.m | 28 + test/SemaObjC/ns_returns_retained_block_return.m | 22 + test/SemaObjC/nsobject-attribute.m | 8 +- test/SemaObjC/objc-asm-attribute-neg-test.m | 42 + test/SemaObjC/objc-container-subscripting-attr.m | 18 + test/SemaObjC/objc-literal-nsnumber.m | 20 +- test/SemaObjC/objc-mixed-bridge-attribute.m | 51 + test/SemaObjC/objcbridge-attribute-arc.m | 223 + test/SemaObjC/objcbridge-attribute.m | 83 +- test/SemaObjC/objcbridge-related-attribute.m | 41 + test/SemaObjC/objcbridgemutable-attribute.m | 31 + test/SemaObjC/opaque-is-access-warn.m | 24 + test/SemaObjC/opaque-is-access.m | 23 + .../overriding-property-in-class-extension.m | 3 +- test/SemaObjC/property-10.m | 2 +- test/SemaObjC/property-12.m | 8 +- test/SemaObjC/property-deprecated-warning.m | 37 +- test/SemaObjC/property-in-class-extension-1.m | 9 +- test/SemaObjC/property-inherited.m | 26 + .../property-noninherited-availability-attr.m | 15 +- test/SemaObjC/property-typecheck-1.m | 2 +- test/SemaObjC/protocol-attribute.m | 2 +- test/SemaObjC/protocols-suppress-conformance.m | 207 + test/SemaObjC/selector-1.m | 44 +- test/SemaObjC/selector-3.m | 44 +- test/SemaObjC/selector-4.m | 28 + test/SemaObjC/selector-overload.m | 1 + test/SemaObjC/special-dep-unavail-warning.m | 34 +- test/SemaObjC/tentative-property-decl.m | 15 +- test/SemaObjC/undef-protocol-methods-1.m | 7 +- test/SemaObjC/unsued-backing-ivar-warning.m | 76 - test/SemaObjC/unused-backing-ivar-warning.m | 203 + test/SemaObjC/unused.m | 32 + test/SemaObjC/warn-deprecated-implementations.m | 18 +- test/SemaObjC/warn-forward-class-attr-deprecated.m | 4 +- test/SemaObjC/warn-protocol-method-deprecated.m | 4 +- test/SemaObjC/warn-retain-cycle.m | 18 +- test/SemaObjC/warn-thread-safety-analysis.m | 19 + test/SemaObjC/warn-unreachable.m | 69 +- test/SemaObjCXX/arc-system-header.mm | 2 +- test/SemaObjCXX/arc-templates.mm | 16 + test/SemaObjCXX/contextual-convert-to-id.mm | 19 + test/SemaObjCXX/crash.mm | 8 +- test/SemaObjCXX/exceptions-fragile.mm | 2 +- test/SemaObjCXX/instantiate-property-access.mm | 35 + test/SemaObjCXX/lit.local.cfg | 4 + test/SemaObjCXX/microsoft-abi-byval.mm | 7 +- test/SemaObjCXX/objcbridge-attribute-arc.mm | 210 + test/SemaObjCXX/objcbridge-attribute.mm | 210 + test/SemaObjCXX/objcbridge-related-attribute.mm | 27 + test/SemaObjCXX/objcbridge-static-cast.mm | 135 + test/SemaObjCXX/old-style-cast.mm | 11 + test/SemaObjCXX/propert-dot-error.mm | 6 +- test/SemaObjCXX/property-invalid-type.mm | 23 + test/SemaObjCXX/warn-objc-literal-conversion.mm | 74 + test/SemaOpenCL/address-spaces.cl | 26 + test/SemaOpenCL/array-parameters.cl | 6 + test/SemaOpenCL/event_t.cl | 2 +- test/SemaOpenCL/extern.cl | 9 + test/SemaOpenCL/func_ptr.cl | 16 + test/SemaOpenCL/half.cl | 2 +- test/SemaOpenCL/invalid-constant.cl | 2 + test/SemaOpenCL/invalid-kernel-attrs.cl | 21 + test/SemaOpenCL/invalid-kernel.cl | 16 + test/SemaOpenCL/lit.local.cfg | 4 + test/SemaOpenCL/sizeof.cl | 5 + test/SemaOpenCL/vector_conv_invalid.cl | 6 +- test/SemaTemplate/attributes.cpp | 2 +- test/SemaTemplate/class-template-decl.cpp | 7 + test/SemaTemplate/class-template-spec.cpp | 60 +- test/SemaTemplate/constexpr-instantiate.cpp | 2 +- test/SemaTemplate/dependent-expr.cpp | 7 + test/SemaTemplate/dependent-names.cpp | 19 +- test/SemaTemplate/dependent-type-identity.cpp | 24 + test/SemaTemplate/explicit-instantiation.cpp | 2 +- .../explicit-specialization-member.cpp | 18 +- test/SemaTemplate/inject-templated-friend-post.cpp | 15 +- test/SemaTemplate/inject-templated-friend.cpp | 6 +- test/SemaTemplate/instantiate-complete.cpp | 10 +- test/SemaTemplate/instantiate-decl-init.cpp | 20 + .../instantiate-default-assignment-operator.cpp | 2 +- test/SemaTemplate/instantiate-enum.cpp | 15 + .../instantiate-exception-spec-cxx11.cpp | 5 +- test/SemaTemplate/instantiate-exception-spec.cpp | 6 +- test/SemaTemplate/instantiate-function-2.cpp | 25 + test/SemaTemplate/instantiate-function-params.cpp | 6 +- test/SemaTemplate/instantiate-local-class.cpp | 15 +- test/SemaTemplate/instantiate-method.cpp | 2 +- test/SemaTemplate/instantiate-var-template.cpp | 36 + test/SemaTemplate/instantiation-backtrace.cpp | 4 +- test/SemaTemplate/instantiation-depth-subst-2.cpp | 4 +- test/SemaTemplate/instantiation-depth-subst.cpp | 4 +- test/SemaTemplate/instantiation-order.cpp | 4 +- .../ms-class-specialization-duplicate.cpp | 9 + .../ms-delayed-default-template-args.cpp | 96 + .../ms-function-specialization-class-scope.cpp | 124 +- test/SemaTemplate/ms-if-exists.cpp | 10 +- .../ms-lookup-template-base-classes.cpp | 242 +- test/SemaTemplate/ms-sizeof-missing-typename.cpp | 61 + test/SemaTemplate/operator-template.cpp | 5 +- test/SemaTemplate/pack-deduction.cpp | 39 + test/SemaTemplate/resolve-single-template-id.cpp | 20 +- test/SemaTemplate/temp_arg_nontype.cpp | 2 +- test/SemaTemplate/temp_arg_nontype_cxx11.cpp | 15 + test/SemaTemplate/typename-specifier.cpp | 102 +- test/SemaTemplate/virtual-member-functions.cpp | 64 +- test/Tooling/lit.local.cfg | 2 + test/Tooling/multi-jobs.cpp | 5 +- test/Unit/lit.cfg | 28 +- test/Unit/lit.site.cfg.in | 1 - test/VFS/Inputs/Foo.framework/Headers/Foo.h | 0 .../Inputs/Foo.framework/Modules/module.modulemap | 3 + test/VFS/Inputs/Foo.h | 0 test/VFS/Inputs/Incomplete.h | 1 + test/VFS/Inputs/IncompleteVFS.h | 1 + test/VFS/Inputs/actual_header.h | 1 + test/VFS/Inputs/actual_module.map | 8 + test/VFS/Inputs/actual_module2.map | 5 + test/VFS/Inputs/external-names.h | 4 + test/VFS/Inputs/import_some_frame.h | 2 + test/VFS/Inputs/include_real.h | 1 + test/VFS/Inputs/incomplete-umbrella.modulemap | 5 + test/VFS/Inputs/invalid-yaml.yaml | 4 + test/VFS/Inputs/missing-key.yaml | 4 + test/VFS/Inputs/public_header.h | 2 + test/VFS/Inputs/public_header2.h | 1 + test/VFS/Inputs/some_frame_module.map | 5 + test/VFS/Inputs/unknown-key.yaml | 5 + test/VFS/Inputs/unknown-value.yaml | 5 + test/VFS/Inputs/use-external-names.yaml | 7 + test/VFS/Inputs/vfsoverlay.yaml | 53 + test/VFS/Inputs/vfsoverlay2.yaml | 12 + test/VFS/external-names.c | 35 + test/VFS/framework-import.m | 9 + test/VFS/implicit-include.c | 7 + test/VFS/include-mixed-real-and-virtual.c | 14 + test/VFS/include-real-from-virtual.c | 12 + test/VFS/include-virtual-from-real.c | 12 + test/VFS/include.c | 9 + test/VFS/incomplete-umbrella.m | 12 + test/VFS/module-import.m | 27 + test/VFS/parse-errors.c | 14 + test/VFS/real-path-found-first.m | 74 + test/VFS/relative-path.c | 11 + test/VFS/umbrella-mismatch.m | 8 + test/lit.cfg | 206 +- test/lit.site.cfg.in | 9 +- 2674 files changed, 109992 insertions(+), 29833 deletions(-) create mode 100644 test/ARCMT/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h create mode 100644 test/ARCMT/Inputs/Module.framework/Headers/Buried/Treasure.h create mode 100644 test/ARCMT/Inputs/Module.framework/Headers/Module.h create mode 100644 test/ARCMT/Inputs/Module.framework/Headers/NotInModule.h create mode 100644 test/ARCMT/Inputs/Module.framework/Headers/Sub.h create mode 100644 test/ARCMT/Inputs/Module.framework/Headers/Sub2.h create mode 100644 test/ARCMT/Inputs/Module.framework/Module create mode 100644 test/ARCMT/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h create mode 100644 test/ARCMT/Inputs/module.map create mode 100644 test/ARCMT/designated-init-in-header/designated-init-in-header.m create mode 100644 test/ARCMT/designated-init-in-header/file1.m.in create mode 100644 test/ARCMT/designated-init-in-header/file2.m.in create mode 100644 test/ARCMT/designated-init-in-header/file2.m.in.result create mode 100644 test/ARCMT/designated-init-in-header/header1.h create mode 100644 test/ARCMT/designated-init-in-header/header1.h.result create mode 100644 test/ARCMT/migrate-on-pch-and-module.m delete mode 100644 test/ARCMT/objcmt-deprecated-category.m delete mode 100644 test/ARCMT/objcmt-deprecated-category.m.result create mode 100644 test/ARCMT/objcmt-designated-initializer.m create mode 100644 test/ARCMT/objcmt-designated-initializer.m.result create mode 100644 test/ARCMT/objcmt-instancetype-unnecessary-diff.m create mode 100644 test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m create mode 100644 test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m.result create mode 100644 test/Analysis/NewDeleteLeaks-PR18394.cpp create mode 100644 test/Analysis/checker-plugins.c create mode 100644 test/Analysis/dtor-cxx11.cpp delete mode 100644 test/Analysis/idempotent-operations-limited-loops.c delete mode 100644 test/Analysis/idempotent-operations.c delete mode 100644 test/Analysis/idempotent-operations.cpp delete mode 100644 test/Analysis/idempotent-operations.m create mode 100644 test/Analysis/kmalloc-linux.c create mode 100644 test/Analysis/malloc-three-arg.c create mode 100644 test/Analysis/objc-radar17039661.m create mode 100644 test/Analysis/properties.mm create mode 100644 test/Analysis/retain-release-cache-out.m create mode 100644 test/Analysis/test-after-div-zero.c create mode 100644 test/Analysis/uninit-const.c create mode 100644 test/Analysis/uninit-const.cpp create mode 100644 test/CXX/basic/basic.start/basic.start.init/p3.cpp create mode 100644 test/CXX/class/class.union/p8.cpp create mode 100644 test/CXX/dcl.dcl/dcl.enum/p2.cpp create mode 100644 test/CXX/dcl.dcl/dcl.link/p2.cpp create mode 100644 test/CXX/drs/dr10xx.cpp create mode 100644 test/CXX/drs/dr13xx.cpp create mode 100644 test/CXX/drs/dr14xx.cpp create mode 100644 test/CXX/drs/dr15xx.cpp create mode 100644 test/CXX/drs/dr3xx.cpp create mode 100644 test/CXX/drs/dr412.cpp create mode 100644 test/CXX/drs/dr5xx.cpp create mode 100644 test/CXX/drs/dr9xx.cpp delete mode 100644 test/CXX/expr/expr.prim/expr.prim.lambda/generic-lambda-unimplemented-1y.cpp delete mode 100644 test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3-0x.cpp delete mode 100644 test/CXX/temp/temp.param/p14.cpp create mode 100644 test/CodeCompletion/objc-message.mm create mode 100644 test/CodeGen/PR8880.c delete mode 100644 test/CodeGen/a15.c delete mode 100644 test/CodeGen/a5.c delete mode 100644 test/CodeGen/aarch64-arguments.c create mode 100644 test/CodeGen/aarch64-neon-3v.c delete mode 100644 test/CodeGen/aarch64-neon-copy.c delete mode 100644 test/CodeGen/aarch64-neon-crypto.c create mode 100644 test/CodeGen/aarch64-neon-fma.c create mode 100644 test/CodeGen/aarch64-poly128.c create mode 100644 test/CodeGen/arm-asm-deprecated.c create mode 100644 test/CodeGen/arm-atomics-m.c create mode 100644 test/CodeGen/arm-atomics-m0.c create mode 100644 test/CodeGen/arm-atomics.c create mode 100644 test/CodeGen/arm-be-result-return.c create mode 100644 test/CodeGen/arm-byval-align.c create mode 100644 test/CodeGen/arm-cortex-cpus.c create mode 100644 test/CodeGen/arm-metadata.c create mode 100644 test/CodeGen/arm-microsoft-intrinsics.c create mode 100644 test/CodeGen/arm-neon-vcvtX.c create mode 100644 test/CodeGen/arm64-aapcs-arguments.c create mode 100644 test/CodeGen/arm64-abi-vector.c create mode 100644 test/CodeGen/arm64-arguments.c create mode 100644 test/CodeGen/arm64-be-bitfield.c create mode 100644 test/CodeGen/arm64-be-hfa-vararg.c create mode 100644 test/CodeGen/arm64-crc32.c create mode 100644 test/CodeGen/arm64-lanes.c create mode 100644 test/CodeGen/arm64-scalar-test.c create mode 100644 test/CodeGen/arm64-vrnd.c create mode 100644 test/CodeGen/arm64-vrsqrt.c create mode 100644 test/CodeGen/arm64_crypto.c create mode 100644 test/CodeGen/arm64_neon_high_half.c create mode 100644 test/CodeGen/arm64_vCMP.c create mode 100644 test/CodeGen/arm64_vLdStNum_lane.c create mode 100644 test/CodeGen/arm64_vMaxMin.c create mode 100644 test/CodeGen/arm64_vadd.c create mode 100644 test/CodeGen/arm64_vca.c create mode 100644 test/CodeGen/arm64_vcopy.c create mode 100644 test/CodeGen/arm64_vcreate.c create mode 100644 test/CodeGen/arm64_vcvtfp.c create mode 100644 test/CodeGen/arm64_vdup.c create mode 100644 test/CodeGen/arm64_vdupq_n_f64.c create mode 100644 test/CodeGen/arm64_vecCmpBr.c create mode 100644 test/CodeGen/arm64_vext.c create mode 100644 test/CodeGen/arm64_vfma.c create mode 100644 test/CodeGen/arm64_vget.c create mode 100644 test/CodeGen/arm64_vneg.c create mode 100644 test/CodeGen/arm64_vqmov.c create mode 100644 test/CodeGen/arm64_vrecps.c create mode 100644 test/CodeGen/arm64_vset_lane.c create mode 100644 test/CodeGen/arm64_vshift.c create mode 100644 test/CodeGen/arm64_vsli.c create mode 100644 test/CodeGen/arm64_vsri.c create mode 100644 test/CodeGen/arm64_vtst.c create mode 100644 test/CodeGen/arm_acle.c create mode 100644 test/CodeGen/asan-globals.cpp create mode 100644 test/CodeGen/asm_arm64.c create mode 100644 test/CodeGen/atomic-arm64.c create mode 100644 test/CodeGen/atomic-ops-libcall.c create mode 100644 test/CodeGen/attr-optnone.c create mode 100644 test/CodeGen/blocks-opencl.cl create mode 100644 test/CodeGen/builtin-assume.c delete mode 100644 test/CodeGen/builtins-aarch64.c create mode 100644 test/CodeGen/builtins-arm-microsoft.c create mode 100644 test/CodeGen/builtins-arm64.c create mode 100644 test/CodeGen/clear_cache.c delete mode 100644 test/CodeGen/debug-dead-local-var.c create mode 100644 test/CodeGen/debug-info-enum.c delete mode 100644 test/CodeGen/debug-info-iv.c create mode 100644 test/CodeGen/debug-info-scope-file.c create mode 100644 test/CodeGen/debug-info-typedef.c create mode 100644 test/CodeGen/disable-tail-calls.c create mode 100644 test/CodeGen/dllexport.c delete mode 100644 test/CodeGen/dllimport-dllexport.c create mode 100644 test/CodeGen/dllimport.c create mode 100644 test/CodeGen/flatten.c create mode 100644 test/CodeGen/function-sections.c create mode 100644 test/CodeGen/hidden-alias-to-internal-function.c create mode 100644 test/CodeGen/le32-vaarg.c delete mode 100644 test/CodeGen/long-double-x86-nacl.c create mode 100644 test/CodeGen/malign-double-x86-nacl.c create mode 100644 test/CodeGen/mips-count-builtins.c delete mode 100644 test/CodeGen/mips-target-data.c create mode 100644 test/CodeGen/mips-type-sizes-int128.c create mode 100644 test/CodeGen/mips-type-sizes.c create mode 100644 test/CodeGen/mozilla-ms-inline-asm.c create mode 100644 test/CodeGen/ms-intrinsics.c create mode 100644 test/CodeGen/named_reg_global.c create mode 100644 test/CodeGen/neon-crypto.c create mode 100644 test/CodeGen/noduplicate-cxx11-test.cpp create mode 100644 test/CodeGen/nonnull.c create mode 100644 test/CodeGen/ppc64-align-struct.c create mode 100644 test/CodeGen/ppc64-inline-asm.c create mode 100644 test/CodeGen/ppc64-vector.c create mode 100644 test/CodeGen/ppc64le-aggregates.c create mode 100644 test/CodeGen/ppc64le-varargs-complex.c create mode 100644 test/CodeGen/pr18235.c create mode 100644 test/CodeGen/pr19841.cpp create mode 100644 test/CodeGen/pragma-loop.cpp create mode 100644 test/CodeGen/pragma-unroll.cpp delete mode 100644 test/CodeGen/r5.c delete mode 100644 test/CodeGen/sanitize-use-after-scope.c delete mode 100644 test/CodeGen/sparc-target-data.c create mode 100644 test/CodeGen/sparcv9-dwarf.c create mode 100644 test/CodeGen/split-stacks.c create mode 100644 test/CodeGen/sse-builtins-dbg.c create mode 100644 test/CodeGen/ubsan-type-blacklist.cpp create mode 100644 test/CodeGen/variadic-gpfp-x86.c create mode 100644 test/CodeGen/windows-itanium.c create mode 100644 test/CodeGen/windows-on-arm-dllimport-dllexport.c create mode 100644 test/CodeGen/x86-64-inline-asm.c create mode 100644 test/CodeGen/x86_64-atomic-128.c create mode 100644 test/CodeGen/xcore-abi.cpp create mode 100644 test/CodeGen/xcore-stringtype.c create mode 100644 test/CodeGenCUDA/Inputs/cuda.h create mode 100644 test/CodeGenCUDA/launch-bounds.cu create mode 100644 test/CodeGenCXX/Inputs/debug-info-class-limited.cpp create mode 100644 test/CodeGenCXX/PR19955.cpp create mode 100644 test/CodeGenCXX/PR20038.cpp create mode 100644 test/CodeGenCXX/address-space-ref.cpp create mode 100644 test/CodeGenCXX/arm64-constructor-return.cpp create mode 100644 test/CodeGenCXX/arm64-darwinpcs.cpp create mode 100644 test/CodeGenCXX/arm64-empty-struct.cpp create mode 100644 test/CodeGenCXX/arm64.cpp create mode 100644 test/CodeGenCXX/debug-info-alias.cpp create mode 100644 test/CodeGenCXX/debug-info-anon-union-vars.cpp create mode 100644 test/CodeGenCXX/debug-info-class-limited-plugin.test delete mode 100644 test/CodeGenCXX/debug-info-class-limited.cpp create mode 100644 test/CodeGenCXX/debug-info-class-limited.test create mode 100644 test/CodeGenCXX/debug-info-global.cpp create mode 100644 test/CodeGenCXX/debug-info-indirect-field-decl.cpp create mode 100644 test/CodeGenCXX/debug-info-line-if.cpp delete mode 100644 test/CodeGenCXX/debug-info-pubtypes.cpp create mode 100644 test/CodeGenCXX/debug-info-qualifiers.cpp create mode 100644 test/CodeGenCXX/debug-info-template-explicit-specialization.cpp create mode 100644 test/CodeGenCXX/debug-info-template-fwd.cpp create mode 100644 test/CodeGenCXX/debug-info-template-partial-specialization.cpp create mode 100644 test/CodeGenCXX/debug-info-varargs.cpp create mode 100644 test/CodeGenCXX/debug-info-vtable-optzn.cpp create mode 100644 test/CodeGenCXX/dllexport-members.cpp create mode 100644 test/CodeGenCXX/dllexport.cpp create mode 100644 test/CodeGenCXX/dllimport-members.cpp create mode 100644 test/CodeGenCXX/dllimport-rtti.cpp create mode 100644 test/CodeGenCXX/dllimport.cpp create mode 100644 test/CodeGenCXX/duplicate-mangled-name.cpp create mode 100644 test/CodeGenCXX/enable_if.cpp create mode 100644 test/CodeGenCXX/flatten.cpp create mode 100644 test/CodeGenCXX/funcsig.cpp create mode 100644 test/CodeGenCXX/globalinit-loc.cpp create mode 100644 test/CodeGenCXX/int64_uint64.cpp create mode 100644 test/CodeGenCXX/linetable-eh.cpp create mode 100644 test/CodeGenCXX/linetable-fnbegin.cpp create mode 100644 test/CodeGenCXX/mangle-ms-cxx14.cpp create mode 100644 test/CodeGenCXX/mangle-ms-string-literals.cpp create mode 100644 test/CodeGenCXX/mangle-ms-templates-memptrs-2.cpp create mode 100644 test/CodeGenCXX/mangle-ms-templates-memptrs.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-arg-order.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-byval-sret.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-byval-vararg.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-cdecl-method-sret.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-dynamic-cast.cpp create mode 100755 test/CodeGenCXX/microsoft-abi-non-virtual-base-ordering.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-nontrivial-covariant-thunk.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-rtti.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-try-throw.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-typeid.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vftables.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-no-thunks.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-pure-virtual.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-return-adjustment.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-vdtors.cpp delete mode 100644 test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance.cpp create mode 100644 test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp create mode 100644 test/CodeGenCXX/microsoft-compatibility.cpp create mode 100644 test/CodeGenCXX/microsoft-no-rtti-data.cpp create mode 100644 test/CodeGenCXX/microsoft-templ-uuidof.cpp create mode 100644 test/CodeGenCXX/mingw-new-abi.cpp create mode 100644 test/CodeGenCXX/mips-size_t-ptrdiff_t.cpp create mode 100644 test/CodeGenCXX/ms-integer-static-data-members-exported.cpp create mode 100644 test/CodeGenCXX/no-elide-constructors.cpp create mode 100644 test/CodeGenCXX/poly-unsigned.cpp create mode 100644 test/CodeGenCXX/pr18661.cpp create mode 100644 test/CodeGenCXX/pr18962.cpp create mode 100644 test/CodeGenCXX/pragma-init_seg.cpp create mode 100644 test/CodeGenCXX/pragma-pack-3.cpp create mode 100644 test/CodeGenCXX/sparcv9-abi.cpp create mode 100644 test/CodeGenCXX/split-stacks.cpp create mode 100644 test/CodeGenCXX/type-traits.cpp create mode 100644 test/CodeGenCXX/typeid-should-throw.cpp delete mode 100644 test/CodeGenCXX/unary-type-trait.cpp create mode 100644 test/CodeGenCXX/uncopyable-args.cpp create mode 100644 test/CodeGenCXX/windows-itanium-exceptions.cpp create mode 100644 test/CodeGenObjC/arm64-int32-ivar.m create mode 100644 test/CodeGenObjC/attr-callconv.m create mode 100644 test/CodeGenObjC/exceptions-asm-attribute.m create mode 100644 test/CodeGenObjC/forward-protocol-metadata-symbols.m create mode 100644 test/CodeGenObjC/objc-asm-attribute-neg-test.m create mode 100644 test/CodeGenObjC/objc-asm-attribute-test.m create mode 100644 test/CodeGenObjC/optimize-ivar-offset-load.m create mode 100644 test/CodeGenObjC/property-array-type.m create mode 100644 test/CodeGenObjC/property-section-attribute.m create mode 100644 test/CodeGenObjC/stret-1.m create mode 100644 test/CodeGenObjC/stret.m create mode 100644 test/CodeGenObjC/weak-metaclass-visibility.m create mode 100644 test/CodeGenObjCXX/arc-cxx11-member-init.mm create mode 100644 test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm create mode 100644 test/CodeGenObjCXX/property-lvalue-capture.mm create mode 100644 test/CodeGenOpenCL/address-space-constant-initializers.cl create mode 100644 test/CodeGenOpenCL/builtins-r600.cl create mode 100644 test/Driver/Inputs/basic_android_tree/aarch64-linux-android/bin/.keep create mode 100644 test/Driver/Inputs/basic_android_tree/aarch64-linux-android/include/c++/4.8/.keep create mode 100644 test/Driver/Inputs/basic_android_tree/aarch64-linux-android/lib/.keep create mode 100755 test/Driver/Inputs/basic_android_tree/arm-linux-androideabi/bin/ld create mode 100755 test/Driver/Inputs/basic_android_tree/arm-linux-androideabi/bin/ld.bfd create mode 100755 test/Driver/Inputs/basic_android_tree/arm-linux-androideabi/bin/ld.gold create mode 100755 test/Driver/Inputs/basic_android_tree/bin/arm-linux-androideabi-ld create mode 100755 test/Driver/Inputs/basic_android_tree/bin/arm-linux-androideabi-ld.bfd create mode 100755 test/Driver/Inputs/basic_android_tree/bin/arm-linux-androideabi-ld.gold create mode 100644 test/Driver/Inputs/basic_android_tree/lib/gcc/aarch64-linux-android/4.8/crtbegin.o create mode 100644 test/Driver/Inputs/basic_android_tree/lib/gcc/aarch64-linux-android/4.8/crtbeginS.o create mode 100644 test/Driver/Inputs/basic_android_tree/lib/gcc/aarch64-linux-android/4.8/crtbeginT.o create mode 100644 test/Driver/Inputs/basic_android_tree/lib/gcc/aarch64-linux-android/4.8/crtend.o create mode 100644 test/Driver/Inputs/basic_android_tree/lib/gcc/aarch64-linux-android/4.8/crtendS.o create mode 100755 test/Driver/Inputs/basic_freebsd_tree/usr/bin/ld.bfd create mode 100755 test/Driver/Inputs/basic_freebsd_tree/usr/bin/ld.gold create mode 100644 test/Driver/Inputs/basic_linux_libcxx_tree/usr/bin/.keep create mode 100644 test/Driver/Inputs/basic_linux_libcxx_tree/usr/include/c++/v1/.keep create mode 100644 test/Driver/Inputs/basic_linux_libcxx_tree/usr/lib/.keep create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/64/crti.o create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/eabi/crti.o create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/i386/crti.o create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/o32/crti.o create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/oabi/crti.o create mode 100644 test/Driver/Inputs/basic_netbsd_tree/usr/lib/sparc/crti.o create mode 100644 test/Driver/Inputs/cl-libs/cl-test.lib create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/lib/mips64-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/lib/mips64el-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/include/c++/4.9/backward/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/include/c++/4.9/mips64-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/include/c++/4.9/mips64el-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/include/mips64-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/include/mips64el-linux-gnuabi64/.keep create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/gcc/mips64-linux-gnuabi64/4.9/crtbegin.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/gcc/mips64-linux-gnuabi64/4.9/crtend.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/crtbegin.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/crtend.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64-linux-gnuabi64/crt1.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64-linux-gnuabi64/crti.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64-linux-gnuabi64/crtn.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64el-linux-gnuabi64/crt1.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64el-linux-gnuabi64/crti.o create mode 100644 test/Driver/Inputs/debian_6_mips64_tree/usr/lib/mips64el-linux-gnuabi64/crtn.o create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/lib/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/lib/mips-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/lib/mipsel-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/c++/4.7/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/c++/4.7/backward/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/c++/4.7/mips-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/c++/4.7/mipsel-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/mips-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/include/mipsel-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/lib/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/lib/gcc/mips-linux-gnu/4.7/crtbegin.o create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/lib/gcc/mipsel-linux-gnu/4.7/crtbegin.o create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/lib/mips-linux-gnu/.keep create mode 100644 test/Driver/Inputs/debian_reduced_mips_tree/usr/lib/mipsel-linux-gnu/.keep create mode 100644 test/Driver/Inputs/fedora_21_tree/usr/lib/gcc/aarch64-redhat-linux/4.9.0/crtbegin.o create mode 100644 test/Driver/Inputs/fedora_21_tree/usr/lib/gcc/aarch64-redhat-linux/4.9.0/crtend.o create mode 100644 test/Driver/Inputs/fedora_21_tree/usr/lib64/crt1.o create mode 100644 test/Driver/Inputs/fedora_21_tree/usr/lib64/crti.o create mode 100644 test/Driver/Inputs/fedora_21_tree/usr/lib64/crtn.o create mode 100644 test/Driver/Inputs/file.ll create mode 100644 test/Driver/Inputs/gentoo_linux_gcc_4.6.2_tree/usr/include/.keep create mode 100644 test/Driver/Inputs/gentoo_linux_gcc_4.6.4_tree/usr/include/.keep create mode 100644 test/Driver/Inputs/mips_cs_tree/lib/gcc/mips-linux-gnu/4.6.3/include-fixed/nan2008/el/.keep create mode 100644 test/Driver/Inputs/mips_cs_tree/lib/gcc/mips-linux-gnu/4.6.3/nan2008/crtbegin.o create mode 100644 test/Driver/Inputs/mips_cs_tree/lib/gcc/mips-linux-gnu/4.6.3/nan2008/crtend.o create mode 100644 test/Driver/Inputs/mips_cs_tree/lib/gcc/mips-linux-gnu/4.6.3/nan2008/el/crtbegin.o create mode 100644 test/Driver/Inputs/mips_cs_tree/lib/gcc/mips-linux-gnu/4.6.3/nan2008/el/crtend.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/lib/nan2008/el/.keep create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/el/lib/.keep create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/el/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/el/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/el/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/lib/.keep create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_cs_tree/mips-linux-gnu/libc/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/micromips/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips16/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips32/mips16/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/64/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/64/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/el/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/el/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/el/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/el/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/fp64/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/fp64/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/fp64/nan2008/crtbegin.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/lib/gcc/mips-mti-linux-gnu/4.9.0/mips64r2/fp64/nan2008/crtend.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/micromips/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/micromips/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips16/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips16/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips32/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips32/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64/64/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64/64/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/64/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/64/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/el/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/include/c++/4.9.0/mips-mti-linux-gnu/mips64r2/fp64/bits/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/micromips/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/micromips/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips16/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips16/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips32/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips32/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips32/mips16/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips32/mips16/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64/64/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64/64/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64r2/64/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64r2/64/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64r2/el/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/mips-mti-linux-gnu/lib/mips64r2/fp64/nan2008/.keep delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/micromips/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips16/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips32/mips16/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/64/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/64/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/el/fp64/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/nan2008/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/nan2008/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/nan2008/usr/lib/crtn.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/usr/lib/crt1.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/usr/lib/crti.o delete mode 100644 test/Driver/Inputs/mips_fsf_tree/sysroot/mips64r2/fp64/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/el/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/el/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/include-fixed/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/include-fixed/mips64r6/64/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/include-fixed/mips64r6/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/include/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/64/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/64/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/64/el/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/64/el/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/el/crtbegin.o create mode 100644 test/Driver/Inputs/mips_img_tree/lib/gcc/mips-img-linux-gnu/4.9.0/mips64r6/el/crtend.o create mode 100644 test/Driver/Inputs/mips_img_tree/mips-img-linux-gnu/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/mips-img-linux-gnu/include/c++/4.9.0/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/mips-img-linux-gnu/lib/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/mips-img-linux-gnu/lib/mips64r6/64/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/mips-img-linux-gnu/lib/mips64r6/el/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/el/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/el/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/el/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/el/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/el/usr/sbin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/el/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/el/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/el/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/el/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/el/usr/sbin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/64/usr/sbin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/el/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/el/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/el/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/el/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/el/usr/sbin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/mips64r6/usr/sbin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/bin/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/include/.keep create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/lib/crt1.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/lib/crti.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/lib/crtn.o create mode 100644 test/Driver/Inputs/mips_img_tree/sysroot/usr/sbin/.keep create mode 100644 test/Driver/Inputs/module/module.modulemap create mode 100644 test/Driver/Inputs/module/simple.h create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/libx32/.keep create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32/crtbegin.o create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/4.6.0/32/crtbegin.o create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/4.6.0/crtbegin.o create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/usr/libx32/gcc/x86_64-unknown-gnu/4.6.0/x32/crtbegin.o create mode 100644 test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/libx32/.keep create mode 100644 test/Driver/Inputs/resource_dir/lib/macho_embedded/libclang_rt.hard_pic.a create mode 100644 test/Driver/Inputs/resource_dir/lib/macho_embedded/libclang_rt.hard_static.a create mode 100644 test/Driver/Inputs/resource_dir/lib/macho_embedded/libclang_rt.soft_pic.a create mode 100644 test/Driver/Inputs/resource_dir/lib/macho_embedded/libclang_rt.soft_static.a create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/lib/powerpc64le-linux-gnu/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/lib/x86_64-linux-gnu/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/libx32/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/c++/4.8/backward/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/powerpc64le-linux-gnu/c++/4.8/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/x86_64-linux-gnu/c++/4.8/32/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/x86_64-linux-gnu/c++/4.8/x32/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtbegin.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtend.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.9/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtbegin.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/4.9/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/powerpc64le-linux-gnu/crt1.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/powerpc64le-linux-gnu/crti.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/powerpc64le-linux-gnu/crtn.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/x86_64-linux-gnu/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/libx32/crt1.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/libx32/crti.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/libx32/crtn.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/lib/i386-linux-gnu/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/lib/x86_64-linux-gnu/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/include/c++/4.8/backward/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/include/i386-linux-gnu/c++/4.8/.keep create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/include/x86_64-linux-gnu/c++/4.8/32/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/lib/gcc/i686-linux-gnu/4.8/crtbegin.o create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o create mode 100755 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/lib/i386-linux-gnu/.keep create mode 100644 test/Driver/Inputs/ubuntu_14.04_multiarch_tree2/usr/lib/x86_64-linux-gnu/.keep create mode 100644 test/Driver/Inputs/wildcard1.c create mode 100644 test/Driver/Inputs/wildcard2.c delete mode 100644 test/Driver/aarch64-mfpu.c create mode 100644 test/Driver/aarch64-mgeneral_regs_only.c create mode 100644 test/Driver/arm-arch-darwin.c create mode 100644 test/Driver/arm-long-calls.c create mode 100644 test/Driver/arm64-as.s create mode 100644 test/Driver/arm64-darwinpcs.c create mode 100644 test/Driver/at_file_missing.c delete mode 100644 test/Driver/bounds-checking.c delete mode 100644 test/Driver/cfi.c create mode 100644 test/Driver/cl-eh.cpp create mode 100644 test/Driver/cl-x86-flags.c create mode 100644 test/Driver/code-model.c create mode 100644 test/Driver/compress.c create mode 100644 test/Driver/crash-report-modules.m delete mode 100644 test/Driver/darwin-eabi.c create mode 100644 test/Driver/darwin-embedded.c delete mode 100644 test/Driver/dwarf2-cfi-asm.c create mode 100644 test/Driver/function-sections.c create mode 100644 test/Driver/fuse-ld.c create mode 100644 test/Driver/implicit-function-as-error.c create mode 100644 test/Driver/instrprof-ld.c create mode 100644 test/Driver/krait-cpu.c create mode 100644 test/Driver/macho-embedded.c create mode 100644 test/Driver/masm.c delete mode 100644 test/Driver/mips-cs-header-search.cpp delete mode 100644 test/Driver/mips-cs-ld.c create mode 100644 test/Driver/mips-cs.cpp create mode 100644 test/Driver/mips-img.cpp create mode 100644 test/Driver/mips-integrated-as.s create mode 100644 test/Driver/mips-reduced-toolchain.cpp create mode 100644 test/Driver/msc-version.c create mode 100644 test/Driver/no-integrated-as.c create mode 100644 test/Driver/nozlibcompress.c create mode 100644 test/Driver/pch-deps.c create mode 100644 test/Driver/preprocess-multiple.c create mode 100644 test/Driver/sanitize_unwind_tables.c create mode 100644 test/Driver/sparc-float.c create mode 100644 test/Driver/verify_pch.m create mode 100644 test/Driver/vfsoverlay.c create mode 100644 test/Driver/via-file-asm.c create mode 100644 test/Driver/windows-arm-minimal-arch.c create mode 100644 test/Driver/windows-wildcard-expansion.c create mode 100644 test/Driver/woa-restrict-it.c create mode 100644 test/Driver/x86_m16.c create mode 100644 test/FixIt/fixit-multiple-selector-warnings.m create mode 100644 test/FixIt/fixit-objc-arc.m create mode 100644 test/FixIt/fixit-objc-bridge-related-attr.m create mode 100644 test/FixIt/fixit-objc-bridge-related-property.m create mode 100644 test/FixIt/fixit-objc-bridge-related.m delete mode 100644 test/FixIt/lit.local.cfg create mode 100644 test/FixIt/no-diagnostics-fixit-info.c create mode 100644 test/Format/disable-format.cpp create mode 100644 test/Format/language-detection.cpp create mode 100644 test/Frontend/Inputs/rewrite-includes-messages.h create mode 100644 test/Frontend/backend-diagnostic.c create mode 100644 test/Frontend/disable-output.c create mode 100644 test/Frontend/exceptions.c create mode 100644 test/Frontend/ir-support.c create mode 100644 test/Frontend/optimization-remark-line-directive.c create mode 100644 test/Frontend/optimization-remark.c create mode 100644 test/Frontend/plugins.c create mode 100644 test/Frontend/rewrite-includes-cli-include.c create mode 100644 test/Frontend/rewrite-includes-eof.c create mode 100644 test/Frontend/rewrite-includes-messages.c create mode 100644 test/Frontend/stdlang.c create mode 100644 test/Frontend/windows-nul.c create mode 100644 test/Headers/Inputs/include/setjmp.h create mode 100644 test/Headers/arm-acle-header.c create mode 100644 test/Headers/stddefneeds.cpp create mode 100644 test/Headers/xmmintrin.c create mode 100644 test/Index/Inputs/Frameworks/DocCommentsA.framework/Headers/DocCommentsA.h create mode 100644 test/Index/Inputs/Frameworks/DocCommentsB.framework/Headers/DocCommentsB.h create mode 100644 test/Index/Inputs/Frameworks/DocCommentsC.framework/Headers/DocCommentsC.h create mode 100644 test/Index/Inputs/base_module_needs_vfs.h create mode 100644 test/Index/Inputs/module.map create mode 100644 test/Index/Inputs/module_needs_vfs.h create mode 100644 test/Index/Inputs/retain-comments-from-system-headers-module.map create mode 100644 test/Index/Inputs/usrs-system.h create mode 100644 test/Index/Inputs/vfsoverlay.yaml create mode 100644 test/Index/attributes-cuda.cu create mode 100644 test/Index/complete-macros.h create mode 100644 test/Index/index-module-with-vfs.m create mode 100644 test/Index/index-pch-objc.m create mode 100644 test/Index/pch-depending-on-deleted-module.c create mode 100644 test/Index/preamble-reparse-warn-end-of-file.c create mode 100644 test/Index/preamble-reparse-warn-macro.c create mode 100644 test/Index/reparse-with-remaps/reparse.c create mode 100644 test/Index/reparse-with-remaps/test.h create mode 100644 test/Index/reparse-with-remaps/test.h-0 create mode 100644 test/Index/reparse-with-remaps/test.h-1 create mode 100644 test/Index/skipped-ranges.c create mode 100644 test/Integration/carbon.c create mode 100644 test/Integration/cocoa-pch.m create mode 100644 test/Integration/cocoa.m create mode 100644 test/Layout/ms-x86-alias-avoidance-padding.cpp create mode 100644 test/Layout/ms-x86-member-pointers.cpp create mode 100644 test/Layout/ms-x86-pack-and-align.cpp create mode 100644 test/Lexer/Inputs/success.h delete mode 100644 test/Lexer/clang-keywords.cpp create mode 100644 test/Lexer/cross-windows-on-linux-default.cpp create mode 100644 test/Lexer/cross-windows-on-linux.cpp delete mode 100644 test/Lexer/cxx0x_keyword.cpp create mode 100644 test/Lexer/cxx1z-trigraphs.cpp delete mode 100644 test/Lexer/gnu_keywords.c create mode 100644 test/Lexer/keywords_test.c create mode 100644 test/Lexer/keywords_test.cpp create mode 100644 test/Lexer/warn-date-time.c create mode 100644 test/Misc/Inputs/serialized-diags-stable.dia create mode 100644 test/Misc/ast-dump-arm-attr.c create mode 100644 test/Misc/ast-dump-msp430-attr.c create mode 100644 test/Misc/ast-print-pragmas-xfail.cpp create mode 100644 test/Misc/ast-print-pragmas.cpp create mode 100644 test/Misc/backend-optimization-failure.cpp create mode 100644 test/Misc/backend-stack-frame-diagnostics-fallback.cpp create mode 100644 test/Misc/backend-stack-frame-diagnostics.cpp create mode 100644 test/Misc/driver-verify.c create mode 100644 test/Misc/interpreter.c create mode 100644 test/Misc/serialized-diags-stable.c create mode 100644 test/Misc/warn-sysheader.cpp create mode 100644 test/Misc/win32-macho.c create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both/a.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both/b.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both/module.map create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both/module.modulemap create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both_F.framework/Headers/a.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both_F.framework/Headers/b.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both_F.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/ModuleMapLocations/Both_F.framework/module.map create mode 100644 test/Modules/Inputs/ModuleMapLocations/Inferred.framework/Headers/Inferred.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap/a.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap/module.modulemap create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap_F.framework/Headers/a.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap_F.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap_F.framework/Modules/module.private.modulemap create mode 100644 test/Modules/Inputs/ModuleMapLocations/Module_ModuleMap_F.framework/PrivateHeaders/private.h create mode 100644 test/Modules/Inputs/ModuleMapLocations/module.modulemap create mode 100644 test/Modules/Inputs/autolink-sub3.h create mode 100644 test/Modules/Inputs/autolink-sub3.pch create mode 100644 test/Modules/Inputs/c-header-bad.h create mode 100644 test/Modules/Inputs/c-header.h create mode 100644 test/Modules/Inputs/cxx-decls-merged.h create mode 100644 test/Modules/Inputs/cxx-header.h create mode 100644 test/Modules/Inputs/cxx-inline-namespace-b.h create mode 100644 test/Modules/Inputs/cxx-irgen-left.h create mode 100644 test/Modules/Inputs/cxx-irgen-right.h create mode 100644 test/Modules/Inputs/cxx-irgen-top.h create mode 100644 test/Modules/Inputs/declare-use/i.h create mode 100644 test/Modules/Inputs/declare-use/j.h create mode 100644 test/Modules/Inputs/declare-use/s.h create mode 100644 test/Modules/Inputs/elsewhere/c-header-indirect.h create mode 100644 test/Modules/Inputs/elsewhere/module.map create mode 100644 test/Modules/Inputs/exclude-header/module.map create mode 100644 test/Modules/Inputs/exclude-header/x/a.h create mode 100644 test/Modules/Inputs/exclude-header/x/bad.h create mode 100644 test/Modules/Inputs/exclude-header/y/b.h create mode 100644 test/Modules/Inputs/include-relative/a.h create mode 100644 test/Modules/Inputs/include-relative/module.map create mode 100644 test/Modules/Inputs/macro-hiding/a1.h create mode 100644 test/Modules/Inputs/macro-hiding/a2.h create mode 100644 test/Modules/Inputs/macro-hiding/b1.h create mode 100644 test/Modules/Inputs/macro-hiding/b2.h create mode 100644 test/Modules/Inputs/macro-hiding/c1.h create mode 100644 test/Modules/Inputs/macro-hiding/d1.h create mode 100644 test/Modules/Inputs/macro-hiding/e1.h create mode 100644 test/Modules/Inputs/macro-hiding/e2.h create mode 100644 test/Modules/Inputs/macro-hiding/module.modulemap create mode 100644 test/Modules/Inputs/macro-undef-through-pch/A.h create mode 100644 test/Modules/Inputs/macro-undef-through-pch/foo.h create mode 100644 test/Modules/Inputs/macro-undef-through-pch/module.map create mode 100644 test/Modules/Inputs/macros_top_b.h create mode 100644 test/Modules/Inputs/macros_top_c.h create mode 100644 test/Modules/Inputs/malformed/a1.h create mode 100644 test/Modules/Inputs/malformed/a2.h create mode 100644 test/Modules/Inputs/malformed/b1.h create mode 100644 test/Modules/Inputs/malformed/b2.h create mode 100644 test/Modules/Inputs/malformed/module.map create mode 100644 test/Modules/Inputs/modules-with-same-name/DependsOnA/DependsOnA.h create mode 100644 test/Modules/Inputs/modules-with-same-name/DependsOnA/module.modulemap create mode 100644 test/Modules/Inputs/modules-with-same-name/path1/A/a.h create mode 100644 test/Modules/Inputs/modules-with-same-name/path1/A/module.modulemap create mode 100644 test/Modules/Inputs/modules-with-same-name/path2/A/a.h create mode 100644 test/Modules/Inputs/modules-with-same-name/path2/A/module.modulemap create mode 100644 test/Modules/Inputs/recursive1.h create mode 100644 test/Modules/Inputs/recursive2.h create mode 100644 test/Modules/Inputs/redecl-add-after-load-decls.h create mode 100644 test/Modules/Inputs/redecl-add-after-load-top.h create mode 100644 test/Modules/Inputs/redecl-add-after-load.h create mode 100644 test/Modules/Inputs/require-modular-includes/A.framework/Headers/A.h create mode 100644 test/Modules/Inputs/require-modular-includes/AnotherModule.h create mode 100644 test/Modules/Inputs/require-modular-includes/AnotherModuleExcluded.h create mode 100644 test/Modules/Inputs/require-modular-includes/B.framework/Headers/B.h create mode 100644 test/Modules/Inputs/require-modular-includes/C.h create mode 100644 test/Modules/Inputs/require-modular-includes/ExcludedFromAnotherModule.framework/Headers/ExcludedFromAnotherModule.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromAnotherModule.framework/Headers/FromAnotherModule.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedModuleFail.framework/Headers/FromImportedModuleFail.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedModuleOK.framework/Headers/FromImportedModuleOK.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedModuleOK.framework/Headers/FromImportedModuleOK2.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedModuleOK.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedSubModule.framework/Headers/Header.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromImportedSubModule.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/FromNonModularSubframework.framework/Frameworks/Subframework.framework/Headers/Subframework.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromNonModularSubframework.framework/Headers/FromNonModularSubframework.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromNonModularSubframework.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/FromSubframework.framework/Frameworks/Subframework.framework/Headers/Subframework.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromSubframework.framework/Headers/FromSubframework.h create mode 100644 test/Modules/Inputs/require-modular-includes/FromSubframework.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/FromUmbrella.framework/Headers/FromUmbrella.h create mode 100644 test/Modules/Inputs/require-modular-includes/IncludeExcluded.framework/Headers/Excluded.h create mode 100644 test/Modules/Inputs/require-modular-includes/IncludeExcluded.framework/Headers/IncludeExcluded.h create mode 100644 test/Modules/Inputs/require-modular-includes/IncludeExcluded.framework/Modules/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/NotFramework.h create mode 100644 test/Modules/Inputs/require-modular-includes/NotInModule.h create mode 100644 test/Modules/Inputs/require-modular-includes/module.modulemap create mode 100644 test/Modules/Inputs/require-modular-includes/umbrella/bar/bar.h create mode 100644 test/Modules/Inputs/require-modular-includes/umbrella/foo.h create mode 100644 test/Modules/Inputs/string_names/a.h create mode 100644 test/Modules/Inputs/string_names/b.h create mode 100644 test/Modules/Inputs/string_names/c.h create mode 100644 test/Modules/Inputs/string_names/module.map create mode 100644 test/Modules/Inputs/string_names/sub.h create mode 100644 test/Modules/Inputs/submodules/not_missing.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/a.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/b.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/c.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/d.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/e.h create mode 100644 test/Modules/Inputs/template-specialization-visibility/module.map create mode 100644 test/Modules/Inputs/undefined-type-fixit/module.map create mode 100644 test/Modules/Inputs/undefined-type-fixit/public1.h create mode 100644 test/Modules/Inputs/undefined-type-fixit/public2.h create mode 100644 test/Modules/Inputs/undefined-type-fixit/public2sub.h create mode 100644 test/Modules/Inputs/unnecessary-module-map-parsing/a1.h create mode 100644 test/Modules/Inputs/unnecessary-module-map-parsing/module.map create mode 100644 test/Modules/Inputs/update-after-load/a.h create mode 100644 test/Modules/Inputs/update-after-load/b.h create mode 100644 test/Modules/Inputs/update-after-load/module.map create mode 100644 test/Modules/Inputs/update-after-load/modules.timestamp create mode 100644 test/Modules/Rmodule-build.m create mode 100644 test/Modules/Werror-Wsystem-headers.m create mode 100644 test/Modules/Werror.m create mode 100644 test/Modules/cxx-irgen.cpp create mode 100644 test/Modules/declare-use.S create mode 100644 test/Modules/declare-use3.cpp create mode 100644 test/Modules/declare-use4.cpp create mode 100644 test/Modules/dependency-dump-dependent-module.m create mode 100644 test/Modules/dependency-dump.m create mode 100644 test/Modules/dependency-gen-inferred-map.m create mode 100644 test/Modules/dependency-gen-pch.m create mode 100644 test/Modules/dependency-gen.m create mode 100644 test/Modules/exclude-header.c create mode 100644 test/Modules/extern_c.cpp create mode 100644 test/Modules/extern_c_bad.cpp create mode 100644 test/Modules/fmodules-validate-once-per-build-session.c create mode 100644 test/Modules/import-self.m create mode 100644 test/Modules/include-relative.c create mode 100644 test/Modules/inferred-framework-case.m create mode 100644 test/Modules/load-after-failure.m create mode 100644 test/Modules/macro-hiding.cpp create mode 100644 test/Modules/macro-reexport/a1.h create mode 100644 test/Modules/macro-reexport/a2.h create mode 100644 test/Modules/macro-reexport/b1.h create mode 100644 test/Modules/macro-reexport/b2.h create mode 100644 test/Modules/macro-reexport/c1.h create mode 100644 test/Modules/macro-reexport/d1.h create mode 100644 test/Modules/macro-reexport/d2.h create mode 100644 test/Modules/macro-reexport/macro-reexport.cpp create mode 100644 test/Modules/macro-reexport/module.modulemap create mode 100644 test/Modules/macro-undef-through-pch.m create mode 100644 test/Modules/macros2.c create mode 100644 test/Modules/malformed.cpp create mode 100644 test/Modules/missing-header.m create mode 100644 test/Modules/missing-submodule.m create mode 100644 test/Modules/modulemap-locations.m create mode 100644 test/Modules/modules-with-same-name.m create mode 100644 test/Modules/no-stale-modtime.m create mode 100644 test/Modules/recursive.c create mode 100644 test/Modules/redecl-add-after-load.cpp create mode 100644 test/Modules/require-modular-includes.m create mode 100644 test/Modules/resolution-change.m create mode 100644 test/Modules/strict-decluse.cpp create mode 100644 test/Modules/string_names.cpp create mode 100644 test/Modules/subframework-from-intermediate-path.m create mode 100644 test/Modules/template-specialization-visibility.cpp create mode 100644 test/Modules/undefined-type-fixit1.cpp create mode 100644 test/Modules/unnecessary-module-map-parsing.c create mode 100644 test/Modules/update-after-load.cpp create mode 100644 test/Modules/validate-system-headers.m create mode 100644 test/OpenMP/barrier_ast_print.cpp create mode 100644 test/OpenMP/barrier_messages.cpp create mode 100644 test/OpenMP/critical_ast_print.cpp create mode 100644 test/OpenMP/critical_messages.cpp create mode 100644 test/OpenMP/flush_ast_print.cpp create mode 100644 test/OpenMP/flush_messages.cpp create mode 100644 test/OpenMP/for_ast_print.cpp create mode 100644 test/OpenMP/for_collapse_messages.cpp create mode 100644 test/OpenMP/for_firstprivate_messages.cpp create mode 100644 test/OpenMP/for_lastprivate_messages.cpp create mode 100644 test/OpenMP/for_loop_messages.cpp create mode 100644 test/OpenMP/for_misc_messages.c create mode 100644 test/OpenMP/for_private_messages.cpp create mode 100644 test/OpenMP/for_reduction_messages.cpp create mode 100644 test/OpenMP/for_schedule_messages.cpp create mode 100644 test/OpenMP/master_ast_print.cpp create mode 100644 test/OpenMP/master_messages.cpp create mode 100644 test/OpenMP/nesting_of_regions.cpp create mode 100644 test/OpenMP/parallel_codegen.cpp create mode 100644 test/OpenMP/parallel_copyin_messages.cpp create mode 100644 test/OpenMP/parallel_for_ast_print.cpp create mode 100644 test/OpenMP/parallel_for_collapse_messages.cpp create mode 100644 test/OpenMP/parallel_for_copyin_messages.cpp create mode 100644 test/OpenMP/parallel_for_default_messages.cpp create mode 100644 test/OpenMP/parallel_for_firstprivate_messages.cpp create mode 100644 test/OpenMP/parallel_for_if_messages.cpp create mode 100644 test/OpenMP/parallel_for_lastprivate_messages.cpp create mode 100644 test/OpenMP/parallel_for_loop_messages.cpp create mode 100644 test/OpenMP/parallel_for_messages.cpp create mode 100644 test/OpenMP/parallel_for_misc_messages.c create mode 100644 test/OpenMP/parallel_for_num_threads_messages.cpp create mode 100644 test/OpenMP/parallel_for_private_messages.cpp create mode 100644 test/OpenMP/parallel_for_proc_bind_messages.cpp create mode 100644 test/OpenMP/parallel_for_reduction_messages.cpp create mode 100644 test/OpenMP/parallel_for_schedule_messages.cpp create mode 100644 test/OpenMP/parallel_if_messages.cpp create mode 100644 test/OpenMP/parallel_num_threads_messages.cpp create mode 100644 test/OpenMP/parallel_proc_bind_messages.cpp create mode 100644 test/OpenMP/parallel_reduction_messages.cpp create mode 100644 test/OpenMP/parallel_sections_ast_print.cpp create mode 100644 test/OpenMP/parallel_sections_copyin_messages.cpp create mode 100644 test/OpenMP/parallel_sections_default_messages.cpp create mode 100644 test/OpenMP/parallel_sections_firstprivate_messages.cpp create mode 100644 test/OpenMP/parallel_sections_if_messages.cpp create mode 100644 test/OpenMP/parallel_sections_lastprivate_messages.cpp create mode 100644 test/OpenMP/parallel_sections_messages.cpp create mode 100644 test/OpenMP/parallel_sections_misc_messages.c create mode 100644 test/OpenMP/parallel_sections_num_threads_messages.cpp create mode 100644 test/OpenMP/parallel_sections_private_messages.cpp create mode 100644 test/OpenMP/parallel_sections_proc_bind_messages.cpp create mode 100644 test/OpenMP/parallel_sections_reduction_messages.cpp create mode 100644 test/OpenMP/parallel_sections_shared_messages.cpp create mode 100644 test/OpenMP/sections_ast_print.cpp create mode 100644 test/OpenMP/sections_firstprivate_messages.cpp create mode 100644 test/OpenMP/sections_lastprivate_messages.cpp create mode 100644 test/OpenMP/sections_misc_messages.c create mode 100644 test/OpenMP/sections_private_messages.cpp create mode 100644 test/OpenMP/sections_reduction_messages.cpp create mode 100644 test/OpenMP/simd_aligned_messages.cpp create mode 100644 test/OpenMP/simd_ast_print.cpp create mode 100644 test/OpenMP/simd_collapse_messages.cpp create mode 100644 test/OpenMP/simd_lastprivate_messages.cpp create mode 100644 test/OpenMP/simd_linear_messages.cpp create mode 100644 test/OpenMP/simd_loop_messages.cpp create mode 100644 test/OpenMP/simd_metadata.c create mode 100644 test/OpenMP/simd_misc_messages.c create mode 100644 test/OpenMP/simd_private_messages.cpp create mode 100644 test/OpenMP/simd_reduction_messages.cpp create mode 100644 test/OpenMP/simd_safelen_messages.cpp create mode 100644 test/OpenMP/single_ast_print.cpp create mode 100644 test/OpenMP/single_copyprivate_messages.cpp create mode 100644 test/OpenMP/single_firstprivate_messages.cpp create mode 100644 test/OpenMP/single_misc_messages.c create mode 100644 test/OpenMP/single_private_messages.cpp create mode 100644 test/OpenMP/task_ast_print.cpp create mode 100644 test/OpenMP/task_default_messages.cpp create mode 100644 test/OpenMP/task_final_messages.cpp create mode 100644 test/OpenMP/task_firstprivate_messages.cpp create mode 100644 test/OpenMP/task_if_messages.cpp create mode 100644 test/OpenMP/task_messages.cpp create mode 100644 test/OpenMP/task_private_messages.cpp create mode 100644 test/OpenMP/task_shared_messages.cpp create mode 100644 test/OpenMP/taskwait_ast_print.cpp create mode 100644 test/OpenMP/taskwait_messages.cpp create mode 100644 test/OpenMP/taskyield_ast_print.cpp create mode 100644 test/OpenMP/taskyield_messages.cpp create mode 100644 test/PCH/Inputs/cuda.h delete mode 100644 test/PCH/cocoa.m create mode 100644 test/PCH/cxx-key-functions.cpp create mode 100644 test/PCH/cxx-mangling.cpp create mode 100644 test/PCH/cxx11-inheriting-ctors.cpp create mode 100644 test/PCH/different-diagnostic-level.c create mode 100644 test/PCH/different-linker-version.c create mode 100644 test/PCH/local_static.cpp create mode 100644 test/PCH/local_static.h create mode 100644 test/PCH/macro-undef.cpp create mode 100644 test/PCH/modified-module-dependency.m create mode 100644 test/PCH/modified-module-dependency.module.map create mode 100644 test/PCH/pr18806.cpp create mode 100644 test/PCH/pragma-loop.cpp create mode 100644 test/PCH/pragma-optimize.c create mode 100644 test/PCH/stmt-attrs.cpp create mode 100644 test/PCH/verify_pch.m create mode 100644 test/Parser/MicrosoftExtensionsInlineAsm.c create mode 100644 test/Parser/arm-windows-calling-convention-handling.c create mode 100644 test/Parser/brackets.c create mode 100644 test/Parser/brackets.cpp create mode 100644 test/Parser/cuda-kernel-call-c++11.cu create mode 100644 test/Parser/diag-crash.c create mode 100644 test/Parser/eof.cpp create mode 100644 test/Parser/ms-if-exists.cpp create mode 100644 test/Parser/ms-inline-asm-nested-braces.c create mode 100644 test/Parser/objcbridge-related-attribute.m create mode 100644 test/Parser/opencl-keywords.cl create mode 100644 test/Parser/pragma-loop.cpp create mode 100644 test/Parser/pragma-optimize-diagnostics.cpp create mode 100644 test/Parser/pragma-unroll.cpp create mode 100644 test/Parser/warn-cuda-compat.cu create mode 100644 test/Preprocessor/Inputs/headermap-rel/Foo.framework/Headers/Foo.h create mode 100644 test/Preprocessor/Inputs/headermap-rel/foo.hmap create mode 100644 test/Preprocessor/Inputs/headermap-rel2/Product/someheader.h create mode 100644 test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap create mode 100644 test/Preprocessor/Inputs/headermap-rel2/system/usr/include/someheader.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/a/b/include3.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/a/findme.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/a/include2.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/falsepos.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/findme.h create mode 100644 test/Preprocessor/Inputs/microsoft-header-search/include1.h create mode 100644 test/Preprocessor/arm-acle-6.4.c create mode 100644 test/Preprocessor/headermap-rel.c create mode 100644 test/Preprocessor/headermap-rel2.c create mode 100644 test/Preprocessor/ignore-pragmas.c create mode 100644 test/Preprocessor/macho-embedded-predefines.c create mode 100644 test/Preprocessor/macro-multiline.c delete mode 100644 test/Preprocessor/macro-multiline.c.ignoreme create mode 100644 test/Preprocessor/macro_arg_empty.c create mode 100644 test/Preprocessor/macro_redefined.c create mode 100644 test/Preprocessor/microsoft-header-search.c create mode 100644 test/Preprocessor/print-pragma-microsoft.c create mode 100644 test/Preprocessor/woa-defaults.c create mode 100644 test/Preprocessor/woa-wchar_t.c create mode 100644 test/Profile/Inputs/c-attributes.proftext create mode 100644 test/Profile/Inputs/c-captured.proftext create mode 100644 test/Profile/Inputs/c-counter-overflows.proftext create mode 100644 test/Profile/Inputs/c-general.proftext create mode 100644 test/Profile/Inputs/c-outdated-data.proftext create mode 100644 test/Profile/Inputs/c-unprofiled-blocks.proftext create mode 100644 test/Profile/Inputs/c-unprofiled.proftext create mode 100644 test/Profile/Inputs/cxx-class.proftext create mode 100644 test/Profile/Inputs/cxx-lambda.proftext create mode 100644 test/Profile/Inputs/cxx-templates.proftext create mode 100644 test/Profile/Inputs/cxx-throws.proftext create mode 100644 test/Profile/Inputs/objc-general.proftext create mode 100644 test/Profile/Inputs/profiled_header.h create mode 100644 test/Profile/README create mode 100644 test/Profile/c-attributes.c create mode 100644 test/Profile/c-captured.c create mode 100644 test/Profile/c-counter-overflows.c create mode 100644 test/Profile/c-general.c create mode 100644 test/Profile/c-linkage-available_externally.c create mode 100644 test/Profile/c-linkage.c create mode 100644 test/Profile/c-outdated-data.c create mode 100644 test/Profile/c-unprofiled-blocks.c create mode 100644 test/Profile/c-unprofiled.c create mode 100644 test/Profile/cxx-class.cpp create mode 100644 test/Profile/cxx-implicit.cpp create mode 100644 test/Profile/cxx-lambda.cpp create mode 100644 test/Profile/cxx-linkage.cpp create mode 100644 test/Profile/cxx-templates.cpp create mode 100644 test/Profile/cxx-throws.cpp create mode 100644 test/Profile/objc-general.m delete mode 100644 test/Rewriter/dllimport-typedef.c create mode 100644 test/Sema/Inputs/warn-unreachable.h create mode 100644 test/Sema/aarch64-neon-ranges.c delete mode 100644 test/Sema/alloc_size.c create mode 100644 test/Sema/arm64-inline-asm.c create mode 100644 test/Sema/arm64-neon-args.c create mode 100644 test/Sema/arm_acle.c create mode 100644 test/Sema/atomic-compare.c create mode 100644 test/Sema/attr-capabilities.c create mode 100644 test/Sema/attr-msp430.c create mode 100644 test/Sema/attr-noduplicate.c create mode 100644 test/Sema/big-endian-neon-initializers.c create mode 100644 test/Sema/bool-compare.c create mode 100644 test/Sema/builtin-assume.c create mode 100644 test/Sema/builtins-arm64-exclusive.c create mode 100644 test/Sema/builtins-arm64.c delete mode 100644 test/Sema/carbon.c create mode 100644 test/Sema/dllexport.c delete mode 100644 test/Sema/dllimport-dllexport.c create mode 100644 test/Sema/dllimport.c create mode 100644 test/Sema/enable_if.c create mode 100644 test/Sema/inline-asm-validate.c create mode 100644 test/Sema/lit.local.cfg create mode 100644 test/Sema/loop-control.c create mode 100644 test/Sema/pragma-section.c create mode 100644 test/Sema/warn-absolute-value-header.c create mode 100644 test/Sema/warn-absolute-value.c create mode 100644 test/Sema/warn-bitwise-compare.c create mode 100644 test/Sema/warn-overlap.c create mode 100644 test/SemaCUDA/Inputs/cuda.h delete mode 100644 test/SemaCUDA/cuda.h create mode 100644 test/SemaCUDA/launch_bounds.cu create mode 100644 test/SemaCUDA/lit.local.cfg create mode 100644 test/SemaCXX/PR19955.cpp create mode 100644 test/SemaCXX/PR20110.cpp create mode 100644 test/SemaCXX/atomic-type.cpp delete mode 100644 test/SemaCXX/atomic-type.cxx create mode 100644 test/SemaCXX/attr-flatten.cpp create mode 100644 test/SemaCXX/attr-no-split-stack.cpp create mode 100644 test/SemaCXX/attr-optnone.cpp create mode 100644 test/SemaCXX/bool-compare.cpp create mode 100644 test/SemaCXX/cxx-altivec.cpp create mode 100644 test/SemaCXX/cxx0x-initializer-stdinitializerlist-system-header.cpp create mode 100644 test/SemaCXX/cxx11-unused.cpp create mode 100644 test/SemaCXX/cxx1y-generic-lambdas-variadics.cpp create mode 100644 test/SemaCXX/declspec-thread.cpp create mode 100644 test/SemaCXX/dllexport.cpp create mode 100644 test/SemaCXX/dllimport.cpp create mode 100644 test/SemaCXX/enable_if.cpp create mode 100644 test/SemaCXX/funcdname.cpp create mode 100644 test/SemaCXX/microsoft-dtor-lookup-cxx11.cpp create mode 100644 test/SemaCXX/microsoft-varargs-diagnostics.cpp create mode 100644 test/SemaCXX/microsoft-varargs.cpp create mode 100644 test/SemaCXX/ms-friend-lookup.cpp create mode 100644 test/SemaCXX/ms_integer_suffix.cpp create mode 100644 test/SemaCXX/new-null.cpp create mode 100644 test/SemaCXX/nonnull.cpp create mode 100644 test/SemaCXX/ns_returns_retained_block_return.cpp create mode 100644 test/SemaCXX/old-style-cast.cpp create mode 100644 test/SemaCXX/pr18284-crash-on-invalid.cpp create mode 100644 test/SemaCXX/pr9812.c create mode 100644 test/SemaCXX/pr9812.cpp create mode 100644 test/SemaCXX/pragma-init_seg.cpp create mode 100644 test/SemaCXX/pragma-optimize.cpp create mode 100644 test/SemaCXX/pragma-vtordisp.cpp create mode 100644 test/SemaCXX/switch-implicit-fallthrough-blocks.cpp create mode 100644 test/SemaCXX/template-implicit-vars.cpp create mode 100644 test/SemaCXX/vararg-class.cpp create mode 100644 test/SemaCXX/vtordisp-mode.cpp create mode 100644 test/SemaCXX/warn-absolute-value-header.cpp create mode 100644 test/SemaCXX/warn-absolute-value.cpp create mode 100644 test/SemaCXX/warn-address.cpp create mode 100644 test/SemaCXX/warn-float-conversion.cpp delete mode 100644 test/SemaCXX/warn-func-as-bool.cpp create mode 100644 test/SemaCXX/warn-infinite-recursion.cpp create mode 100644 test/SemaCXX/warn-memsize-comparison.cpp create mode 100644 test/SemaCXX/warn-sysheader-macro.cpp create mode 100644 test/SemaCXX/warn-tautological-compare.cpp create mode 100644 test/SemaCXX/warn-tautological-undefined-compare.cpp create mode 100644 test/SemaCXX/warn-undefined-bool-conversion.cpp create mode 100644 test/SemaCXX/warn-unused-label-error.cpp create mode 100644 test/SemaCXX/windows-arm-valist.cpp create mode 100644 test/SemaObjC/arc-objcbridge-related-attribute.m create mode 100644 test/SemaObjC/attr-designated-init.m delete mode 100644 test/SemaObjC/attr-ns-bridged.m create mode 100644 test/SemaObjC/check-objcbridge-related-attribute-lookup.m delete mode 100644 test/SemaObjC/cocoa.m create mode 100644 test/SemaObjC/deprecate_function_containers.m create mode 100644 test/SemaObjC/encode-typeof-test.m create mode 100644 test/SemaObjC/ns_returns_retained_block_return.m create mode 100644 test/SemaObjC/objc-asm-attribute-neg-test.m create mode 100644 test/SemaObjC/objc-container-subscripting-attr.m create mode 100644 test/SemaObjC/objc-mixed-bridge-attribute.m create mode 100644 test/SemaObjC/objcbridge-attribute-arc.m create mode 100644 test/SemaObjC/objcbridge-related-attribute.m create mode 100644 test/SemaObjC/objcbridgemutable-attribute.m create mode 100644 test/SemaObjC/opaque-is-access-warn.m create mode 100644 test/SemaObjC/opaque-is-access.m create mode 100644 test/SemaObjC/protocols-suppress-conformance.m create mode 100644 test/SemaObjC/selector-4.m delete mode 100644 test/SemaObjC/unsued-backing-ivar-warning.m create mode 100644 test/SemaObjC/unused-backing-ivar-warning.m create mode 100644 test/SemaObjC/warn-thread-safety-analysis.m create mode 100644 test/SemaObjCXX/instantiate-property-access.mm create mode 100644 test/SemaObjCXX/lit.local.cfg create mode 100644 test/SemaObjCXX/objcbridge-attribute-arc.mm create mode 100644 test/SemaObjCXX/objcbridge-attribute.mm create mode 100644 test/SemaObjCXX/objcbridge-related-attribute.mm create mode 100644 test/SemaObjCXX/objcbridge-static-cast.mm create mode 100644 test/SemaObjCXX/old-style-cast.mm create mode 100644 test/SemaObjCXX/property-invalid-type.mm create mode 100644 test/SemaObjCXX/warn-objc-literal-conversion.mm create mode 100644 test/SemaOpenCL/array-parameters.cl create mode 100644 test/SemaOpenCL/extern.cl create mode 100644 test/SemaOpenCL/func_ptr.cl create mode 100644 test/SemaOpenCL/invalid-constant.cl create mode 100644 test/SemaOpenCL/lit.local.cfg create mode 100644 test/SemaOpenCL/sizeof.cl create mode 100644 test/SemaTemplate/instantiate-var-template.cpp create mode 100644 test/SemaTemplate/ms-class-specialization-duplicate.cpp create mode 100644 test/SemaTemplate/ms-delayed-default-template-args.cpp create mode 100644 test/SemaTemplate/ms-sizeof-missing-typename.cpp create mode 100644 test/SemaTemplate/pack-deduction.cpp create mode 100644 test/Tooling/lit.local.cfg create mode 100644 test/VFS/Inputs/Foo.framework/Headers/Foo.h create mode 100644 test/VFS/Inputs/Foo.framework/Modules/module.modulemap create mode 100644 test/VFS/Inputs/Foo.h create mode 100644 test/VFS/Inputs/Incomplete.h create mode 100644 test/VFS/Inputs/IncompleteVFS.h create mode 100644 test/VFS/Inputs/actual_header.h create mode 100644 test/VFS/Inputs/actual_module.map create mode 100644 test/VFS/Inputs/actual_module2.map create mode 100644 test/VFS/Inputs/external-names.h create mode 100644 test/VFS/Inputs/import_some_frame.h create mode 100644 test/VFS/Inputs/include_real.h create mode 100644 test/VFS/Inputs/incomplete-umbrella.modulemap create mode 100644 test/VFS/Inputs/invalid-yaml.yaml create mode 100644 test/VFS/Inputs/missing-key.yaml create mode 100644 test/VFS/Inputs/public_header.h create mode 100644 test/VFS/Inputs/public_header2.h create mode 100644 test/VFS/Inputs/some_frame_module.map create mode 100644 test/VFS/Inputs/unknown-key.yaml create mode 100644 test/VFS/Inputs/unknown-value.yaml create mode 100644 test/VFS/Inputs/use-external-names.yaml create mode 100644 test/VFS/Inputs/vfsoverlay.yaml create mode 100644 test/VFS/Inputs/vfsoverlay2.yaml create mode 100644 test/VFS/external-names.c create mode 100644 test/VFS/framework-import.m create mode 100644 test/VFS/implicit-include.c create mode 100644 test/VFS/include-mixed-real-and-virtual.c create mode 100644 test/VFS/include-real-from-virtual.c create mode 100644 test/VFS/include-virtual-from-real.c create mode 100644 test/VFS/include.c create mode 100644 test/VFS/incomplete-umbrella.m create mode 100644 test/VFS/module-import.m create mode 100644 test/VFS/parse-errors.c create mode 100644 test/VFS/real-path-found-first.m create mode 100644 test/VFS/relative-path.c create mode 100644 test/VFS/umbrella-mismatch.m (limited to 'test') diff --git a/test/ARCMT/GC-check-warn-nsalloc.m b/test/ARCMT/GC-check-warn-nsalloc.m index 5ce36c40d659..44ccc95e3f7c 100644 --- a/test/ARCMT/GC-check-warn-nsalloc.m +++ b/test/ARCMT/GC-check-warn-nsalloc.m @@ -1,12 +1,11 @@ -// RUN: %clang_cc1 -arcmt-check -verify -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only %s -// RUN: %clang_cc1 -arcmt-check -verify -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only -x objective-c++ %s -// DISABLE: mingw32 +// RUN: %clang_cc1 -arcmt-check -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only %s 2>&1 | grep 'warning: \[rewriter\] call returns pointer to GC managed memory' +// RUN: %clang_cc1 -arcmt-check -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only -x objective-c++ %s 2>&1 | grep 'warning: \[rewriter\] call returns pointer to GC managed memory' +// TODO: Investigate VerifyDiagnosticConsumer failures on these tests when using -verify. // rdar://10532541 -// XFAIL: * typedef unsigned NSUInteger; void *__strong NSAllocateCollectable(NSUInteger size, NSUInteger options); void test1() { - NSAllocateCollectable(100, 0); // expected-warning {{call returns pointer to GC managed memory; it will become unmanaged in ARC}} + NSAllocateCollectable(100, 0); } diff --git a/test/ARCMT/GC-check.m b/test/ARCMT/GC-check.m index 3a1b67ce2183..9864354228be 100644 --- a/test/ARCMT/GC-check.m +++ b/test/ARCMT/GC-check.m @@ -1,6 +1,5 @@ // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fobjc-gc-only %s // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fobjc-gc-only -x objective-c++ %s -// DISABLE: mingw32 #define CF_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) typedef unsigned NSUInteger; diff --git a/test/ARCMT/GC-no-arc-runtime.m b/test/ARCMT/GC-no-arc-runtime.m index f0699927eda5..376134e73f21 100644 --- a/test/ARCMT/GC-no-arc-runtime.m +++ b/test/ARCMT/GC-no-arc-runtime.m @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/GC-no-arc-runtime.m.result b/test/ARCMT/GC-no-arc-runtime.m.result index f55ca38070e9..c338bdb2ed47 100644 --- a/test/ARCMT/GC-no-arc-runtime.m.result +++ b/test/ARCMT/GC-no-arc-runtime.m.result @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/GC-no-finalize-removal.m b/test/ARCMT/GC-no-finalize-removal.m index 14e8602446c3..a8db819d90b8 100644 --- a/test/ARCMT/GC-no-finalize-removal.m +++ b/test/ARCMT/GC-no-finalize-removal.m @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/GC-no-finalize-removal.m.result b/test/ARCMT/GC-no-finalize-removal.m.result index ea14873ec353..b563d196ee65 100644 --- a/test/ARCMT/GC-no-finalize-removal.m.result +++ b/test/ARCMT/GC-no-finalize-removal.m.result @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/GC.m b/test/ARCMT/GC.m index eebbaf6854d9..2c9ea9ca3324 100644 --- a/test/ARCMT/GC.m +++ b/test/ARCMT/GC.m @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/GC.m.result b/test/ARCMT/GC.m.result index c2c523f77e99..595ff23a7259 100644 --- a/test/ARCMT/GC.m.result +++ b/test/ARCMT/GC.m.result @@ -3,7 +3,6 @@ // RUN: diff %t %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" #include "GC.h" diff --git a/test/ARCMT/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h b/test/ARCMT/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h new file mode 100644 index 000000000000..f7f9fb66c9e9 --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h @@ -0,0 +1,5 @@ +#ifndef MODULE_SUBFRAMEWORK_H +#define MODULE_SUBFRAMEWORK_H +#__private_macro MODULE_SUBFRAMEWORK_H +char *module_subframework; +#endif diff --git a/test/ARCMT/Inputs/Module.framework/Headers/Buried/Treasure.h b/test/ARCMT/Inputs/Module.framework/Headers/Buried/Treasure.h new file mode 100644 index 000000000000..6e81adcb2b60 --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Headers/Buried/Treasure.h @@ -0,0 +1 @@ +unsigned *Buried_Treasure; diff --git a/test/ARCMT/Inputs/Module.framework/Headers/Module.h b/test/ARCMT/Inputs/Module.framework/Headers/Module.h new file mode 100644 index 000000000000..3d2476b20431 --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Headers/Module.h @@ -0,0 +1,28 @@ +// expected-warning 0-1 {{umbrella header}} + +// FIXME: The "umbrella header" warning should be moved to a separate test. +// This "0-1" is only here because the warning is only emitted when the +// module is (otherwise) successfully included. + +#ifndef MODULE_H +#define MODULE_H +const char *getModuleVersion(void); + +#ifdef FOO +# error Module should have been built without -DFOO +#endif + +@interface Module ++(const char *)version; // retrieve module version ++alloc; +@end + +#define MODULE_H_MACRO 1 +#__private_macro MODULE_H_MACRO + +#include +#include + +__asm("foo"); + +#endif // MODULE_H diff --git a/test/ARCMT/Inputs/Module.framework/Headers/NotInModule.h b/test/ARCMT/Inputs/Module.framework/Headers/NotInModule.h new file mode 100644 index 000000000000..6b15791eb2c7 --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Headers/NotInModule.h @@ -0,0 +1 @@ +int not_in_module; diff --git a/test/ARCMT/Inputs/Module.framework/Headers/Sub.h b/test/ARCMT/Inputs/Module.framework/Headers/Sub.h new file mode 100644 index 000000000000..dea76e764617 --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Headers/Sub.h @@ -0,0 +1,3 @@ +#include +int *Module_Sub; + diff --git a/test/ARCMT/Inputs/Module.framework/Headers/Sub2.h b/test/ARCMT/Inputs/Module.framework/Headers/Sub2.h new file mode 100644 index 000000000000..beed4a862dca --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/Headers/Sub2.h @@ -0,0 +1 @@ +int *Module_Sub2; diff --git a/test/ARCMT/Inputs/Module.framework/Module b/test/ARCMT/Inputs/Module.framework/Module new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/ARCMT/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h b/test/ARCMT/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h new file mode 100644 index 000000000000..0782336df9de --- /dev/null +++ b/test/ARCMT/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h @@ -0,0 +1 @@ +int module_private; diff --git a/test/ARCMT/Inputs/module.map b/test/ARCMT/Inputs/module.map new file mode 100644 index 000000000000..061abbd24d57 --- /dev/null +++ b/test/ARCMT/Inputs/module.map @@ -0,0 +1,309 @@ +module c_library [extern_c] { module inner { header "c-header.h" } } +module cxx_library { header "cxx-header.h" requires cplusplus } +module c_library_bad [extern_c] { header "c-header-bad.h" } +module diamond_top { header "diamond_top.h" } +module diamond_left { + header "diamond_left.h" + export diamond_top +} +module diamond_right { + header "diamond_right.h" + export diamond_top +} +module diamond_bottom { + header "diamond_bottom.h" + export * +} +module irgen { header "irgen.h" } +module cxx_irgen_top { header "cxx-irgen-top.h" } +module cxx_irgen_left { header "cxx-irgen-left.h" } +module cxx_irgen_right { header "cxx-irgen-right.h" } +module lookup_left_objc { header "lookup_left.h" } +module lookup_right_objc { header "lookup_right.h" } +module lookup_left_cxx { header "lookup_left.hpp" } +module lookup_right_cxx { header "lookup_right.hpp" } +module module_private_left { header "module_private_left.h" } +module module_private_right { header "module_private_right.h" } +module macros_top { + header "macros_top.h" + explicit module b { header "macros_top_b.h" } + explicit module c { header "macros_top_c.h" } +} +module macros_left { + header "macros_left.h" + export * +} +module macros_right { + header "macros_right.h" + export * + explicit module undef { + header "macros_right_undef.h" + } +} +module macros { header "macros.h" } +module macros_other { header "macros_other.h" } +module category_top { header "category_top.h" } +module category_left { + header "category_left.h" + export category_top + + explicit module sub { + header "category_left_sub.h" + } +} +module category_right { + header "category_right.h" + export category_top + + explicit module sub { + header "category_right_sub.h" + } +} +module category_bottom { + header "category_bottom.h" + export category_left + export category_right +} +module category_other { header "category_other.h" } +module redeclarations_left { header "redeclarations_left.h" } +module redeclarations_right { header "redeclarations_right.h" } +module redecl_namespaces_left { header "redecl_namespaces_left.h" } +module redecl_namespaces_right { header "redecl_namespaces_right.h" } +module redecl_add_after_load_top { header "redecl-add-after-load-top.h" } +module redecl_add_after_load { header "redecl-add-after-load.h" } +module load_failure { header "load_failure.h" } + +module decldef { + explicit module Decl { header "decl.h" } + explicit module Decl2 { header "decl2.h" } + explicit module Def { header "def.h" } +} + +module redecl_merge_top { + header "redecl-merge-top.h" + explicit module Explicit { header "redecl-merge-top-explicit.h" } + exclude header "nonexistent.h" +} +module redecl_merge_left { + header "redecl-merge-left.h" + export * +} +module redecl_merge_left_left { + header "redecl-merge-left-left.h" + export * +} +module redecl_merge_right { + header "redecl-merge-right.h" + export * +} +module redecl_merge_bottom { + explicit module prefix { + header "redecl-merge-bottom-prefix.h" + } + + header "redecl-merge-bottom.h" + export * +} +module namespaces_top { + header "namespaces-top.h" + export * +} +module namespaces_left { + header "namespaces-left.h" + export * +} +module namespaces_right { + header "namespaces-right.h" + export * +} +module templates_top { + header "templates-top.h" + export * +} +module templates_left { + header "templates-left.h" + export * +} +module templates_right { + header "templates-right.h" + export * +} +module MethodPoolA { + header "MethodPoolA.h" + + explicit module Sub2 { + header "MethodPoolASub2.h" + } + + explicit module Sub { + header "MethodPoolASub.h" + } +} +module MethodPoolB { + header "MethodPoolB.h" + + explicit module Sub2 { + header "MethodPoolBSub2.h" + } + + explicit module Sub { + header "MethodPoolBSub.h" + } +} +module import_decl { + header "import-decl.h" +} + +framework module * { + exclude NotAModule +} + +module linkage_merge_left { + explicit module sub { + header "linkage-merge-sub.h" + } +} + +module autolink { + header "autolink.h" + link "autolink" + + explicit module sub { + header "autolink-sub.h" + link "autolink_sub" + } + + explicit module sub2 { + header "autolink-sub2.h" + link framework "autolink_framework" + } + + explicit module sub3 { + header "autolink-sub3.h" + link "autolink_from_pch" + } +} + +module weird_objc { + header "weird_objc.h" +} + +module ignored_macros { + header "ignored_macros.h" +} + +module cxx_many_overloads { + header "cxx-many-overloads.h" +} + +module cxx_inline_namespace { + header "cxx-inline-namespace.h" +} + +module cxx_inline_namespace_b { + header "cxx-inline-namespace-b.h" +} + +module cxx_linkage_cache { + header "cxx-linkage-cache.h" +} + +module cxx_templates_common { + header "cxx-templates-common.h" +} + +module cxx_templates_a { + header "cxx-templates-a.h" +} + +module cxx_templates_b_impl { + header "cxx-templates-b-impl.h" +} + +module cxx_templates_b { + header "cxx-templates-b.h" +} + +module cxx_templates_c { + header "cxx-templates-c.h" +} + +module cxx_decls { + module unimported { + header "cxx-decls-unimported.h" + } + module imported { + header "cxx-decls-imported.h" + } +} + +module config { + header "config.h" + config_macros [exhaustive] WANT_FOO, WANT_BAR +} + +module diag_pragma { + header "diag_pragma.h" +} + +module dummy { + header "dummy.h" +} + +module builtin { + header "builtin.h" + explicit module sub { + header "builtin_sub.h" + } +} + +module linkage_merge { + explicit module foo { + header "linkage-merge-foo.h" + } + explicit module bar { + header "linkage-merge-bar.h" + } + +} + +module incomplete_mod { + header "incomplete_mod.h" +} + +module warning { + header "warning.h" +} + +module initializer_list { + header "initializer_list" +} + +module using_decl { + module a { header "using-decl-a.h" export * } + module b { header "using-decl-b.h" export * } +} + +module recursive_visibility_a1 { + module inner { header "recursive_visibility_a1_inner.h" } +} +module recursive_visibility_a2 { + module inner { + module more_inner { + header "recursive_visibility_a2_more_inner.h" + } + } +} +module recursive_visibility_b { + header "recursive_visibility_b.h" + export * +} +module recursive_visibility_c { + header "recursive_visibility_c.h" +} +module recursive1 { + header "recursive1.h" +} +module recursive2 { + header "recursive2.h" +} diff --git a/test/ARCMT/api.m b/test/ARCMT/api.m index ba122c42bff3..b186ec724745 100644 --- a/test/ARCMT/api.m +++ b/test/ARCMT/api.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/api.m.result b/test/ARCMT/api.m.result index 7e04e7dc0c88..e3093751b626 100644 --- a/test/ARCMT/api.m.result +++ b/test/ARCMT/api.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/assign-prop-with-arc-runtime.m b/test/ARCMT/assign-prop-with-arc-runtime.m index c357eeb17177..a00538cd6197 100644 --- a/test/ARCMT/assign-prop-with-arc-runtime.m +++ b/test/ARCMT/assign-prop-with-arc-runtime.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/assign-prop-with-arc-runtime.m.result b/test/ARCMT/assign-prop-with-arc-runtime.m.result index a255a36f2494..8bb684f79a33 100644 --- a/test/ARCMT/assign-prop-with-arc-runtime.m.result +++ b/test/ARCMT/assign-prop-with-arc-runtime.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/atautorelease-2.m b/test/ARCMT/atautorelease-2.m index 5c2cd6b922fd..b9bc10655325 100644 --- a/test/ARCMT/atautorelease-2.m +++ b/test/ARCMT/atautorelease-2.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface NSAutoreleasePool - drain; diff --git a/test/ARCMT/atautorelease-2.m.result b/test/ARCMT/atautorelease-2.m.result index 06bf0d51e4bb..205473380b73 100644 --- a/test/ARCMT/atautorelease-2.m.result +++ b/test/ARCMT/atautorelease-2.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface NSAutoreleasePool - drain; diff --git a/test/ARCMT/atautorelease-3.m b/test/ARCMT/atautorelease-3.m index 0b6abdf83c46..87b80af9350e 100644 --- a/test/ARCMT/atautorelease-3.m +++ b/test/ARCMT/atautorelease-3.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface NSAutoreleasePool - drain; diff --git a/test/ARCMT/atautorelease-3.m.result b/test/ARCMT/atautorelease-3.m.result index 9103de4167ef..801376a7e82b 100644 --- a/test/ARCMT/atautorelease-3.m.result +++ b/test/ARCMT/atautorelease-3.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface NSAutoreleasePool - drain; diff --git a/test/ARCMT/atautorelease-check.m b/test/ARCMT/atautorelease-check.m index 8daf9d6bdeed..d74ef3b61d1f 100644 --- a/test/ARCMT/atautorelease-check.m +++ b/test/ARCMT/atautorelease-check.m @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 %s -// DISABLE: mingw32 #if __has_feature(objc_arr) #define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) diff --git a/test/ARCMT/atautorelease.m b/test/ARCMT/atautorelease.m index 132553bdd331..a6aed146497b 100644 --- a/test/ARCMT/atautorelease.m +++ b/test/ARCMT/atautorelease.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/atautorelease.m.result b/test/ARCMT/atautorelease.m.result index 5191f4738eb8..e24339a3b9e3 100644 --- a/test/ARCMT/atautorelease.m.result +++ b/test/ARCMT/atautorelease.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/autoreleases.m b/test/ARCMT/autoreleases.m index 543bcf6632af..91413e51ca66 100644 --- a/test/ARCMT/autoreleases.m +++ b/test/ARCMT/autoreleases.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/autoreleases.m.result b/test/ARCMT/autoreleases.m.result index 9b71ff8b8945..32c7ad3c3971 100644 --- a/test/ARCMT/autoreleases.m.result +++ b/test/ARCMT/autoreleases.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/check-with-pch.m b/test/ARCMT/check-with-pch.m index 786700292ad0..1a94dda796b9 100644 --- a/test/ARCMT/check-with-pch.m +++ b/test/ARCMT/check-with-pch.m @@ -1,6 +1,5 @@ // RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 %S/Common.h -emit-pch -o %t.pch // RUN: %clang_cc1 -include-pch %t.pch -arcmt-check -verify -triple x86_64-apple-darwin10 -fblocks -Werror %s -// DISABLE: mingw32 // rdar://9601437 @interface I9601437 { diff --git a/test/ARCMT/checking-in-arc.m b/test/ARCMT/checking-in-arc.m index 40d9b1684576..d41a162289b2 100644 --- a/test/ARCMT/checking-in-arc.m +++ b/test/ARCMT/checking-in-arc.m @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -fobjc-arc -fobjc-runtime=macosx-10.8.0 -triple x86_64-apple-darwin12 -fblocks -Werror %s -// DISABLE: mingw32 #if __has_feature(objc_arc) #define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) diff --git a/test/ARCMT/checking.m b/test/ARCMT/checking.m index a550633171d1..7815103822a1 100644 --- a/test/ARCMT/checking.m +++ b/test/ARCMT/checking.m @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fblocks -Werror %s -// DISABLE: mingw32 #if __has_feature(objc_arc) #define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) @@ -45,9 +44,9 @@ struct UnsafeS { }; @interface A : NSObject -- (id)retain; // expected-note {{declaration has been explicitly marked unavailable here}} -- (id)retainCount; // expected-note {{declaration has been explicitly marked unavailable here}} -- (id)autorelease; // expected-note 2 {{declaration has been explicitly marked unavailable here}} +- (id)retain; // expected-note {{'retain' has been explicitly marked unavailable here}} +- (id)retainCount; // expected-note {{'retainCount' has been explicitly marked unavailable here}} +- (id)autorelease; // expected-note 2 {{'autorelease' has been explicitly marked unavailable here}} - (id)init; - (oneway void)release; - (void)dealloc; diff --git a/test/ARCMT/cxx-checking.mm b/test/ARCMT/cxx-checking.mm index 2f5d5d51655a..aa3bc466f672 100644 --- a/test/ARCMT/cxx-checking.mm +++ b/test/ARCMT/cxx-checking.mm @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fsyntax-only -fblocks %s -// DISABLE: mingw32 // Classes that have an Objective-C object pointer. struct HasObjectMember0 { @@ -81,7 +80,7 @@ int check_non_pod_block1[__is_pod(int (^ __unsafe_unretained)(int))? 1 : -1]; struct FlexibleArrayMember0 { int length; - id array[]; // expected-error{{flexible array member 'array' of non-POD element type 'id __strong[]'}} + id array[]; // expected-error{{flexible array member 'array' of type 'id __strong[]' with non-trivial destruction}} }; struct FlexibleArrayMember1 { diff --git a/test/ARCMT/cxx-rewrite.mm b/test/ARCMT/cxx-rewrite.mm index 92bb71807d00..4a9c50c92426 100644 --- a/test/ARCMT/cxx-rewrite.mm +++ b/test/ARCMT/cxx-rewrite.mm @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/cxx-rewrite.mm.result b/test/ARCMT/cxx-rewrite.mm.result index 7c944d5f240a..a96d254bf463 100644 --- a/test/ARCMT/cxx-rewrite.mm.result +++ b/test/ARCMT/cxx-rewrite.mm.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/dealloc.m b/test/ARCMT/dealloc.m index 34df1a49b693..d7a72af4f726 100644 --- a/test/ARCMT/dealloc.m +++ b/test/ARCMT/dealloc.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface A - (id)retain; diff --git a/test/ARCMT/dealloc.m.result b/test/ARCMT/dealloc.m.result index 3ff2885341c4..fbd9e445d275 100644 --- a/test/ARCMT/dealloc.m.result +++ b/test/ARCMT/dealloc.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 @interface A - (id)retain; diff --git a/test/ARCMT/designated-init-in-header/designated-init-in-header.m b/test/ARCMT/designated-init-in-header/designated-init-in-header.m new file mode 100644 index 000000000000..8286583b3c89 --- /dev/null +++ b/test/ARCMT/designated-init-in-header/designated-init-in-header.m @@ -0,0 +1,3 @@ +// RUN: %clang_cc1 -objcmt-migrate-designated-init -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype -x objective-c %S/file1.m.in -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t1.remap +// RUN: %clang_cc1 -objcmt-migrate-designated-init -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype -x objective-c %S/file2.m.in -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t2.remap +// RUN: c-arcmt-test %t1.remap %t2.remap | arcmt-test -verify-transformed-files %S/header1.h.result %S/file2.m.in.result diff --git a/test/ARCMT/designated-init-in-header/file1.m.in b/test/ARCMT/designated-init-in-header/file1.m.in new file mode 100644 index 000000000000..0201b32abd32 --- /dev/null +++ b/test/ARCMT/designated-init-in-header/file1.m.in @@ -0,0 +1,2 @@ +#include "header1.h" + diff --git a/test/ARCMT/designated-init-in-header/file2.m.in b/test/ARCMT/designated-init-in-header/file2.m.in new file mode 100644 index 000000000000..258159735a77 --- /dev/null +++ b/test/ARCMT/designated-init-in-header/file2.m.in @@ -0,0 +1,14 @@ +#include "header1.h" + +@implementation S1 +-(int)prop { return 0; } +-(void)setProp:(int)p {} ++(id)s1 { return 0; } +-(id)initWithFoo:(NSString*)foo +{ + self = [super init]; + if (self) { + } + return self; +} +@end diff --git a/test/ARCMT/designated-init-in-header/file2.m.in.result b/test/ARCMT/designated-init-in-header/file2.m.in.result new file mode 100644 index 000000000000..7465ed576f5f --- /dev/null +++ b/test/ARCMT/designated-init-in-header/file2.m.in.result @@ -0,0 +1,14 @@ +#include "header1.h" + +@implementation S1 +-(int)prop { return 0; } +-(void)setProp:(int)p {} ++(instancetype)s1 { return 0; } +-(instancetype)initWithFoo:(NSString*)foo +{ + self = [super init]; + if (self) { + } + return self; +} +@end diff --git a/test/ARCMT/designated-init-in-header/header1.h b/test/ARCMT/designated-init-in-header/header1.h new file mode 100644 index 000000000000..c5668cc46086 --- /dev/null +++ b/test/ARCMT/designated-init-in-header/header1.h @@ -0,0 +1,14 @@ +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) + +@class NSString; + +@interface B1 +-(id)init; +@end + +@interface S1 : B1 +-(int)prop; +-(void)setProp:(int)p; ++(id)s1; +-(id)initWithFoo:(NSString*)foo; +@end diff --git a/test/ARCMT/designated-init-in-header/header1.h.result b/test/ARCMT/designated-init-in-header/header1.h.result new file mode 100644 index 000000000000..974175b1c3e6 --- /dev/null +++ b/test/ARCMT/designated-init-in-header/header1.h.result @@ -0,0 +1,13 @@ +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) + +@class NSString; + +@interface B1 +-(instancetype)init; +@end + +@interface S1 : B1 +@property (nonatomic) int prop; ++(instancetype)s1; +-(instancetype)initWithFoo:(NSString*)foo NS_DESIGNATED_INITIALIZER; +@end diff --git a/test/ARCMT/init.m b/test/ARCMT/init.m index 9dbb1f82b828..b1f127e54fd1 100644 --- a/test/ARCMT/init.m +++ b/test/ARCMT/init.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #define nil (void *)0 diff --git a/test/ARCMT/init.m.result b/test/ARCMT/init.m.result index d7f730083aab..d550dedb1dc1 100644 --- a/test/ARCMT/init.m.result +++ b/test/ARCMT/init.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #define nil (void *)0 diff --git a/test/ARCMT/migrate-on-pch-and-module.m b/test/ARCMT/migrate-on-pch-and-module.m new file mode 100644 index 000000000000..c98ce467f6c7 --- /dev/null +++ b/test/ARCMT/migrate-on-pch-and-module.m @@ -0,0 +1,12 @@ +// RUN: rm -rf %t-mcp +// RUN: %clang_cc1 -objcmt-migrate-subscripting -emit-pch -o %t.pch %s -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -F %S/Inputs -fmodules -fmodules-cache-path=%t-mcp -w +// RUN: %clang_cc1 -objcmt-migrate-subscripting -include-pch %t.pch %s -migrate -o %t.remap -isysroot %S/Inputs/System -triple x86_64-apple-darwin10 -F %S/Inputs -fmodules -fmodules-cache-path=%t-mcp + +#ifndef HEADER +#define HEADER + +@import Module; + +#else + +#endif diff --git a/test/ARCMT/migrate-plist-output.m b/test/ARCMT/migrate-plist-output.m index 377dce30cafc..9b47b91d5809 100644 --- a/test/ARCMT/migrate-plist-output.m +++ b/test/ARCMT/migrate-plist-output.m @@ -49,4 +49,3 @@ void test(id p) { // CHECK: // CHECK: -// DISABLE: mingw32 diff --git a/test/ARCMT/migrate-space-in-path.m b/test/ARCMT/migrate-space-in-path.m index 89dfe1475cfe..a797e6d1f482 100644 --- a/test/ARCMT/migrate-space-in-path.m +++ b/test/ARCMT/migrate-space-in-path.m @@ -3,4 +3,3 @@ // RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t.migrate %S/"with space"/test2.m.in -x objective-c // RUN: c-arcmt-test -mt-migrate-directory %t.migrate | arcmt-test -verify-transformed-files %S/"with space"/test1.m.in.result %S/"with space"/test2.m.in.result %S/"with space"/test.h.result // RUN: rm -rf %t.migrate -// DISABLE: mingw32 diff --git a/test/ARCMT/migrate-with-pch.m b/test/ARCMT/migrate-with-pch.m index 7dca8be48844..1aafbdaf9b1e 100644 --- a/test/ARCMT/migrate-with-pch.m +++ b/test/ARCMT/migrate-with-pch.m @@ -4,4 +4,3 @@ // RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test2.m.in -x objective-c -include-pch %t.pch // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %S/Inputs/test1.m.in.result %S/Inputs/test2.m.in.result %S/Inputs/test.h.result // RUN: rm -rf %t -// DISABLE: mingw32 diff --git a/test/ARCMT/migrate.m b/test/ARCMT/migrate.m index 6f41258e59d6..d92cef7eb7cc 100644 --- a/test/ARCMT/migrate.m +++ b/test/ARCMT/migrate.m @@ -3,4 +3,3 @@ // RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test2.m.in -x objective-c // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %S/Inputs/test1.m.in.result %S/Inputs/test2.m.in.result %S/Inputs/test.h.result // RUN: rm -rf %t -// DISABLE: mingw32 diff --git a/test/ARCMT/no-canceling-bridge-to-bridge-cast.m b/test/ARCMT/no-canceling-bridge-to-bridge-cast.m index 81841fbf1e89..2c47822001e5 100644 --- a/test/ARCMT/no-canceling-bridge-to-bridge-cast.m +++ b/test/ARCMT/no-canceling-bridge-to-bridge-cast.m @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -verify %s -// DISABLE: mingw32 // rdar://10387088 typedef const void * CFTypeRef; CFTypeRef CFBridgingRetain(id X); diff --git a/test/ARCMT/nonobjc-to-objc-cast-2.m b/test/ARCMT/nonobjc-to-objc-cast-2.m index e554c7da2d45..2b421b0757ad 100644 --- a/test/ARCMT/nonobjc-to-objc-cast-2.m +++ b/test/ARCMT/nonobjc-to-objc-cast-2.m @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 %s -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/nonobjc-to-objc-cast.m b/test/ARCMT/nonobjc-to-objc-cast.m index 55b6655fa404..b7d2a734b9c4 100644 --- a/test/ARCMT/nonobjc-to-objc-cast.m +++ b/test/ARCMT/nonobjc-to-objc-cast.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/nonobjc-to-objc-cast.m.result b/test/ARCMT/nonobjc-to-objc-cast.m.result index 4f508f6adfb6..ce827ba66aaf 100644 --- a/test/ARCMT/nonobjc-to-objc-cast.m.result +++ b/test/ARCMT/nonobjc-to-objc-cast.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/objcmt-arc-cf-annotations.m b/test/ARCMT/objcmt-arc-cf-annotations.m index 9772825b2934..c9a5b8215d10 100644 --- a/test/ARCMT/objcmt-arc-cf-annotations.m +++ b/test/ARCMT/objcmt-arc-cf-annotations.m @@ -360,7 +360,7 @@ CFAbsoluteTime f2() { NSDate* global_x; -// Test to see if we supresss an error when we store the pointer +// Test to see if we suppress an error when we store the pointer // to a global. CFAbsoluteTime f3() { @@ -528,38 +528,54 @@ void f15() { CFRelease(*B); // no-warning } -// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable. +// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f16(int x, CFTypeRef p) { if (p) return; - if (x > 0) { - CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}} - } - else if (x < 0) { - CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}} - } - else { - CFMakeCollectable(p); // expected-warning{{Null pointer argument in call to CFMakeCollectable}} + switch (x) { + case 0: + CFRelease(p); + break; + case 1: + CFRetain(p); + break; + case 2: + CFMakeCollectable(p); + break; + case 3: + CFAutorelease(p); + break; + default: + break; } } -// Test that an object is non-null after being CFRetained/CFReleased. +// Test that an object is non-null after CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f17(int x, CFTypeRef p) { - if (x > 0) { + switch (x) { + case 0: CFRelease(p); if (!p) CFRelease(0); // no-warning - } - else if (x < 0) { + break; + case 1: CFRetain(p); if (!p) CFRetain(0); // no-warning - } - else { + break; + case 2: CFMakeCollectable(p); if (!p) CFMakeCollectable(0); // no-warning + break; + case 3: + CFAutorelease(p); + if (!p) + CFAutorelease(0); // no-warning + break; + default: + break; } } diff --git a/test/ARCMT/objcmt-arc-cf-annotations.m.result b/test/ARCMT/objcmt-arc-cf-annotations.m.result index 7e0a9042f5e6..84bc43dcb5ca 100644 --- a/test/ARCMT/objcmt-arc-cf-annotations.m.result +++ b/test/ARCMT/objcmt-arc-cf-annotations.m.result @@ -390,7 +390,7 @@ CFAbsoluteTime f2() { NSDate* global_x; -// Test to see if we supresss an error when we store the pointer +// Test to see if we suppress an error when we store the pointer // to a global. CFAbsoluteTime f3() { @@ -570,38 +570,54 @@ void f15() { CFRelease(*B); // no-warning } -// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable. +// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f16(int x, CFTypeRef p) { if (p) return; - if (x > 0) { - CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}} - } - else if (x < 0) { - CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}} - } - else { - CFMakeCollectable(p); // expected-warning{{Null pointer argument in call to CFMakeCollectable}} + switch (x) { + case 0: + CFRelease(p); + break; + case 1: + CFRetain(p); + break; + case 2: + CFMakeCollectable(p); + break; + case 3: + CFAutorelease(p); + break; + default: + break; } } -// Test that an object is non-null after being CFRetained/CFReleased. +// Test that an object is non-null after CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f17(int x, CFTypeRef p) { - if (x > 0) { + switch (x) { + case 0: CFRelease(p); if (!p) CFRelease(0); // no-warning - } - else if (x < 0) { + break; + case 1: CFRetain(p); if (!p) CFRetain(0); // no-warning - } - else { + break; + case 2: CFMakeCollectable(p); if (!p) CFMakeCollectable(0); // no-warning + break; + case 3: + CFAutorelease(p); + if (!p) + CFAutorelease(0); // no-warning + break; + default: + break; } } diff --git a/test/ARCMT/objcmt-atomic-property.m.result b/test/ARCMT/objcmt-atomic-property.m.result index 1650cd23e3bd..3378ff1e487f 100644 --- a/test/ARCMT/objcmt-atomic-property.m.result +++ b/test/ARCMT/objcmt-atomic-property.m.result @@ -23,14 +23,14 @@ typedef char BOOL; } @property (weak) NSString *WeakProp; -@property (retain) NSString *StrongProp; +@property (strong) NSString *StrongProp; -@property (retain) NSString *UnavailProp __attribute__((unavailable)); +@property (strong) NSString *UnavailProp __attribute__((unavailable)); - (void) setUnavailProp : (NSString *)Val; -@property (retain) NSString *UnavailProp1 __attribute__((unavailable)); +@property (strong) NSString *UnavailProp1 __attribute__((unavailable)); -@property (retain) NSString *UnavailProp2; +@property (strong) NSString *UnavailProp2; - (void) setUnavailProp2 : (NSString *)Val __attribute__((unavailable)); @property (copy) NSDictionary *undoAction; @@ -48,10 +48,10 @@ typedef char BOOL; NSArray *_names3; NSArray *_names4; } -@property (retain) NSArray *names2; -@property (retain) NSArray *names3; -@property (retain) NSArray *names4; -@property (retain) NSArray *names1; +@property (strong) NSArray *names2; +@property (strong) NSArray *names3; +@property (strong) NSArray *names4; +@property (strong) NSArray *names1; @end // Properties that contain the name "delegate" or "dataSource", @@ -64,9 +64,9 @@ typedef char BOOL; @property (assign) id xxxdelegateYYY; -@property (retain) id MYtarget; +@property (strong) id MYtarget; -@property (retain) id targetX; +@property (strong) id targetX; @property int value; @@ -80,14 +80,14 @@ typedef char BOOL; - (void) Nothing; @property (readonly) int Length; -@property (readonly, retain) id object; +@property (readonly, strong) id object; + (double) D; @property (readonly) void *JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); @property (getter=isIgnoringInteractionEvents, readonly) BOOL ignoringInteractionEvents; -@property (getter=getStringValue, retain) NSString *stringValue; +@property (getter=getStringValue, strong) NSString *stringValue; @property (getter=getCounterValue, readonly) BOOL counterValue; -@property (getter=getns_dixtionary, readonly, retain) NSDictionary *ns_dixtionary; +@property (getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out @@ -108,9 +108,9 @@ typedef char BOOL; @property (assign) id xxxdelegateYYY; -@property (retain) id MYtarget; +@property (strong) id MYtarget; -@property (retain) id targetX; +@property (strong) id targetX; @property int value; @@ -124,7 +124,7 @@ typedef char BOOL; - (void) Nothing; @property (readonly) int Length; -@property (readonly, retain) id object; +@property (readonly, strong) id object; + (double) D; - (BOOL)is3bar; // watch out @@ -161,26 +161,26 @@ DEPRECATED @interface NSURL // Do not infer a property. -@property (retain) NSURL *appStoreReceiptURL NS_AVAILABLE; +@property (strong) NSURL *appStoreReceiptURL NS_AVAILABLE; - (void) setAppStoreReceiptURL : (NSURL *)object; -@property (retain) NSURL *appStoreReceiptURLX NS_AVAILABLE; +@property (strong) NSURL *appStoreReceiptURLX NS_AVAILABLE; // Do not infer a property. -@property (retain) NSURL *appStoreReceiptURLY ; +@property (strong) NSURL *appStoreReceiptURLY ; - (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; -@property (readonly, retain) id OkToInfer NS_AVAILABLE; +@property (readonly, strong) id OkToInfer NS_AVAILABLE; // Do not infer a property. -@property (retain) NSURL *appStoreReceiptURLZ ; +@property (strong) NSURL *appStoreReceiptURLZ ; - (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; // Do not infer a property. - (id) t1 NORETURN NS_AVAILABLE; - (void) setT1 : (id) arg NS_AVAILABLE; -@property (retain) id method1 ALIGNED NS_AVAILABLE; +@property (strong) id method1 ALIGNED NS_AVAILABLE; - (NSURL *)init; // No Change + (id)alloc; // No Change diff --git a/test/ARCMT/objcmt-deprecated-category.m b/test/ARCMT/objcmt-deprecated-category.m deleted file mode 100644 index 5939e5a50ada..000000000000 --- a/test/ARCMT/objcmt-deprecated-category.m +++ /dev/null @@ -1,48 +0,0 @@ -// RUN: rm -rf %t -// RUN: %clang_cc1 -objcmt-migrate-annotation -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 -// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result -// rdar://15337661 - -#define DEPRECATED __attribute__((deprecated)) - -@interface NSArray -- (int)one; -@end - -@interface NSArray (NSDraggingSourceDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)getObjects:(id __unsafe_unretained [])objects; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; - -@end - -@interface NSArray (NSDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -- (void)getObjects:(id __unsafe_unretained [])objects; -@property int P1; -@property int P2 DEPRECATED; -@end - -@interface NSArray (DraggingSourceDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)getObjects:(id __unsafe_unretained [])objects; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -@property int P1; -@property int P2 DEPRECATED; - -@end - -@interface NSArray (Deprecated) -- (void)getObjects:(id __unsafe_unretained [])objects; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -@property int P1; -@property int P2 DEPRECATED; -@end diff --git a/test/ARCMT/objcmt-deprecated-category.m.result b/test/ARCMT/objcmt-deprecated-category.m.result deleted file mode 100644 index 3cb100044e46..000000000000 --- a/test/ARCMT/objcmt-deprecated-category.m.result +++ /dev/null @@ -1,48 +0,0 @@ -// RUN: rm -rf %t -// RUN: %clang_cc1 -objcmt-migrate-annotation -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 -// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result -// rdar://15337661 - -#define DEPRECATED __attribute__((deprecated)) - -@interface NSArray -- (int)one; -@end - -@interface NSArray (NSDraggingSourceDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)getObjects:(id __unsafe_unretained [])objects DEPRECATED; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; - -@end - -@interface NSArray (NSDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -- (void)getObjects:(id __unsafe_unretained [])objects DEPRECATED; -@property int P1 DEPRECATED; -@property int P2 DEPRECATED; -@end - -@interface NSArray (DraggingSourceDeprecated) - -/* This method is unsafe because it could potentially cause buffer overruns. You should use -getObjects:range: instead. -*/ -- (void)getObjects:(id __unsafe_unretained [])objects DEPRECATED; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -@property int P1 DEPRECATED; -@property int P2 DEPRECATED; - -@end - -@interface NSArray (Deprecated) -- (void)getObjects:(id __unsafe_unretained [])objects DEPRECATED; -- (void)dep_getObjects:(id __unsafe_unretained [])dep_objects DEPRECATED; -@property int P1 DEPRECATED; -@property int P2 DEPRECATED; -@end diff --git a/test/ARCMT/objcmt-designated-initializer.m b/test/ARCMT/objcmt-designated-initializer.m new file mode 100644 index 000000000000..279d4f35d8eb --- /dev/null +++ b/test/ARCMT/objcmt-designated-initializer.m @@ -0,0 +1,44 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -objcmt-migrate-designated-init %s -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result +// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -x objective-c -fobjc-arc %s.result + +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) + +@class NSString; + +@interface B1 +-(id)init; +@end + +@interface S1 : B1 +-(id)initWithFoo:(NSString*)foo; +@end + +@implementation S1 +-(id)initWithFoo:(NSString*)foo +{ + self = [super init]; + if (self) { + } + return self; +} +@end + +@interface B2 +-(id)init NS_DESIGNATED_INITIALIZER; +@end + +@interface S2 : B2 +-(id)init; +@end + +@implementation S2 +-(id)init +{ + self = [super init]; + if (self) { + } + return self; +} +@end diff --git a/test/ARCMT/objcmt-designated-initializer.m.result b/test/ARCMT/objcmt-designated-initializer.m.result new file mode 100644 index 000000000000..4c59b0cc5826 --- /dev/null +++ b/test/ARCMT/objcmt-designated-initializer.m.result @@ -0,0 +1,44 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -objcmt-migrate-designated-init %s -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result +// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -x objective-c -fobjc-arc %s.result + +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) + +@class NSString; + +@interface B1 +-(id)init; +@end + +@interface S1 : B1 +-(id)initWithFoo:(NSString*)foo NS_DESIGNATED_INITIALIZER; +@end + +@implementation S1 +-(id)initWithFoo:(NSString*)foo +{ + self = [super init]; + if (self) { + } + return self; +} +@end + +@interface B2 +-(id)init NS_DESIGNATED_INITIALIZER; +@end + +@interface S2 : B2 +-(id)init; +@end + +@implementation S2 +-(id)init +{ + self = [super init]; + if (self) { + } + return self; +} +@end diff --git a/test/ARCMT/objcmt-instancetype-2.m.result b/test/ARCMT/objcmt-instancetype-2.m.result index 8837e971ad27..7a32894f5706 100644 --- a/test/ARCMT/objcmt-instancetype-2.m.result +++ b/test/ARCMT/objcmt-instancetype-2.m.result @@ -16,10 +16,10 @@ typedef char BOOL; @class NSString, NSURL; @interface NSString (NSStringDeprecated) -+ (instancetype)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macosx,introduced=10.0 ,message="" ))); -+ (instancetype)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macosx,introduced=10.0 ,message="" ))); -+ (instancetype)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macosx,introduced=10.0 ,message="" ))); -+ (instancetype)stringWithCString:(const char *)bytes __attribute__((availability(macosx,introduced=10.0 ,message="" ))); ++ (id)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macosx,introduced=10.0 ,message="" ))); ++ (id)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macosx,introduced=10.0 ,message="" ))); ++ (id)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macosx,introduced=10.0 ,message="" ))); ++ (id)stringWithCString:(const char *)bytes __attribute__((availability(macosx,introduced=10.0 ,message="" ))); @end diff --git a/test/ARCMT/objcmt-instancetype-unnecessary-diff.m b/test/ARCMT/objcmt-instancetype-unnecessary-diff.m new file mode 100644 index 000000000000..e250bb0956c0 --- /dev/null +++ b/test/ARCMT/objcmt-instancetype-unnecessary-diff.m @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -objcmt-migrate-instancetype %s -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t.remap +// RUN: FileCheck %s -input-file=%t.remap + +// Make sure we don't create an edit unnecessarily. +// CHECK-NOT: instancetype + +@class NSString; +@interface NSDictionary ++(instancetype) dictionaryWithURLEncodedString:(NSString *)urlEncodedString; +@end diff --git a/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result b/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result index 804142ee3280..8e9e3a0c21ca 100644 --- a/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result +++ b/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result @@ -30,14 +30,14 @@ typedef char BOOL; } @property (NS_NONATOMIC_IOSONLY, weak) NSString *WeakProp; -@property (NS_NONATOMIC_IOSONLY, retain) NSString *StrongProp; +@property (NS_NONATOMIC_IOSONLY, strong) NSString *StrongProp; -@property (NS_NONATOMIC_IOSONLY, retain) NSString *UnavailProp __attribute__((unavailable)); +@property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp __attribute__((unavailable)); - (void) setUnavailProp : (NSString *)Val; -@property (NS_NONATOMIC_IOSONLY, retain) NSString *UnavailProp1 __attribute__((unavailable)); +@property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp1 __attribute__((unavailable)); -@property (NS_NONATOMIC_IOSONLY, retain) NSString *UnavailProp2; +@property (NS_NONATOMIC_IOSONLY, strong) NSString *UnavailProp2; - (void) setUnavailProp2 : (NSString *)Val __attribute__((unavailable)); @property (NS_NONATOMIC_IOSONLY, copy) NSDictionary *undoAction; @@ -55,10 +55,10 @@ typedef char BOOL; NSArray *_names3; NSArray *_names4; } -@property (NS_NONATOMIC_IOSONLY, retain) NSArray *names2; -@property (NS_NONATOMIC_IOSONLY, retain) NSArray *names3; -@property (NS_NONATOMIC_IOSONLY, retain) NSArray *names4; -@property (NS_NONATOMIC_IOSONLY, retain) NSArray *names1; +@property (NS_NONATOMIC_IOSONLY, strong) NSArray *names2; +@property (NS_NONATOMIC_IOSONLY, strong) NSArray *names3; +@property (NS_NONATOMIC_IOSONLY, strong) NSArray *names4; +@property (NS_NONATOMIC_IOSONLY, strong) NSArray *names1; @end // Properties that contain the name "delegate" or "dataSource", @@ -71,9 +71,9 @@ typedef char BOOL; @property (NS_NONATOMIC_IOSONLY, assign) id xxxdelegateYYY; -@property (NS_NONATOMIC_IOSONLY, retain) id MYtarget; +@property (NS_NONATOMIC_IOSONLY, strong) id MYtarget; -@property (NS_NONATOMIC_IOSONLY, retain) id targetX; +@property (NS_NONATOMIC_IOSONLY, strong) id targetX; @property (NS_NONATOMIC_IOSONLY) int value; @@ -87,14 +87,14 @@ typedef char BOOL; - (void) Nothing; @property (NS_NONATOMIC_IOSONLY, readonly) int Length; -@property (NS_NONATOMIC_IOSONLY, readonly, retain) id object; +@property (NS_NONATOMIC_IOSONLY, readonly, strong) id object; + (double) D; @property (NS_NONATOMIC_IOSONLY, readonly) void *JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); @property (NS_NONATOMIC_IOSONLY, getter=isIgnoringInteractionEvents, readonly) BOOL ignoringInteractionEvents; -@property (NS_NONATOMIC_IOSONLY, getter=getStringValue, retain) NSString *stringValue; +@property (NS_NONATOMIC_IOSONLY, getter=getStringValue, strong) NSString *stringValue; @property (NS_NONATOMIC_IOSONLY, getter=getCounterValue, readonly) BOOL counterValue; -@property (NS_NONATOMIC_IOSONLY, getter=getns_dixtionary, readonly, retain) NSDictionary *ns_dixtionary; +@property (NS_NONATOMIC_IOSONLY, getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out @@ -115,9 +115,9 @@ typedef char BOOL; @property (NS_NONATOMIC_IOSONLY, assign) id xxxdelegateYYY; -@property (NS_NONATOMIC_IOSONLY, retain) id MYtarget; +@property (NS_NONATOMIC_IOSONLY, strong) id MYtarget; -@property (NS_NONATOMIC_IOSONLY, retain) id targetX; +@property (NS_NONATOMIC_IOSONLY, strong) id targetX; @property (NS_NONATOMIC_IOSONLY) int value; @@ -131,7 +131,7 @@ typedef char BOOL; - (void) Nothing; @property (NS_NONATOMIC_IOSONLY, readonly) int Length; -@property (NS_NONATOMIC_IOSONLY, readonly, retain) id object; +@property (NS_NONATOMIC_IOSONLY, readonly, strong) id object; + (double) D; - (BOOL)is3bar; // watch out @@ -168,26 +168,26 @@ DEPRECATED @interface NSURL // Do not infer a property. -@property (NS_NONATOMIC_IOSONLY, retain) NSURL *appStoreReceiptURL NS_AVAILABLE; +@property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURL NS_AVAILABLE; - (void) setAppStoreReceiptURL : (NSURL *)object; -@property (NS_NONATOMIC_IOSONLY, retain) NSURL *appStoreReceiptURLX NS_AVAILABLE; +@property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLX NS_AVAILABLE; // Do not infer a property. -@property (NS_NONATOMIC_IOSONLY, retain) NSURL *appStoreReceiptURLY ; +@property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLY ; - (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; -@property (NS_NONATOMIC_IOSONLY, readonly, retain) id OkToInfer NS_AVAILABLE; +@property (NS_NONATOMIC_IOSONLY, readonly, strong) id OkToInfer NS_AVAILABLE; // Do not infer a property. -@property (NS_NONATOMIC_IOSONLY, retain) NSURL *appStoreReceiptURLZ ; +@property (NS_NONATOMIC_IOSONLY, strong) NSURL *appStoreReceiptURLZ ; - (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; // Do not infer a property. - (id) t1 NORETURN NS_AVAILABLE; - (void) setT1 : (id) arg NS_AVAILABLE; -@property (NS_NONATOMIC_IOSONLY, retain) id method1 ALIGNED NS_AVAILABLE; +@property (NS_NONATOMIC_IOSONLY, strong) id method1 ALIGNED NS_AVAILABLE; - (NSURL *)init; // No Change + (id)alloc; // No Change diff --git a/test/ARCMT/objcmt-property-availability.m.result b/test/ARCMT/objcmt-property-availability.m.result index 681f9a99bf55..a5a45e37929c 100644 --- a/test/ARCMT/objcmt-property-availability.m.result +++ b/test/ARCMT/objcmt-property-availability.m.result @@ -19,20 +19,20 @@ #define UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) @interface MKMapItem -@property (nonatomic, retain) MKMapItem *source NS_AVAILABLE(10_9, 6_0); +@property (nonatomic, strong) MKMapItem *source NS_AVAILABLE(10_9, 6_0); - (void)setSource:(MKMapItem *)source NS_AVAILABLE(10_9, 7_0); -@property (nonatomic, retain) MKMapItem *dest NS_AVAILABLE(10_9, 6_0); +@property (nonatomic, strong) MKMapItem *dest NS_AVAILABLE(10_9, 6_0); -@property (nonatomic, retain) MKMapItem *final; +@property (nonatomic, strong) MKMapItem *final; -@property (nonatomic, retain) MKMapItem *total NS_AVAILABLE(10_9, 6_0); +@property (nonatomic, strong) MKMapItem *total NS_AVAILABLE(10_9, 6_0); - (void)setTotal:(MKMapItem *)source; - (MKMapItem *)comp NS_AVAILABLE(10_9, 6_0); - (void)setComp:(MKMapItem *)source UNAVAILABLE; -@property (nonatomic, retain) MKMapItem *tally UNAVAILABLE NS_AVAILABLE(10_9, 6_0); +@property (nonatomic, strong) MKMapItem *tally UNAVAILABLE NS_AVAILABLE(10_9, 6_0); - (MKMapItem *)itally NS_AVAILABLE(10_9, 6_0); - (void)setItally:(MKMapItem *)source UNAVAILABLE NS_AVAILABLE(10_9, 6_0); diff --git a/test/ARCMT/objcmt-property.m b/test/ARCMT/objcmt-property.m index 3b77aadb892b..61739efe0ab2 100644 --- a/test/ARCMT/objcmt-property.m +++ b/test/ARCMT/objcmt-property.m @@ -70,6 +70,9 @@ typedef char BOOL; - (id) dataSource; +// rdar://15509831 +- (id)delegate; + - (id)xxxdelegateYYY; - (void)setXxxdelegateYYY:(id)delegate; diff --git a/test/ARCMT/objcmt-property.m.result b/test/ARCMT/objcmt-property.m.result index c6380c80523f..ec4ac85127ef 100644 --- a/test/ARCMT/objcmt-property.m.result +++ b/test/ARCMT/objcmt-property.m.result @@ -23,14 +23,14 @@ typedef char BOOL; } @property (nonatomic, weak) NSString *WeakProp; -@property (nonatomic, retain) NSString *StrongProp; +@property (nonatomic, strong) NSString *StrongProp; -@property (nonatomic, retain) NSString *UnavailProp __attribute__((unavailable)); +@property (nonatomic, strong) NSString *UnavailProp __attribute__((unavailable)); - (void) setUnavailProp : (NSString *)Val; -@property (nonatomic, retain) NSString *UnavailProp1 __attribute__((unavailable)); +@property (nonatomic, strong) NSString *UnavailProp1 __attribute__((unavailable)); -@property (nonatomic, retain) NSString *UnavailProp2; +@property (nonatomic, strong) NSString *UnavailProp2; - (void) setUnavailProp2 : (NSString *)Val __attribute__((unavailable)); @property (nonatomic, copy) NSDictionary *undoAction; @@ -48,10 +48,10 @@ typedef char BOOL; NSArray *_names3; NSArray *_names4; } -@property (nonatomic, retain) NSArray *names2; -@property (nonatomic, retain) NSArray *names3; -@property (nonatomic, retain) NSArray *names4; -@property (nonatomic, retain) NSArray *names1; +@property (nonatomic, strong) NSArray *names2; +@property (nonatomic, strong) NSArray *names3; +@property (nonatomic, strong) NSArray *names4; +@property (nonatomic, strong) NSArray *names1; @end // Properties that contain the name "delegate" or "dataSource", @@ -61,12 +61,15 @@ typedef char BOOL; @property (nonatomic, assign) id dataSource; +// rdar://15509831 +@property (nonatomic, readonly, assign) id delegate; + @property (nonatomic, assign) id xxxdelegateYYY; -@property (nonatomic, retain) id MYtarget; +@property (nonatomic, strong) id MYtarget; -@property (nonatomic, retain) id targetX; +@property (nonatomic, strong) id targetX; @property (nonatomic) int value; @@ -80,14 +83,14 @@ typedef char BOOL; - (void) Nothing; @property (nonatomic, readonly) int Length; -@property (nonatomic, readonly, retain) id object; +@property (nonatomic, readonly, strong) id object; + (double) D; @property (nonatomic, readonly) void *JSObject WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER); @property (nonatomic, getter=isIgnoringInteractionEvents, readonly) BOOL ignoringInteractionEvents; -@property (nonatomic, getter=getStringValue, retain) NSString *stringValue; +@property (nonatomic, getter=getStringValue, strong) NSString *stringValue; @property (nonatomic, getter=getCounterValue, readonly) BOOL counterValue; -@property (nonatomic, getter=getns_dixtionary, readonly, retain) NSDictionary *ns_dixtionary; +@property (nonatomic, getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary; - (BOOL)is3bar; // watch out - (NSString *)get3foo; // watch out @@ -108,9 +111,9 @@ typedef char BOOL; @property (nonatomic, assign) id xxxdelegateYYY; -@property (nonatomic, retain) id MYtarget; +@property (nonatomic, strong) id MYtarget; -@property (nonatomic, retain) id targetX; +@property (nonatomic, strong) id targetX; @property (nonatomic) int value; @@ -124,7 +127,7 @@ typedef char BOOL; - (void) Nothing; @property (nonatomic, readonly) int Length; -@property (nonatomic, readonly, retain) id object; +@property (nonatomic, readonly, strong) id object; + (double) D; - (BOOL)is3bar; // watch out @@ -161,26 +164,26 @@ DEPRECATED @interface NSURL // Do not infer a property. -@property (nonatomic, retain) NSURL *appStoreReceiptURL NS_AVAILABLE; +@property (nonatomic, strong) NSURL *appStoreReceiptURL NS_AVAILABLE; - (void) setAppStoreReceiptURL : (NSURL *)object; -@property (nonatomic, retain) NSURL *appStoreReceiptURLX NS_AVAILABLE; +@property (nonatomic, strong) NSURL *appStoreReceiptURLX NS_AVAILABLE; // Do not infer a property. -@property (nonatomic, retain) NSURL *appStoreReceiptURLY ; +@property (nonatomic, strong) NSURL *appStoreReceiptURLY ; - (void) setAppStoreReceiptURLY : (NSURL *)object NS_AVAILABLE; -@property (nonatomic, readonly, retain) id OkToInfer NS_AVAILABLE; +@property (nonatomic, readonly, strong) id OkToInfer NS_AVAILABLE; // Do not infer a property. -@property (nonatomic, retain) NSURL *appStoreReceiptURLZ ; +@property (nonatomic, strong) NSURL *appStoreReceiptURLZ ; - (void) setAppStoreReceiptURLZ : (NSURL *)object NS_AVAILABLE; // Do not infer a property. - (id) t1 NORETURN NS_AVAILABLE; - (void) setT1 : (id) arg NS_AVAILABLE; -@property (nonatomic, retain) id method1 ALIGNED NS_AVAILABLE; +@property (nonatomic, strong) id method1 ALIGNED NS_AVAILABLE; - (NSURL *)init; // No Change + (id)alloc; // No Change diff --git a/test/ARCMT/objcmt-protocol-conformance.m b/test/ARCMT/objcmt-protocol-conformance.m index 7bc7d938177f..f4c8f5112a62 100644 --- a/test/ARCMT/objcmt-protocol-conformance.m +++ b/test/ARCMT/objcmt-protocol-conformance.m @@ -112,3 +112,19 @@ @implementation Test7 @end +// rdar://15515206 +@interface BTLEBrowser +@end + +@protocol CBCentralManagerDelegate; + +@protocol CBCentralManagerDelegate +- (id) Meth1: (double) arg; +@end + +@interface BTLEBrowser() +@end + +@implementation BTLEBrowser +- (id) Meth15515206: (double) arg { return 0; } +@end diff --git a/test/ARCMT/objcmt-protocol-conformance.m.result b/test/ARCMT/objcmt-protocol-conformance.m.result index dc0874c88f22..0322ab81d6af 100644 --- a/test/ARCMT/objcmt-protocol-conformance.m.result +++ b/test/ARCMT/objcmt-protocol-conformance.m.result @@ -112,3 +112,19 @@ @implementation Test7 @end +// rdar://15515206 +@interface BTLEBrowser +@end + +@protocol CBCentralManagerDelegate; + +@protocol CBCentralManagerDelegate +- (id) Meth1: (double) arg; +@end + +@interface BTLEBrowser() +@end + +@implementation BTLEBrowser +- (id) Meth15515206: (double) arg { return 0; } +@end diff --git a/test/ARCMT/protected-scope.m b/test/ARCMT/protected-scope.m index 8aece44d4ffa..b522f54cdf7c 100644 --- a/test/ARCMT/protected-scope.m +++ b/test/ARCMT/protected-scope.m @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/protected-scope.m.result b/test/ARCMT/protected-scope.m.result index f385d8825de5..55070f273227 100644 --- a/test/ARCMT/protected-scope.m.result +++ b/test/ARCMT/protected-scope.m.result @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t // RUN: diff %t %s.result -// DISABLE: mingw32 #include "Common.h" diff --git a/test/ARCMT/whitelisted/header1.h b/test/ARCMT/whitelisted/header1.h index a3014eb5b653..d94b9f7d9ebe 100644 --- a/test/ARCMT/whitelisted/header1.h +++ b/test/ARCMT/whitelisted/header1.h @@ -2,4 +2,5 @@ @interface I1 : NSObject -(int)prop; -(void)setProp:(int)p; ++(id)i1; @end diff --git a/test/ARCMT/whitelisted/header1.h.result b/test/ARCMT/whitelisted/header1.h.result index 7808fc8a6a3f..65cbd2621f6b 100644 --- a/test/ARCMT/whitelisted/header1.h.result +++ b/test/ARCMT/whitelisted/header1.h.result @@ -1,4 +1,5 @@ @interface I1 : NSObject @property (nonatomic) int prop; ++(instancetype)i1; @end diff --git a/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m b/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m new file mode 100644 index 000000000000..d734eaa10bdf --- /dev/null +++ b/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m @@ -0,0 +1,18 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype -objcmt-white-list-dir-path=%S/Inputs %s -triple x86_64-apple-darwin11 -migrate -o %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %S/header1.h.result %s.result + +@interface NSObject ++ (id)alloc; +@end + +#include "header1.h" +#include "header2.h" + +@interface I2(cat) +-(id)initInCat; +@end + +@implementation I1 ++(id)i1 {} +@end diff --git a/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m.result b/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m.result new file mode 100644 index 000000000000..b936b52b729b --- /dev/null +++ b/test/ARCMT/whitelisted/objcmt-with-whitelist-impl.m.result @@ -0,0 +1,18 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype -objcmt-white-list-dir-path=%S/Inputs %s -triple x86_64-apple-darwin11 -migrate -o %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %S/header1.h.result %s.result + +@interface NSObject ++ (id)alloc; +@end + +#include "header1.h" +#include "header2.h" + +@interface I2(cat) +-(id)initInCat; +@end + +@implementation I1 ++(instancetype)i1 {} +@end diff --git a/test/ARCMT/whitelisted/objcmt-with-whitelist.m b/test/ARCMT/whitelisted/objcmt-with-whitelist.m index 1b44c9a6d9fe..bef82c8667d9 100644 --- a/test/ARCMT/whitelisted/objcmt-with-whitelist.m +++ b/test/ARCMT/whitelisted/objcmt-with-whitelist.m @@ -1,7 +1,7 @@ // RUN: rm -rf %t -// RUN: %clang_cc1 -objcmt-migrate-readwrite-property %s -triple x86_64-apple-darwin11 -migrate -o %t.remap +// RUN: %clang_cc1 -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype %s -triple x86_64-apple-darwin11 -migrate -o %t.remap // RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %S/header1.h.result %S/header2.h.result -// RUN: %clang_cc1 -objcmt-migrate-readwrite-property -objcmt-white-list-dir-path=%S/Inputs %s -triple x86_64-apple-darwin11 -migrate -o %t.remap +// RUN: %clang_cc1 -objcmt-migrate-readwrite-property -objcmt-migrate-instancetype -objcmt-white-list-dir-path=%S/Inputs %s -triple x86_64-apple-darwin11 -migrate -o %t.remap // RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %S/header1.h.result @interface NSObject diff --git a/test/Analysis/Inputs/system-header-simulator-cxx.h b/test/Analysis/Inputs/system-header-simulator-cxx.h index 9bb8ec48923d..35869214ed7e 100644 --- a/test/Analysis/Inputs/system-header-simulator-cxx.h +++ b/test/Analysis/Inputs/system-header-simulator-cxx.h @@ -144,7 +144,7 @@ namespace std { public: void pop_front() { // Fake use-after-free. - // No warning is expected as we are suppressing warning comming + // No warning is expected as we are suppressing warning coming // out of std::list. int z = 0; z = 5/z; @@ -155,24 +155,47 @@ namespace std { // basic_string template > class __attribute__ ((__type_visibility__("default"))) basic_string { - _CharT localStorage[4]; + bool isLong; + union { + _CharT localStorage[4]; + _CharT *externalStorage; + + void assignExternal(_CharT *newExternal) { + externalStorage = newExternal; + } + } storage; typedef allocator_traits<_Alloc> __alloc_traits; public: + basic_string(); + void push_back(int c) { // Fake error trigger. - // No warning is expected as we are suppressing warning comming + // No warning is expected as we are suppressing warning coming // out of std::basic_string. int z = 0; z = 5/z; } + _CharT *getBuffer() { + return isLong ? storage.externalStorage : storage.localStorage; + } + basic_string &operator +=(int c) { // Fake deallocate stack-based storage. // No warning is expected as we are suppressing warnings within - // allocators being used by std::basic_string. - __alloc_traits::deallocate(&localStorage); + // std::basic_string. + __alloc_traits::deallocate(getBuffer()); + } + + basic_string &operator =(const basic_string &other) { + // Fake deallocate stack-based storage, then use the variable in the + // same union. + // No warning is expected as we are suppressing warnings within + // std::basic_string. + __alloc_traits::deallocate(getBuffer()); + storage.assignExternal(new _CharT[4]); } }; } diff --git a/test/Analysis/Inputs/system-header-simulator-objc.h b/test/Analysis/Inputs/system-header-simulator-objc.h index 3e1d9555bbde..8a5d3b6403c8 100644 --- a/test/Analysis/Inputs/system-header-simulator-objc.h +++ b/test/Analysis/Inputs/system-header-simulator-objc.h @@ -66,8 +66,11 @@ typedef struct { NSFastEnumerationState; @protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; @end @class NSString, NSDictionary; -@interface NSValue : NSObject - (void)getValue:(void *)value; -@end @interface NSNumber : NSValue - (char)charValue; +@interface NSValue : NSObject ++ (NSValue *)valueWithPointer:(const void *)p; +- (void)getValue:(void *)value; +@end +@interface NSNumber : NSValue - (char)charValue; - (id)initWithInt:(int)value; @end @class NSString; @interface NSArray : NSObject - (NSUInteger)count; diff --git a/test/Analysis/NSContainers.m b/test/Analysis/NSContainers.m index a9e76fbbcaba..4b3492645682 100644 --- a/test/Analysis/NSContainers.m +++ b/test/Analysis/NSContainers.m @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.NonNilReturnValue,osx.cocoa.NilArg,osx.cocoa.Loops -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.NonNilReturnValue,osx.cocoa.NilArg,osx.cocoa.Loops,debug.ExprInspection -verify -Wno-objc-root-class %s + +void clang_analyzer_eval(int); + typedef unsigned long NSUInteger; typedef signed char BOOL; typedef struct _NSZone NSZone; @@ -276,3 +279,16 @@ void testCountAwareNSOrderedSet(NSOrderedSet *containers, int *validptr) { } } +void testLiteralsNonNil() { + clang_analyzer_eval(!!@[]); // expected-warning{{TRUE}} + clang_analyzer_eval(!!@{}); // expected-warning{{TRUE}} +} + +@interface NSMutableArray (MySafeAdd) +- (void)addObject:(id)obj safe:(BOOL)safe; +@end + +void testArrayCategory(NSMutableArray *arr) { + [arr addObject:0 safe:1]; // no-warning +} + diff --git a/test/Analysis/NewDelete-checker-test.cpp b/test/Analysis/NewDelete-checker-test.cpp index cc9725128bc8..855b05d66333 100644 --- a/test/Analysis/NewDelete-checker-test.cpp +++ b/test/Analysis/NewDelete-checker-test.cpp @@ -338,13 +338,13 @@ class DerefClass{ public: int *x; DerefClass() {} - ~DerefClass() {*x = 1;} //expected-warning {{Use of memory after it is freed}} + ~DerefClass() {*x = 1;} }; void testDoubleDeleteClassInstance() { DerefClass *foo = new DerefClass(); delete foo; - delete foo; // FIXME: We should ideally report warning here instead of inside the destructor. + delete foo; // expected-warning {{Attempt to delete released memory}} } class EmptyClass{ @@ -356,5 +356,5 @@ public: void testDoubleDeleteEmptyClass() { EmptyClass *foo = new EmptyClass(); delete foo; - delete foo; //expected-warning {{Attempt to free released memory}} + delete foo; // expected-warning {{Attempt to delete released memory}} } diff --git a/test/Analysis/NewDelete-variadic.cpp b/test/Analysis/NewDelete-variadic.cpp index 53dba463bbf9..62a7d17e1b2a 100644 --- a/test/Analysis/NewDelete-variadic.cpp +++ b/test/Analysis/NewDelete-variadic.cpp @@ -5,15 +5,19 @@ namespace std { typedef __typeof__(sizeof(int)) size_t; } -void *operator new(std::size_t, ...); -void *operator new[](std::size_t, ...); +struct X {}; + +void *operator new(std::size_t, X, ...); +void *operator new[](std::size_t, X, ...); void testGlobalCustomVariadicNew() { - void *p1 = operator new(0); // no warn + X x; + + void *p1 = operator new(0, x); // no warn - void *p2 = operator new[](0); // no warn + void *p2 = operator new[](0, x); // no warn - int *p3 = new int; // no warn + int *p3 = new (x) int; // no warn - int *p4 = new int[0]; // no warn + int *p4 = new (x) int[0]; // no warn } diff --git a/test/Analysis/NewDeleteLeaks-PR18394.cpp b/test/Analysis/NewDeleteLeaks-PR18394.cpp new file mode 100644 index 000000000000..dfd94561628f --- /dev/null +++ b/test/Analysis/NewDeleteLeaks-PR18394.cpp @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -analyzer-config graph-trim-interval=1 -analyzer-max-loop 1 -analyze -analyzer-checker=core,alpha.cplusplus.NewDeleteLeaks -verify %s +// expected-no-diagnostics + +class A { +public: + void f() {}; + ~A() { + for (int i=0; i<3; i++) + f(); + } +}; + +void error() { + A *a = new A(); + delete a; +} diff --git a/test/Analysis/NoReturn.m b/test/Analysis/NoReturn.m index c74d54eae528..9b7011e79318 100644 --- a/test/Analysis/NoReturn.m +++ b/test/Analysis/NoReturn.m @@ -1,4 +1,4 @@ -// RUN: %clang --analyze -Xclang -analyzer-checker=alpha.core -Xclang -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s #include diff --git a/test/Analysis/PR9741.cpp b/test/Analysis/PR9741.cpp index 2807c44ab7bc..542bc2d958ee 100644 --- a/test/Analysis/PR9741.cpp +++ b/test/Analysis/PR9741.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -cc1 -std=c++11 -Wuninitialized -verify %s +// RUN: %clang_cc1 -std=c++11 -Wuninitialized -verify %s // expected-no-diagnostics void f() { diff --git a/test/Analysis/analyzer-stats.c b/test/Analysis/analyzer-stats.c index 63073b7e40b3..a0a50cbc9343 100644 --- a/test/Analysis/analyzer-stats.c +++ b/test/Analysis/analyzer-stats.c @@ -2,7 +2,7 @@ int foo(); -int test() { // expected-warning-re{{test -> Total CFGBlocks: [0-9]+ \| Unreachable CFGBlocks: 0 \| Exhausted Block: no \| Empty WorkList: yes}} +int test() { // expected-warning-re{{test -> Total CFGBlocks: {{[0-9]+}} | Unreachable CFGBlocks: 0 | Exhausted Block: no | Empty WorkList: yes}} int a = 1; a = 34 / 12; diff --git a/test/Analysis/auto-obj-dtors-cfg-output.cpp b/test/Analysis/auto-obj-dtors-cfg-output.cpp index 0dbbfb592f71..0b4454fbd958 100644 --- a/test/Analysis/auto-obj-dtors-cfg-output.cpp +++ b/test/Analysis/auto-obj-dtors-cfg-output.cpp @@ -228,7 +228,7 @@ l1: // CHECK-NEXT: 7: b // CHECK-NEXT: 8: [B4.7] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 9: [B4.8].operator int -// CHECK: 10: [B4.9]() +// CHECK: 10: [B4.8] // CHECK: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 12: [B4.11] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: if [B4.12] @@ -307,7 +307,7 @@ void test_if_implicit_scope() { // CHECK-NEXT: 7: b // CHECK-NEXT: 8: [B8.7] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 9: [B8.8].operator int -// CHECK: 10: [B8.9]() +// CHECK: 10: [B8.8] // CHECK: 11: [B8.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 12: [B8.11] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: if [B8.12] @@ -354,7 +354,7 @@ void test_if_jumps() { // CHECK-NEXT: 5: b // CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 7: [B4.6].operator int -// CHECK-NEXT: 8: [B4.7]() +// CHECK-NEXT: 8: [B4.6] // CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: while [B4.10] @@ -440,7 +440,7 @@ void test_while_implicit_scope() { // CHECK-NEXT: 5: b // CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 7: [B10.6].operator int -// CHECK-NEXT: 8: [B10.7]() +// CHECK-NEXT: 8: [B10.6] // CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: while [B10.10] @@ -586,7 +586,7 @@ void test_do_jumps() { // CHECK-NEXT: 7: b // CHECK-NEXT: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 9: [B2.8].operator int -// CHECK: 10: [B2.9]() +// CHECK: 10: [B2.8] // CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK-NEXT: T: switch [B2.11] // CHECK-NEXT: Preds (1): B4 @@ -624,7 +624,7 @@ void test_switch_implicit_scope() { // CHECK-NEXT: 7: b // CHECK-NEXT: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 9: [B2.8].operator int -// CHECK: 10: [B2.9]() +// CHECK: 10: [B2.8] // CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK-NEXT: T: switch [B2.11] // CHECK-NEXT: Preds (1): B9 @@ -710,7 +710,7 @@ void test_switch_jumps() { // CHECK-NEXT: 5: b // CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 7: [B4.6].operator int -// CHECK-NEXT: 8: [B4.7]() +// CHECK-NEXT: 8: [B4.6] // CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: for (...; [B4.10]; ) @@ -796,7 +796,7 @@ void test_for_implicit_scope() { // CHECK-NEXT: 5: c // CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A) // CHECK-NEXT: 7: [B10.6].operator int -// CHECK-NEXT: 8: [B10.7]() +// CHECK-NEXT: 8: [B10.6] // CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool) // CHECK-NEXT: T: for (...; [B10.10]; ) diff --git a/test/Analysis/bitwise-ops.c b/test/Analysis/bitwise-ops.c index bf282eca27d4..01daf4229625 100644 --- a/test/Analysis/bitwise-ops.c +++ b/test/Analysis/bitwise-ops.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -triple x86_64-apple-darwin13 -Wno-shift-count-overflow -verify %s void clang_analyzer_eval(int); #define CHECK(expr) if (!(expr)) return; clang_analyzer_eval(expr) @@ -11,4 +11,22 @@ void testPersistentConstraints(int x, int y) { // False positives due to SValBuilder giving up on certain kinds of exprs. CHECK(1 - x); // expected-warning{{UNKNOWN}} CHECK(x & y); // expected-warning{{UNKNOWN}} +} + +int testConstantShifts_PR18073(int which) { + // FIXME: We should have a checker that actually specifically checks bitwise + // shifts against the width of the LHS's /static/ type, rather than just + // having BasicValueFactory return "undefined" when dealing with two constant + // operands. + switch (which) { + case 1: + return 0ULL << 63; // no-warning + case 2: + return 0ULL << 64; // expected-warning{{The result of the '<<' expression is undefined}} + case 3: + return 0ULL << 65; // expected-warning{{The result of the '<<' expression is undefined}} + + default: + return 0; + } } \ No newline at end of file diff --git a/test/Analysis/call-invalidation.cpp b/test/Analysis/call-invalidation.cpp index 54281cc98aeb..7297d1ebec22 100644 --- a/test/Analysis/call-invalidation.cpp +++ b/test/Analysis/call-invalidation.cpp @@ -89,3 +89,32 @@ void testConstReferenceStruct() { clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}} } + +void usePointerPure(int * const *) __attribute__((pure)); +void usePointerConst(int * const *) __attribute__((const)); + +void testPureConst() { + extern int global; + int x; + int *p; + + p = &x; + x = 42; + global = -5; + clang_analyzer_eval(x == 42); // expected-warning{{TRUE}} + clang_analyzer_eval(global == -5); // expected-warning{{TRUE}} + + usePointerPure(&p); + clang_analyzer_eval(x == 42); // expected-warning{{TRUE}} + clang_analyzer_eval(global == -5); // expected-warning{{TRUE}} + + usePointerConst(&p); + clang_analyzer_eval(x == 42); // expected-warning{{TRUE}} + clang_analyzer_eval(global == -5); // expected-warning{{TRUE}} + + usePointer(&p); + clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}} + clang_analyzer_eval(global == -5); // expected-warning{{UNKNOWN}} +} + + diff --git a/test/Analysis/casts.c b/test/Analysis/casts.c index 3e2f8077ede0..42c05beb5945 100644 --- a/test/Analysis/casts.c +++ b/test/Analysis/casts.c @@ -110,7 +110,8 @@ void castsToBool() { clang_analyzer_eval(symbolicPointer); // expected-warning{{TRUE}} int localInt; - clang_analyzer_eval(&localInt); // expected-warning{{TRUE}} + int* ptr = &localInt; + clang_analyzer_eval(ptr); // expected-warning{{TRUE}} clang_analyzer_eval(&castsToBool); // expected-warning{{TRUE}} clang_analyzer_eval("abc"); // expected-warning{{TRUE}} diff --git a/test/Analysis/casts.cpp b/test/Analysis/casts.cpp index 339539189ed7..53e1cd085acd 100644 --- a/test/Analysis/casts.cpp +++ b/test/Analysis/casts.cpp @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s -// expected-no-diagnostics bool PR14634(int x) { double y = (double)x; @@ -10,3 +9,15 @@ bool PR14634_implicit(int x) { double y = (double)x; return y; } + +void intAsBoolAsSwitchCondition(int c) { + switch ((bool)c) { // expected-warning {{switch condition has boolean value}} + case 0: + break; + } + + switch ((int)(bool)c) { // no-warning + case 0: + break; + } +} diff --git a/test/Analysis/cfg.cpp b/test/Analysis/cfg.cpp index 660d1f264694..65060b168744 100644 --- a/test/Analysis/cfg.cpp +++ b/test/Analysis/cfg.cpp @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 %s 2>&1 | FileCheck %s +// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 %s > %t 2>&1 +// RUN: FileCheck --input-file=%t %s +// CHECK-LABEL: void checkWrap(int i) // CHECK: ENTRY // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] @@ -35,6 +37,7 @@ void checkWrap(int i) { } } +// CHECK-LABEL: void checkDeclStmts() // CHECK: ENTRY // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] @@ -48,7 +51,7 @@ void checkWrap(int i) { // CHECK-NEXT: CXXConstructExpr // CHECK-NEXT: 9: struct standalone myStandalone; // CHECK-NEXT: CXXConstructExpr -// CHECK-NEXT: 11: struct myAnon; +// CHECK-NEXT: 11: struct (anonymous struct at {{.*}}) myAnon; // CHECK-NEXT: CXXConstructExpr // CHECK-NEXT: 13: struct named myNamed; // CHECK-NEXT: Preds (1): B2 @@ -67,6 +70,7 @@ void checkDeclStmts() { static_assert(1, "abc"); } +// CHECK-LABEL: void F(EmptyE e) // CHECK: ENTRY // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] @@ -83,6 +87,7 @@ void F(EmptyE e) { switch (e) {} } +// CHECK-LABEL: void testBuiltinSize() // CHECK: ENTRY // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] @@ -106,16 +111,18 @@ public: ~A() {} }; +// CHECK-LABEL: void test_deletedtor() // CHECK: [B2 (ENTRY)] // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] -// CHECK-NEXT: 1: (CXXConstructExpr, class A) -// CHECK-NEXT: 2: new A([B1.1]) -// CHECK-NEXT: 3: A *a = new A(); -// CHECK-NEXT: 4: a -// CHECK-NEXT: 5: [B1.4] (ImplicitCastExpr, LValueToRValue, class A *) -// CHECK-NEXT: 6: [B1.5]->~A() (Implicit destructor) -// CHECK-NEXT: 7: delete [B1.5] +// CHECK-NEXT: 1: CFGNewAllocator(A *) +// CHECK-NEXT: 2: (CXXConstructExpr, class A) +// CHECK-NEXT: 3: new A([B1.2]) +// CHECK-NEXT: 4: A *a = new A(); +// CHECK-NEXT: 5: a +// CHECK-NEXT: 6: [B1.5] (ImplicitCastExpr, LValueToRValue, class A *) +// CHECK-NEXT: 7: [B1.6]->~A() (Implicit destructor) +// CHECK-NEXT: 8: delete [B1.6] // CHECK-NEXT: Preds (1): B2 // CHECK-NEXT: Succs (1): B0 // CHECK: [B0 (EXIT)] @@ -125,17 +132,19 @@ void test_deletedtor() { delete a; } +// CHECK-LABEL: void test_deleteArraydtor() // CHECK: [B2 (ENTRY)] // CHECK-NEXT: Succs (1): B1 // CHECK: [B1] // CHECK-NEXT: 1: 5 -// CHECK-NEXT: 2: (CXXConstructExpr, class A) -// CHECK-NEXT: 3: new A {{\[\[}}B1.1]] -// CHECK-NEXT: 4: A *a = new A [5]; -// CHECK-NEXT: 5: a -// CHECK-NEXT: 6: [B1.5] (ImplicitCastExpr, LValueToRValue, class A *) -// CHECK-NEXT: 7: [B1.6]->~A() (Implicit destructor) -// CHECK-NEXT: 8: delete [] [B1.6] +// CHECK-NEXT: 2: CFGNewAllocator(A *) +// CHECK-NEXT: 3: (CXXConstructExpr, class A) +// CHECK-NEXT: 4: new A {{\[\[}}B1.1]] +// CHECK-NEXT: 5: A *a = new A [5]; +// CHECK-NEXT: 6: a +// CHECK-NEXT: 7: [B1.6] (ImplicitCastExpr, LValueToRValue, class A *) +// CHECK-NEXT: 8: [B1.7]->~A() (Implicit destructor) +// CHECK-NEXT: 9: delete [] [B1.7] // CHECK-NEXT: Preds (1): B2 // CHECK-NEXT: Succs (1): B0 // CHECK: [B0 (EXIT)] @@ -157,7 +166,7 @@ namespace NoReturnSingleSuccessor { ~B() __attribute__((noreturn)); }; -// CHECK: ENTRY +// CHECK-LABEL: int test1(int *x) // CHECK: 1: 1 // CHECK-NEXT: 2: return // CHECK-NEXT: ~B() (Implicit destructor) @@ -169,7 +178,7 @@ namespace NoReturnSingleSuccessor { return 1; } -// CHECK: ENTRY +// CHECK-LABEL: int test2(int *x) // CHECK: 1: 1 // CHECK-NEXT: 2: return // CHECK-NEXT: destructor @@ -181,3 +190,214 @@ namespace NoReturnSingleSuccessor { return 1; } } + +// Test CFG support for "extending" an enum. +// CHECK-LABEL: int test_enum_with_extension(enum MyEnum value) +// CHECK: [B7 (ENTRY)] +// CHECK-NEXT: Succs (1): B2 +// CHECK: [B1] +// CHECK-NEXT: 1: x +// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, int) +// CHECK-NEXT: 3: return [B1.2]; +// CHECK-NEXT: Preds (5): B3 B4 B5 B6 B2(Unreachable) +// CHECK-NEXT: Succs (1): B0 +// CHECK: [B2] +// CHECK-NEXT: 1: 0 +// CHECK-NEXT: 2: int x = 0; +// CHECK-NEXT: 3: value +// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, LValueToRValue, enum MyEnum) +// CHECK-NEXT: 5: [B2.4] (ImplicitCastExpr, IntegralCast, int) +// CHECK-NEXT: T: switch [B2.5] +// CHECK-NEXT: Preds (1): B7 +// CHECK-NEXT: Succs (5): B3 B4 B5 B6 B1(Unreachable) +// CHECK: [B3] +// CHECK-NEXT: case D: +// CHECK-NEXT: 1: 4 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B3.2] = [B3.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B4] +// CHECK-NEXT: case C: +// CHECK-NEXT: 1: 3 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B4.2] = [B4.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B5] +// CHECK-NEXT: case B: +// CHECK-NEXT: 1: 2 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B5.2] = [B5.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B6] +// CHECK-NEXT: case A: +// CHECK-NEXT: 1: 1 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B6.2] = [B6.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (1): B1 +enum MyEnum { A, B, C }; +static const enum MyEnum D = (enum MyEnum) 32; + +int test_enum_with_extension(enum MyEnum value) { + int x = 0; + switch (value) { + case A: x = 1; break; + case B: x = 2; break; + case C: x = 3; break; + case D: x = 4; break; + } + return x; +} + +// CHECK-LABEL: int test_enum_with_extension_default(enum MyEnum value) +// CHECK: [B7 (ENTRY)] +// CHECK-NEXT: Succs (1): B2 +// CHECK: [B1] +// CHECK-NEXT: 1: x +// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, int) +// CHECK-NEXT: 3: return [B1.2]; +// CHECK-NEXT: Preds (4): B3 B4 B5 B6 +// CHECK-NEXT: Succs (1): B0 +// CHECK: [B2] +// CHECK-NEXT: 1: 0 +// CHECK-NEXT: 2: int x = 0; +// CHECK-NEXT: 3: value +// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, LValueToRValue, enum MyEnum) +// CHECK-NEXT: 5: [B2.4] (ImplicitCastExpr, IntegralCast, int) +// CHECK-NEXT: T: switch [B2.5] +// CHECK-NEXT: Preds (1): B7 +// CHECK-NEXT: Succs (4): B4 B5 B6 B3(Unreachable) +// CHECK: [B3] +// CHECK-NEXT: default: +// CHECK-NEXT: 1: 4 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B3.2] = [B3.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2(Unreachable) +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B4] +// CHECK-NEXT: case C: +// CHECK-NEXT: 1: 3 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B4.2] = [B4.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B5] +// CHECK-NEXT: case B: +// CHECK-NEXT: 1: 2 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B5.2] = [B5.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B6] +// CHECK-NEXT: case A: +// CHECK-NEXT: 1: 1 +// CHECK-NEXT: 2: x +// CHECK-NEXT: 3: [B6.2] = [B6.1] +// CHECK-NEXT: T: break; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (1): B1 +int test_enum_with_extension_default(enum MyEnum value) { + int x = 0; + switch (value) { + case A: x = 1; break; + case B: x = 2; break; + case C: x = 3; break; + default: x = 4; break; + } + return x; +} + + +// CHECK-LABEL: void test_placement_new() +// CHECK: [B2 (ENTRY)] +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B1] +// CHECK-NEXT: 1: int buffer[16]; +// CHECK-NEXT: 2: buffer +// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, ArrayToPointerDecay, int *) +// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, BitCast, void *) +// CHECK-NEXT: 5: CFGNewAllocator(MyClass *) +// CHECK-NEXT: 6: (CXXConstructExpr, class MyClass) +// CHECK-NEXT: 7: new ([B1.4]) MyClass([B1.6]) +// CHECK-NEXT: 8: MyClass *obj = new (buffer) MyClass(); +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (1): B1 + +extern void* operator new (unsigned long sz, void* v); +extern void* operator new[] (unsigned long sz, void* ptr); + +class MyClass { +public: + MyClass() {} + ~MyClass() {} +}; + +void test_placement_new() { + int buffer[16]; + MyClass* obj = new (buffer) MyClass(); +} + +// CHECK-LABEL: void test_placement_new_array() +// CHECK: [B2 (ENTRY)] +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B1] +// CHECK-NEXT: 1: int buffer[16]; +// CHECK-NEXT: 2: buffer +// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, ArrayToPointerDecay, int *) +// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, BitCast, void *) +// CHECK-NEXT: 5: 5 +// CHECK-NEXT: 6: CFGNewAllocator(MyClass *) +// CHECK-NEXT: 7: (CXXConstructExpr, class MyClass) +// CHECK-NEXT: 8: new ([B1.4]) MyClass {{\[\[}}B1.5]] +// CHECK-NEXT: 9: MyClass *obj = new (buffer) MyClass [5]; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (1): B1 + +void test_placement_new_array() { + int buffer[16]; + MyClass* obj = new (buffer) MyClass[5]; +} + + +// CHECK-LABEL: int *PR18472() +// CHECK: [B2 (ENTRY)] +// CHECK-NEXT: Succs (1): B1 +// CHECK: [B1] +// CHECK-NEXT: 1: 0 +// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, PR18472_t) +// CHECK-NEXT: 3: (PR18472_t)[B1.2] (CStyleCastExpr, NoOp, PR18472_t) +// CHECK-NEXT: 4: CFGNewAllocator(int *) +// CHECK-NEXT: 5: new (([B1.3])) int +// CHECK-NEXT: 6: return [B1.5]; +// CHECK-NEXT: Preds (1): B2 +// CHECK-NEXT: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK-NEXT: Preds (1): B1 + +extern "C" typedef int *PR18472_t; +void *operator new (unsigned long, PR18472_t); +template T *PR18472() { + return new (((PR18472_t) 0)) T; +} +void PR18472_helper() { + PR18472(); +} + diff --git a/test/Analysis/checker-plugins.c b/test/Analysis/checker-plugins.c new file mode 100644 index 000000000000..3882ba6661b4 --- /dev/null +++ b/test/Analysis/checker-plugins.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -load %llvmshlibdir/SampleAnalyzerPlugin%pluginext -analyze -analyzer-checker='example.MainCallChecker' -verify %s +// REQUIRES: plugins, examples + +// Test that the MainCallChecker example analyzer plugin loads and runs. + +int main(); + +void caller() { + main(); // expected-warning {{call to main}} +} diff --git a/test/Analysis/ctor.mm b/test/Analysis/ctor.mm index 77c87905e1f7..e7c0c6cac630 100644 --- a/test/Analysis/ctor.mm +++ b/test/Analysis/ctor.mm @@ -674,3 +674,33 @@ namespace InitializerList { clang_analyzer_eval(list->usedInitializerList); // expected-warning{{UNKNOWN}} } } + +namespace PR19579 { + class C {}; + + void f() { + C(); + int a; + + extern void use(int); + use(a); // expected-warning{{uninitialized}} + } + + void g() { + struct S { + C c; + int i; + }; + + // This order triggers the initialization of the inner "a" after the + // constructor for "C" is run, which used to confuse the analyzer + // (is "C()" the initialization of "a"?). + struct S s = { + C(), + ({ + int a, b = 0; + 0; + }) + }; + } +} diff --git a/test/Analysis/dead-stores.c b/test/Analysis/dead-stores.c index 067a0504f13d..da8e8bdb7034 100644 --- a/test/Analysis/dead-stores.c +++ b/test/Analysis/dead-stores.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.IdempotentOperations -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s -// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.IdempotentOperations -analyzer-store=region -analyzer-constraints=range -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s +// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s +// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores -analyzer-store=region -analyzer-constraints=range -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s void f1() { int k, y; // expected-warning{{unused variable 'k'}} expected-warning{{unused variable 'y'}} @@ -11,7 +11,7 @@ void f2(void *b) { char *c = (char*)b; // no-warning char *d = b+1; // expected-warning {{never read}} expected-warning{{unused variable 'd'}} printf("%s", c); // expected-warning{{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} \ - // expected-note{{please include the header or explicitly provide a declaration for 'printf'}} + // expected-note{{include the header or explicitly provide a declaration for 'printf'}} } int f(); @@ -152,7 +152,7 @@ void f15(unsigned x, unsigned y) { // to see a real bug in this scenario. int f16(int x) { x = x * 2; - x = sizeof(int [x = (x || x + 1) * 2]) // expected-warning{{The left operand to '+' is always 0}} expected-warning{{The left operand to '*' is always 1}} + x = sizeof(int [x = (x || x + 1) * 2]) ? 5 : 8; return x; } @@ -480,11 +480,11 @@ int f26_nestedblocks() { // placed within the increment code of for loops. void rdar8014335() { for (int i = 0 ; i != 10 ; ({ break; })) { - for ( ; ; ({ ++i; break; })) ; + for ( ; ; ({ ++i; break; })) ; // expected-warning {{'break' is bound to current loop, GCC binds it to the enclosing loop}} // Note that the next value stored to 'i' is never executed // because the next statement to be executed is the 'break' // in the increment code of the first loop. - i = i * 3; // expected-warning{{Value stored to 'i' is never read}} expected-warning{{The left operand to '*' is always 1}} + i = i * 3; // expected-warning{{Value stored to 'i' is never read}} } } diff --git a/test/Analysis/dead-stores.m b/test/Analysis/dead-stores.m index 5a807ed52c99..13b28dcf5374 100644 --- a/test/Analysis/dead-stores.m +++ b/test/Analysis/dead-stores.m @@ -109,3 +109,11 @@ Radar11059352_1 *_Path; return wp; } @end + +id test_objc_precise_lifetime_foo(); +void test_objc_precise_lifetime() { + __attribute__((objc_precise_lifetime)) id dead = test_objc_precise_lifetime_foo(); // no-warning + dead = 0; + dead = test_objc_precise_lifetime_foo(); // no-warning + dead = 0; +} diff --git a/test/Analysis/default-analyze.m b/test/Analysis/default-analyze.m index 82656b24a6e9..5fbaa2f98c65 100644 --- a/test/Analysis/default-analyze.m +++ b/test/Analysis/default-analyze.m @@ -11,7 +11,7 @@ id foo(int x) { title = @"bar"; break; default: - title = "@baz"; + title = @"baz"; break; } return title; diff --git a/test/Analysis/diagnostics/undef-value-param.m b/test/Analysis/diagnostics/undef-value-param.m index e977acb70fd9..b0ce56caa348 100644 --- a/test/Analysis/diagnostics/undef-value-param.m +++ b/test/Analysis/diagnostics/undef-value-param.m @@ -542,7 +542,7 @@ static void CreateRefUndef(SCDynamicStoreRef *storeRef, unsigned x) { // CHECK-NEXT: // CHECK-NEXT: descriptionNull pointer argument in call to CFRelease // CHECK-NEXT: categoryAPI Misuse (Apple) -// CHECK-NEXT: typenull passed to CFRetain/CFRelease/CFMakeCollectable +// CHECK-NEXT: typenull passed to CF memory management function // CHECK-NEXT: issue_context_kindObjective-C method // CHECK-NEXT: issue_contexttest // CHECK-NEXT: issue_hash5 diff --git a/test/Analysis/dtor-cxx11.cpp b/test/Analysis/dtor-cxx11.cpp new file mode 100644 index 000000000000..7d2e87e44e4b --- /dev/null +++ b/test/Analysis/dtor-cxx11.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true -Wno-null-dereference -verify %s +// expected-no-diagnostics + +#include "Inputs/system-header-simulator-cxx.h" + +namespace Cxx11BraceInit { + struct Foo { + ~Foo() {} + }; + + void testInitializerList() { + for (Foo foo : {Foo(), Foo()}) {} + } +} + diff --git a/test/Analysis/dtor.cpp b/test/Analysis/dtor.cpp index 11ce0d57ef4f..8d6e30a6c27c 100644 --- a/test/Analysis/dtor.cpp +++ b/test/Analysis/dtor.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -Wno-null-dereference -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors,cfg-temporary-dtors=true -Wno-null-dereference -verify %s void clang_analyzer_eval(bool); void clang_analyzer_checkInlined(bool); @@ -374,6 +374,70 @@ namespace LifetimeExtension { clang_analyzer_eval(SaveOnDestruct::lastOutput == 42); // expected-warning{{TRUE}} } + struct NRCheck { + bool bool_; + NRCheck():bool_(true) {} + ~NRCheck() __attribute__((noreturn)); + operator bool() const { return bool_; } + }; + + struct CheckAutoDestructor { + bool bool_; + CheckAutoDestructor():bool_(true) {} + operator bool() const { return bool_; } + }; + + struct CheckCustomDestructor { + bool bool_; + CheckCustomDestructor():bool_(true) {} + ~CheckCustomDestructor(); + operator bool() const { return bool_; } + }; + + bool testUnnamedNR() { + if (NRCheck()) + return true; + return false; + } + + bool testNamedNR() { + if (NRCheck c = NRCheck()) + return true; + return false; + } + + bool testUnnamedAutoDestructor() { + if (CheckAutoDestructor()) + return true; + return false; + } + + bool testNamedAutoDestructor() { + if (CheckAutoDestructor c = CheckAutoDestructor()) + return true; + return false; + } + + bool testUnnamedCustomDestructor() { + if (CheckCustomDestructor()) + return true; + return false; + } + + // This case used to cause an unexpected "Undefined or garbage value returned + // to caller" warning + bool testNamedCustomDestructor() { + if (CheckCustomDestructor c = CheckCustomDestructor()) + return true; + return false; + } + + bool testMultipleTemporariesCustomDestructor() { + if (CheckCustomDestructor c = (CheckCustomDestructor(), CheckCustomDestructor())) + return true; + return false; + } + class VirtualDtorBase { public: int value; @@ -416,6 +480,11 @@ namespace NoReturn { f(&x); *x = 47; // no warning } + + void g2(int *x) { + if (! x) NR(); + *x = 47; // no warning + } } namespace PseudoDtor { diff --git a/test/Analysis/dynamic-cast.cpp b/test/Analysis/dynamic-cast.cpp index 6bb571de4776..b48ee5b8efad 100644 --- a/test/Analysis/dynamic-cast.cpp +++ b/test/Analysis/dynamic-cast.cpp @@ -169,7 +169,7 @@ int testCastToVoidStar() { return *res; // no warning } -int testReferenceSuccesfulCast() { +int testReferenceSuccessfulCast() { B rb; B &b = dynamic_cast(rb); int *x = 0; diff --git a/test/Analysis/exercise-ps.c b/test/Analysis/exercise-ps.c index 675dd4ebf612..03b6874b68ee 100644 --- a/test/Analysis/exercise-ps.c +++ b/test/Analysis/exercise-ps.c @@ -19,5 +19,5 @@ static void f2(void *buf) { F12_typedef* x; x = f2_helper(); memcpy((&x[1]), (buf), 1); // expected-warning{{implicitly declaring library function 'memcpy' with type 'void *(void *, const void *}} \ - // expected-note{{please include the header or explicitly provide a declaration for 'memcpy'}} + // expected-note{{include the header or explicitly provide a declaration for 'memcpy'}} } diff --git a/test/Analysis/idempotent-operations-limited-loops.c b/test/Analysis/idempotent-operations-limited-loops.c deleted file mode 100644 index c8c51cf87a58..000000000000 --- a/test/Analysis/idempotent-operations-limited-loops.c +++ /dev/null @@ -1,21 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations -analyzer-max-loop 3 -verify %s -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations -analyzer-max-loop 4 -verify %s -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations %s -verify - -void always_warning() { int *p = 0; *p = 0xDEADBEEF; } // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} - -// This test case previously caused a bogus idempotent operation warning -// due to us not properly culling warnings due to incomplete analysis of loops. -int pr8403() -{ - int i; - for(i=0; i<10; i++) - { - int j; - for(j=0; j+1> zero); // expected-warning {{The right operand to '>>' is always 0}} - - // 0 op x - test(zero + x); // expected-warning {{The left operand to '+' is always 0}} - test(zero - x); // expected-warning {{The left operand to '-' is always 0}} - test(zero / x); // expected-warning {{The left operand to '/' is always 0}} - test(zero * x); // expected-warning {{The left operand to '*' is always 0}} - test(zero & x); // expected-warning {{The left operand to '&' is always 0}} - test(zero | x); // expected-warning {{The left operand to '|' is always 0}} - test(zero ^ x); // expected-warning {{The left operand to '^' is always 0}} - test(zero << x); // expected-warning {{The left operand to '<<' is always 0}} - test(zero >> x); // expected-warning {{The left operand to '>>' is always 0}} - - // Overwrite the values so these aren't marked as Pseudoconstants - x = 1; - zero = 2; - one = 3; - - return x + zero + one; -} - -void floats(float x) { - test_f(x * 1.0); // no-warning - test_f(x * 1.0F); // no-warning -} - -// Ensure that we don't report false poitives in complex loops -void bailout() { - int unused = 0, result = 4; - result = result; // expected-warning {{Assigned value is always the same as the existing value}} - - for (unsigned bg = 0; bg < 1024; bg ++) { - result = bg * result; // no-warning - - for (int i = 0; i < 256; i++) { - unused *= i; // no-warning - } - } -} - -// Relaxed liveness - check that we don't kill liveness at assignments -typedef unsigned uintptr_t; -void kill_at_assign() { - short array[2]; - uintptr_t x = (uintptr_t) array; - short *p = (short *) x; - - // The following branch should be infeasible. - if (!(p = &array[0])) { // expected-warning{{Assigned value is always the same as the existing value}} - p = 0; - *p = 1; // no-warning - } -} - -// False positive tests - -unsigned false1() { - int a = 10; - return a * (5 - 2 - 3); // no-warning -} - -enum testenum { enum1 = 0, enum2 }; -unsigned false2() { - int a = 1234; - return enum1 + a; // no-warning -} - -// Self assignments of unused variables are common false positives -unsigned false3(int param, int param2) { - param = param; // no-warning - - // if a self assigned variable is used later, then it should be reported still - param2 = param2; // expected-warning{{Assigned value is always the same as the existing value}} - - unsigned nonparam = 5; - - nonparam = nonparam; // expected-warning{{Assigned value is always the same as the existing value}} - - return param2 + nonparam; -} - -// Pseudo-constants (vars only read) and constants should not be reported -unsigned false4() { - // Trivial constant - const int height = 1; - int c = 42; - test(height * c); // no-warning - - // Pseudo-constant (never changes after decl) - int width = height; - - return width * 10; // no-warning -} - -// Block pseudoconstants -void false4a() { - // Pseudo-constant - __block int a = 1; - int b = 10; - __block int c = 0; - b *= a; // no-warning - - ^{ - // Psuedoconstant block var - test(b * c); // no-warning - - // Non-pseudoconstant block var - int d = 0; - test(b * d); // expected-warning{{The right operand to '*' is always 0}} - d = 5; - test(d); - }(); - - test(a + b); -} - -// Static vars are common false positives -int false5() { - static int test = 0; - int a = 56; - a *= test; // no-warning - test++; - return a; -} - -// Non-local storage vars are considered false positives -int globalInt = 1; -int false6() { - int localInt = 23; - - localInt /= globalInt; - - return localInt; -} - -// Check that assignments filter out false positives correctly -int false7() { - int zero = 0; // pseudo-constant - int one = 1; - - int a = 55; - a = a; // expected-warning{{Assigned value is always the same as the existing value}} - a = enum1 * a; // no-warning - - int b = 123; - b = b; // no-warning - - return a; -} - -// Check truncations do not flag as self-assignments -void false8() { - int a = 10000000; - a = (short)a; // no-warning - test(a); -} - -// This test case previously flagged a warning at 'b == c' because the -// analyzer previously allowed 'UnknownVal' as the index for ElementRegions. -typedef struct RDar8431728_F { - int RDar8431728_A; - unsigned char *RDar8431728_B; - int RDar8431728_E[6]; -} RDar8431728_D; -static inline int RDar8431728_C(RDar8431728_D * s, int n, - unsigned char **RDar8431728_B_ptr) { - int xy, wrap, pred, a, b, c; - - xy = s->RDar8431728_E[n]; - wrap = s->RDar8431728_A; - - a = s->RDar8431728_B[xy - 1]; - b = s->RDar8431728_B[xy - 1 - wrap]; - c = s->RDar8431728_B[xy - wrap]; - - if (b == c) { // no-warning - pred = a; - } else { - pred = c; - } - - *RDar8431728_B_ptr = &s->RDar8431728_B[xy]; - - return pred; -} - -// - Don't warn on pointer arithmetic. This -// is often idiomatic. -unsigned rdar8601243_aux(unsigned n); -void rdar8601243() { - char arr[100]; - char *start = arr; - start = start + rdar8601243_aux(sizeof(arr) - (arr - start)); // no-warning - (void) start; -} - - -float testFloatCast(int i) { - float f = i; - - // Don't crash when trying to create a "zero" float. - return f - f; -} - diff --git a/test/Analysis/idempotent-operations.cpp b/test/Analysis/idempotent-operations.cpp deleted file mode 100644 index 966366568e23..000000000000 --- a/test/Analysis/idempotent-operations.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=alpha.deadcode.IdempotentOperations -verify %s - -// C++ specific false positives - -extern void test(int i); -extern void test_ref(int &i); - -// Test references affecting pseudoconstants -void false1() { - int a = 0; - int five = 5; - int &b = a; - test(five * a); // expected-warning {{The right operand to '*' is always 0}} - b = 4; -} - -// Test not flagging idempotent operations because we aborted the analysis -// of a path because of an unsupported construct. -struct RDar9219143_Foo { - ~RDar9219143_Foo(); - operator bool() const; -}; - -RDar9219143_Foo foo(); -unsigned RDar9219143_bar(); -void RDar9219143_test() { - unsigned i, e; - for (i = 0, e = RDar9219143_bar(); i != e; ++i) - if (foo()) - break; - if (i == e) // no-warning - return; -} - diff --git a/test/Analysis/idempotent-operations.m b/test/Analysis/idempotent-operations.m deleted file mode 100644 index 306376dd5757..000000000000 --- a/test/Analysis/idempotent-operations.m +++ /dev/null @@ -1,55 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=alpha.deadcode.IdempotentOperations,osx.cocoa.RetainCount -verify %s -// expected-no-diagnostics - -typedef signed char BOOL; -typedef unsigned long NSUInteger; -typedef struct _NSZone NSZone; -@protocol NSObject - (BOOL)isEqual:(id)object; -@end - -@interface NSObject {} - @property int locked; - @property(nonatomic, readonly) NSObject *media; -@end - -// - Don't flag idempotent operation warnings when -// a method may invalidate an instance variable. -@interface Rdar8725041 : NSObject { - id _attribute; -} - - (void) method2; -@end - -@implementation Rdar8725041 -- (BOOL) method1 { - BOOL needsUpdate = (BOOL)0; - id oldAttribute = _attribute; - [self method2]; - needsUpdate |= (_attribute != oldAttribute); // no-warning - return needsUpdate; -} - -- (void) method2 -{ - _attribute = ((void*)0); -} -@end - -// Test that the idempotent operations checker works in the prescence -// of property expressions. -void pr9116(NSObject *placeholder) { - int x = placeholder.media.locked = placeholder ? 1 : 0; -} - -// : Test that calling property setters doesn't -// trigger an assertion failure when the object is nil. -@interface RDar9130239 -@property (assign) id delegate; -@end - -void test_RDar9130239(RDar9130239 *x) { - if (x) - return; - x.delegate = x; // no-warning -} - diff --git a/test/Analysis/identical-expressions.cpp b/test/Analysis/identical-expressions.cpp index 50f341d39335..85e3322002dd 100644 --- a/test/Analysis/identical-expressions.cpp +++ b/test/Analysis/identical-expressions.cpp @@ -2,6 +2,21 @@ /* Only one expected warning per function allowed at the very end. */ +int func(void) +{ + return 0; +} + +int func2(void) +{ + return 0; +} + +int funcParam(int a) +{ + return 0; +} + /* '!=' operator*/ /* '!=' with float */ @@ -295,6 +310,38 @@ int checkNotEqualNestedBinaryOpIntPointerCompare2(void) { } /* end '!=' int* */ +/* '!=' with function*/ + +int checkNotEqualSameFunction() { + unsigned a = 0; + unsigned b = 1; + int res = (a+func() != a+func()); // no warning + return (0); +} + +int checkNotEqualDifferentFunction() { + unsigned a = 0; + unsigned b = 1; + int res = (a+func() != a+func2()); // no warning + return (0); +} + +int checkNotEqualSameFunctionSameParam() { + unsigned a = 0; + unsigned b = 1; + int res = (a+funcParam(a) != a+funcParam(a)); // no warning + return (0); +} + +int checkNotEqualSameFunctionDifferentParam() { + unsigned a = 0; + unsigned b = 1; + int res = (a+funcParam(a) != a+funcParam(b)); // no warning + return (0); +} + +/* end '!=' with function*/ + /* end '!=' */ @@ -526,6 +573,37 @@ int checkEqualNestedBinaryOpIntCompare3(void) { return (0); } +/* '==' with function*/ + +int checkEqualSameFunction() { + unsigned a = 0; + unsigned b = 1; + int res = (a+func() == a+func()); // no warning + return (0); +} + +int checkEqualDifferentFunction() { + unsigned a = 0; + unsigned b = 1; + int res = (a+func() == a+func2()); // no warning + return (0); +} + +int checkEqualSameFunctionSameParam() { + unsigned a = 0; + unsigned b = 1; + int res = (a+funcParam(a) == a+funcParam(a)); // no warning + return (0); +} + +int checkEqualSameFunctionDifferentParam() { + unsigned a = 0; + unsigned b = 1; + int res = (a+funcParam(a) == a+funcParam(b)); // no warning + return (0); +} + +/* end '==' with function*/ /* end EQ int */ @@ -940,3 +1018,496 @@ int checkGreaterThanNestedBinaryOpIntCompare3(void) { /* end GT with int */ /* end GT */ + + +/* Checking use of identical expressions in conditional operator*/ + +unsigned test_unsigned(unsigned a) { + unsigned b = 1; + a = a > 5 ? b : b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} + return a; +} + +void test_signed() { + int a = 0; + a = a > 5 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_bool(bool a) { + a = a > 0 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_float() { + float a = 0; + float b = 0; + a = a > 5 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +const char *test_string() { + float a = 0; + return a > 5 ? "abc" : "abc"; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_unsigned_expr() { + unsigned a = 0; + unsigned b = 0; + a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_signed_expr() { + int a = 0; + int b = 1; + a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_bool_expr(bool a) { + bool b = 0; + a = a > 0 ? a&&b : a&&b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_unsigned_expr_negative() { + unsigned a = 0; + unsigned b = 0; + a = a > 5 ? a+b : b+a; // no warning +} + +void test_signed_expr_negative() { + int a = 0; + int b = 1; + a = a > 5 ? b+a : a+b; // no warning +} + +void test_bool_expr_negative(bool a) { + bool b = 0; + a = a > 0 ? a&&b : b&&a; // no warning +} + +void test_float_expr_positive() { + float a = 0; + float b = 0; + a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_expr_positive_func() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a+func() : a+func(); // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_expr_negative_func() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a+func() : a+func2(); // no warning +} + +void test_expr_positive_funcParam() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a+funcParam(b) : a+funcParam(b); // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_expr_negative_funcParam() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a+funcParam(a) : a+funcParam(b); // no warning +} + +void test_expr_positive_inc() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a++ : a++; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_expr_negative_inc() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a++ : b++; // no warning +} + +void test_expr_positive_assign() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a=1 : a=1; // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_expr_negative_assign() { + unsigned a = 0; + unsigned b = 1; + a = a > 5 ? a=1 : a=2; // no warning +} + +void test_signed_nested_expr() { + int a = 0; + int b = 1; + int c = 3; + a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(c+a)); // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_signed_nested_expr_negative() { + int a = 0; + int b = 1; + int c = 3; + a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(a+c)); // no warning +} + +void test_signed_nested_cond_expr_negative() { + int a = 0; + int b = 1; + int c = 3; + a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 2 : 4); // no warning +} + +void test_signed_nested_cond_expr() { + int a = 0; + int b = 1; + int c = 3; + a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 4 : 4); // expected-warning {{identical expressions on both sides of ':' in conditional expression}} +} + +void test_identical_branches1(bool b) { + int i = 0; + if (b) { // expected-warning {{true and false branches are identical}} + ++i; + } else { + ++i; + } +} + +void test_identical_branches2(bool b) { + int i = 0; + if (b) { // expected-warning {{true and false branches are identical}} + ++i; + } else + ++i; +} + +void test_identical_branches3(bool b) { + int i = 0; + if (b) { // no warning + ++i; + } else { + i++; + } +} + +void test_identical_branches4(bool b) { + int i = 0; + if (b) { // expected-warning {{true and false branches are identical}} + } else { + } +} + +void test_identical_branches_break(bool b) { + while (true) { + if (b) // expected-warning {{true and false branches are identical}} + break; + else + break; + } +} + +void test_identical_branches_continue(bool b) { + while (true) { + if (b) // expected-warning {{true and false branches are identical}} + continue; + else + continue; + } +} + +void test_identical_branches_func(bool b) { + if (b) // expected-warning {{true and false branches are identical}} + func(); + else + func(); +} + +void test_identical_branches_func_arguments(bool b) { + if (b) // no-warning + funcParam(1); + else + funcParam(2); +} + +void test_identical_branches_cast1(bool b) { + long v = -7; + if (b) // no-warning + v = (signed int) v; + else + v = (unsigned int) v; +} + +void test_identical_branches_cast2(bool b) { + long v = -7; + if (b) // expected-warning {{true and false branches are identical}} + v = (signed int) v; + else + v = (signed int) v; +} + +int test_identical_branches_return_int(bool b) { + int i = 0; + if (b) { // expected-warning {{true and false branches are identical}} + i++; + return i; + } else { + i++; + return i; + } +} + +int test_identical_branches_return_func(bool b) { + if (b) { // expected-warning {{true and false branches are identical}} + return func(); + } else { + return func(); + } +} + +void test_identical_branches_for(bool b) { + int i; + int j; + if (b) { // expected-warning {{true and false branches are identical}} + for (i = 0, j = 0; i < 10; i++) + j += 4; + } else { + for (i = 0, j = 0; i < 10; i++) + j += 4; + } +} + +void test_identical_branches_while(bool b) { + int i = 10; + if (b) { // expected-warning {{true and false branches are identical}} + while (func()) + i--; + } else { + while (func()) + i--; + } +} + +void test_identical_branches_while_2(bool b) { + int i = 10; + if (b) { // no-warning + while (func()) + i--; + } else { + while (func()) + i++; + } +} + +void test_identical_branches_do_while(bool b) { + int i = 10; + if (b) { // expected-warning {{true and false branches are identical}} + do { + i--; + } while (func()); + } else { + do { + i--; + } while (func()); + } +} + +void test_identical_branches_if(bool b, int i) { + if (b) { // expected-warning {{true and false branches are identical}} + if (i < 5) + i += 10; + } else { + if (i < 5) + i += 10; + } +} + +void test_identical_bitwise1() { + int a = 5 | 5; // expected-warning {{identical expressions on both sides of bitwise operator}} +} + +void test_identical_bitwise2() { + int a = 5; + int b = a | a; // expected-warning {{identical expressions on both sides of bitwise operator}} +} + +void test_identical_bitwise3() { + int a = 5; + int b = (a | a); // expected-warning {{identical expressions on both sides of bitwise operator}} +} + +void test_identical_bitwise4() { + int a = 4; + int b = a | 4; // no-warning +} + +void test_identical_bitwise5() { + int a = 4; + int b = 4; + int c = a | b; // no-warning +} + +void test_identical_bitwise6() { + int a = 5; + int b = a | 4 | a; // expected-warning {{identical expressions on both sides of bitwise operator}} +} + +void test_identical_bitwise7() { + int a = 5; + int b = func() | func(); // no-warning +} + +void test_identical_logical1(int a) { + if (a == 4 && a == 4) // expected-warning {{identical expressions on both sides of logical operator}} + ; +} + +void test_identical_logical2(int a) { + if (a == 4 || a == 5 || a == 4) // expected-warning {{identical expressions on both sides of logical operator}} + ; +} + +void test_identical_logical3(int a) { + if (a == 4 || a == 5 || a == 6) // no-warning + ; +} + +void test_identical_logical4(int a) { + if (a == func() || a == func()) // no-warning + ; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wlogical-op-parentheses" +void test_identical_logical5(int x, int y) { + if (x == 4 && y == 5 || x == 4 && y == 6) // no-warning + ; +} + +void test_identical_logical6(int x, int y) { + if (x == 4 && y == 5 || x == 4 && y == 5) // expected-warning {{identical expressions on both sides of logical operator}} + ; +} + +void test_identical_logical7(int x, int y) { + // FIXME: We should warn here + if (x == 4 && y == 5 || x == 4) + ; +} + +void test_identical_logical8(int x, int y) { + // FIXME: We should warn here + if (x == 4 || y == 5 && x == 4) + ; +} + +void test_identical_logical9(int x, int y) { + // FIXME: We should warn here + if (x == 4 || x == 4 && y == 5) + ; +} +#pragma clang diagnostic pop + +void test_warn_chained_if_stmts_1(int x) { + if (x == 1) + ; + else if (x == 1) // expected-warning {{expression is identical to previous condition}} + ; +} + +void test_warn_chained_if_stmts_2(int x) { + if (x == 1) + ; + else if (x == 1) // expected-warning {{expression is identical to previous condition}} + ; + else if (x == 1) // expected-warning {{expression is identical to previous condition}} + ; +} + +void test_warn_chained_if_stmts_3(int x) { + if (x == 1) + ; + else if (x == 2) + ; + else if (x == 1) // expected-warning {{expression is identical to previous condition}} + ; +} + +void test_warn_chained_if_stmts_4(int x) { + if (x == 1) + ; + else if (func()) + ; + else if (x == 1) // expected-warning {{expression is identical to previous condition}} + ; +} + +void test_warn_chained_if_stmts_5(int x) { + if (x & 1) + ; + else if (x & 1) // expected-warning {{expression is identical to previous condition}} + ; +} + +void test_warn_chained_if_stmts_6(int x) { + if (x == 1) + ; + else if (x == 2) + ; + else if (x == 2) // expected-warning {{expression is identical to previous condition}} + ; + else if (x == 3) + ; +} + +void test_warn_chained_if_stmts_7(int x) { + if (x == 1) + ; + else if (x == 2) + ; + else if (x == 3) + ; + else if (x == 2) // expected-warning {{expression is identical to previous condition}} + ; + else if (x == 5) + ; +} + +void test_warn_chained_if_stmts_8(int x) { + if (x == 1) + ; + else if (x == 2) + ; + else if (x == 3) + ; + else if (x == 2) // expected-warning {{expression is identical to previous condition}} + ; + else if (x == 5) + ; + else if (x == 3) // expected-warning {{expression is identical to previous condition}} + ; + else if (x == 7) + ; +} + +void test_nowarn_chained_if_stmts_1(int x) { + if (func()) + ; + else if (func()) // no-warning + ; +} + +void test_nowarn_chained_if_stmts_2(int x) { + if (func()) + ; + else if (x == 1) + ; + else if (func()) // no-warning + ; +} + +void test_nowarn_chained_if_stmts_3(int x) { + if (x++) + ; + else if (x++) // no-warning + ; +} diff --git a/test/Analysis/inline.cpp b/test/Analysis/inline.cpp index ca126ddf7f38..183df16e124d 100644 --- a/test/Analysis/inline.cpp +++ b/test/Analysis/inline.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config ipa=inlining -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config ipa=inlining -analyzer-config c++-allocator-inlining=true -verify %s void clang_analyzer_eval(bool); void clang_analyzer_checkInlined(bool); @@ -9,6 +9,7 @@ extern "C" void *malloc(size_t); // This is the standard placement new. inline void* operator new(size_t, void* __p) throw() { + clang_analyzer_checkInlined(true);// expected-warning{{TRUE}} return __p; } diff --git a/test/Analysis/inlining/containers.cpp b/test/Analysis/inlining/containers.cpp index 73b2957ad6de..c757da66bedb 100644 --- a/test/Analysis/inlining/containers.cpp +++ b/test/Analysis/inlining/containers.cpp @@ -103,7 +103,10 @@ public: ~MySet() { delete[] storage; } bool isEmpty() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return size == 0; } @@ -114,23 +117,35 @@ public: }; iterator begin() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return iterator(storage); } iterator end() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return iterator(storage+size); } typedef int *raw_iterator; raw_iterator raw_begin() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return storage; } raw_iterator raw_end() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return storage + size; } }; @@ -145,7 +160,10 @@ public: } void useIterator(iterator i) { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif } }; @@ -174,7 +192,10 @@ public: typedef IterImpl wrapped_iterator; wrapped_iterator begin() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return IterImpl(impl.begin()); } }; @@ -193,7 +214,10 @@ public: typedef MySet::iterator iterator; iterator start() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); +#if INLINE + // expected-warning@-2 {{TRUE}} +#endif return impl.begin(); } }; @@ -212,7 +236,10 @@ public: using iterator = MySet::iterator; iterator start() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return impl.begin(); } }; @@ -233,7 +260,10 @@ public: }; iterator start() { - clang_analyzer_checkInlined(true); // expected-warning {{TRUE}} + clang_analyzer_checkInlined(true); + #if INLINE + // expected-warning@-2 {{TRUE}} + #endif return iterator{impl.begin().impl}; } }; diff --git a/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp b/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp index d219446fc963..e23d4e23a48f 100644 --- a/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp +++ b/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify -Wno-reinterpret-base-class %s void clang_analyzer_eval(bool); diff --git a/test/Analysis/inlining/path-notes.cpp b/test/Analysis/inlining/path-notes.cpp index a354e14df9ed..1e230740cf05 100644 --- a/test/Analysis/inlining/path-notes.cpp +++ b/test/Analysis/inlining/path-notes.cpp @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config c++-inlining=destructors -std=c++11 -verify %s -// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config c++-inlining=destructors -std=c++11 -analyzer-config path-diagnostics-alternate=false %s -o %t.plist +// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config c++-inlining=destructors -std=c++11 -verify -Wno-tautological-undefined-compare %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config c++-inlining=destructors -std=c++11 -analyzer-config path-diagnostics-alternate=false %s -o %t.plist -Wno-tautological-undefined-compare // RUN: FileCheck --input-file=%t.plist %s class Foo { @@ -1506,7 +1506,7 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line120 -// CHECK-NEXT: col19 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -1535,7 +1535,7 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line120 -// CHECK-NEXT: col19 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -1787,7 +1787,7 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line128 -// CHECK-NEXT: col32 +// CHECK-NEXT: col33 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -2452,12 +2452,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line105 -// CHECK-NEXT: col21 +// CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line105 -// CHECK-NEXT: col28 +// CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -2469,7 +2469,7 @@ namespace PR17746 { // CHECK-NEXT: location // CHECK-NEXT: // CHECK-NEXT: line105 -// CHECK-NEXT: col21 +// CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges @@ -2477,12 +2477,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line105 -// CHECK-NEXT: col21 +// CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line105 -// CHECK-NEXT: col28 +// CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: diff --git a/test/Analysis/inlining/stl.cpp b/test/Analysis/inlining/stl.cpp index c153174d27ad..711c30f1031d 100644 --- a/test/Analysis/inlining/stl.cpp +++ b/test/Analysis/inlining/stl.cpp @@ -42,3 +42,8 @@ void testBasicStringSuppression_append() { std::basic_string v; v += 'c'; // no-warning } + +void testBasicStringSuppression_assign(std::basic_string &v, + const std::basic_string &v2) { + v = v2; +} diff --git a/test/Analysis/kmalloc-linux.c b/test/Analysis/kmalloc-linux.c new file mode 100644 index 000000000000..87c1107a102e --- /dev/null +++ b/test/Analysis/kmalloc-linux.c @@ -0,0 +1,58 @@ +// RUN: %clang -target x86_64-unknown-linux --analyze %s + +#include "Inputs/system-header-simulator.h" + +#define __GFP_ZERO 0x8000 +#define NULL ((void *)0) + +void *kmalloc(size_t, int); + +struct test { +}; + +void foo(struct test *); + +void test_zeroed() { + struct test **list, *t; + int i; + + list = kmalloc(sizeof(*list) * 10, __GFP_ZERO); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; + foo(t); + } + free(list); // no-warning +} + +void test_nonzero() { + struct test **list, *t; + int i; + + list = kmalloc(sizeof(*list) * 10, 0); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; // expected-warning{{undefined}} + foo(t); + } + free(list); +} + +void test_indeterminate(int flags) { + struct test **list, *t; + int i; + + list = kmalloc(sizeof(*list) * 10, flags); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; // expected-warning{{undefined}} + foo(t); + } + free(list); +} diff --git a/test/Analysis/malloc-three-arg.c b/test/Analysis/malloc-three-arg.c new file mode 100644 index 000000000000..01b08aeda51a --- /dev/null +++ b/test/Analysis/malloc-three-arg.c @@ -0,0 +1,58 @@ +// RUN: %clang -target x86_64-unknown-freebsd --analyze %s + +#include "Inputs/system-header-simulator.h" + +#define M_ZERO 0x0100 +#define NULL ((void *)0) + +void *malloc(size_t, void *, int); + +struct test { +}; + +void foo(struct test *); + +void test_zeroed() { + struct test **list, *t; + int i; + + list = malloc(sizeof(*list) * 10, NULL, M_ZERO); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; + foo(t); + } + free(list); // no-warning +} + +void test_nonzero() { + struct test **list, *t; + int i; + + list = malloc(sizeof(*list) * 10, NULL, 0); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; // expected-warning{{undefined}} + foo(t); + } + free(list); +} + +void test_indeterminate(int flags) { + struct test **list, *t; + int i; + + list = malloc(sizeof(*list) * 10, NULL, flags); + if (list == NULL) + return; + + for (i = 0; i < 10; i++) { + t = list[i]; // expected-warning{{undefined}} + foo(t); + } + free(list); +} diff --git a/test/Analysis/malloc.c b/test/Analysis/malloc.c index 58d40a31a835..9c08bbcb1c0f 100644 --- a/test/Analysis/malloc.c +++ b/test/Analysis/malloc.c @@ -270,6 +270,222 @@ void PR7217() { buf[1] = 'c'; // not crash } +void cast_emtpy_struct() { + struct st { + }; + + struct st *s = malloc(sizeof(struct st)); // no-warning + free(s); +} + +void cast_struct_1() { + struct st { + int i[100]; + char j[]; + }; + + struct st *s = malloc(sizeof(struct st)); // no-warning + free(s); +} + +void cast_struct_2() { + struct st { + int i[100]; + char j[0]; + }; + + struct st *s = malloc(sizeof(struct st)); // no-warning + free(s); +} + +void cast_struct_3() { + struct st { + int i[100]; + char j[1]; + }; + + struct st *s = malloc(sizeof(struct st)); // no-warning + free(s); +} + +void cast_struct_4() { + struct st { + int i[100]; + char j[2]; + }; + + struct st *s = malloc(sizeof(struct st)); // no-warning + free(s); +} + +void cast_struct_5() { + struct st { + char i[200]; + char j[1]; + }; + + struct st *s = malloc(sizeof(struct st) - sizeof(char)); // no-warning + free(s); +} + +void cast_struct_warn_1() { + struct st { + int i[100]; + char j[2]; + }; + + struct st *s = malloc(sizeof(struct st) + 2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_warn_2() { + struct st { + int i[100]; + char j[2]; + }; + + struct st *s = malloc(2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_1() { + struct st { + int i[100]; + char j[]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // no-warning + free(s); +} + +void cast_struct_flex_array_2() { + struct st { + int i[100]; + char j[0]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // no-warning + free(s); +} + +void cast_struct_flex_array_3() { + struct st { + int i[100]; + char j[1]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // no-warning + free(s); +} + +void cast_struct_flex_array_4() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[]; + }; + + struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning + free(s); +} + +void cast_struct_flex_array_5() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[0]; + }; + + struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning + free(s); +} + +void cast_struct_flex_array_6() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[1]; + }; + + struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning + free(s); +} + +void cast_struct_flex_array_warn_1() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[]; + }; + + struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_warn_2() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[0]; + }; + + struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_warn_3() { + struct foo { + char f[32]; + }; + struct st { + char i[100]; + struct foo data[1]; + }; + + struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_warn_4() { + struct st { + int i[100]; + int j[]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_warn_5() { + struct st { + int i[100]; + int j[0]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + +void cast_struct_flex_array_warn_6() { + struct st { + int i[100]; + int j[1]; + }; + + struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}} + free(s); +} + void mallocCastToVoid() { void *p = malloc(2); const void *cp = p; // not crash diff --git a/test/Analysis/malloc.m b/test/Analysis/malloc.m index ad16db52dff9..9201c2b75fe6 100644 --- a/test/Analysis/malloc.m +++ b/test/Analysis/malloc.m @@ -49,4 +49,9 @@ void _ArrayCreate() { void testNSDataTruePositiveLeak() { char *b = (char *)malloc(12); NSData *d = [[NSData alloc] initWithBytes: b length: 12]; // expected-warning {{Potential leak of memory pointed to by 'b'}} +} + +id wrapInNSValue() { + void *buffer = malloc(4); + return [NSValue valueWithPointer:buffer]; // no-warning } \ No newline at end of file diff --git a/test/Analysis/member-expr.cpp b/test/Analysis/member-expr.cpp index cf437387d6a6..f8dd324e9857 100644 --- a/test/Analysis/member-expr.cpp +++ b/test/Analysis/member-expr.cpp @@ -1,5 +1,6 @@ // RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection %s -verify +void clang_analyzer_checkInlined(bool); void clang_analyzer_eval(int); namespace EnumsViaMemberExpr { @@ -20,4 +21,21 @@ namespace EnumsViaMemberExpr { void testEnumPtr(Foo *Baz) { clang_analyzer_eval(Baz->Bar == Foo::Bar); // expected-warning{{TRUE}} } -} \ No newline at end of file +} + +namespace PR19531 { + struct A { + A() : x(0) {} + bool h() const; + int x; + }; + + struct B { + void g(bool (A::*mp_f)() const) { + // This used to trigger an assertion because the 'this' pointer is a + // temporary. + (A().*mp_f)(); + } + void f() { g(&A::h); } + }; +} diff --git a/test/Analysis/method-arg-decay.m b/test/Analysis/method-arg-decay.m index 0af9e3e883e3..a222346861a5 100644 --- a/test/Analysis/method-arg-decay.m +++ b/test/Analysis/method-arg-decay.m @@ -67,12 +67,12 @@ extern NSMutableArray *XCFindPossibleKeyModules(PBXModule *module, BOOL useExpos @interface XCExtendedTabView : NSTabView { } @end @class PBXProjectDocument, PBXFileReference, PBXModule, XCWindowTool; -@interface XCPerspectiveModule : PBXProjectModule { // expected-note {{required for direct or indirect protocol 'PBXSelectionTarget'}} +@interface XCPerspectiveModule : PBXProjectModule { XCExtendedTabView *_perspectivesTabView; } - (PBXModule *) moduleForTab:(NSTabViewItem *)item; @end -@implementation XCPerspectiveModule // expected-warning {{method 'performAction:withSelection:' in protocol not implemented}}} +@implementation XCPerspectiveModule // expected-warning {{method 'performAction:withSelection:' in protocol 'PBXSelectionTarget' not implemented}}} + (void) openForProjectDocument:(PBXProjectDocument *)projectDocument { } - (PBXModule *) type:(Class)type inPerspective:(id)perspectiveIdentifer matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data { diff --git a/test/Analysis/misc-ps-region-store.cpp b/test/Analysis/misc-ps-region-store.cpp index 6a873f01b3d3..af9f7cf838e0 100644 --- a/test/Analysis/misc-ps-region-store.cpp +++ b/test/Analysis/misc-ps-region-store.cpp @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions -// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions +// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions -Wno-tautological-undefined-compare +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions -Wno-tautological-undefined-compare void clang_analyzer_warnIfReached(); @@ -588,6 +588,7 @@ void rdar11401827() { int x = int(); if (!x) { clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} + ; // Suppress warning that both branches are identical } else { clang_analyzer_warnIfReached(); // no-warning diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m index ba88deca5aeb..58166484b822 100644 --- a/test/Analysis/misc-ps-region-store.m +++ b/test/Analysis/misc-ps-region-store.m @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s -// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s +// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-checker=core,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s typedef long unsigned int size_t; void *memcpy(void *, const void *, size_t); @@ -253,7 +253,7 @@ void rdar_7249327(unsigned int A[2*32]) { a = A; b = B; - n = *a++; // expected-warning{{Assigned value is always the same as the existing value}} + n = *a++; if (n) x += *b++; // no-warning } @@ -1115,7 +1115,7 @@ void pr8015_D_FIXME() { int number = pr8015_A(); const char *numbers[] = { "zero" }; if (number == 0) { - if (numbers[number] == numbers[0]) // expected-warning{{Both operands to '==' always have the same value}} + if (numbers[number] == numbers[0]) return; // Unreachable. int *p = 0; @@ -1362,5 +1362,5 @@ int rdar11125868() { int rdar11125868_positive() { int integersStackArray[1]; int *integers = integersStackArray; - return integers[0] == 0; // expected-warning {{he left operand of '==' is a}} + return integers[0] == 0; // expected-warning {{The left operand of '==' is a}} } diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m index b261b103fab9..6da9604467de 100644 --- a/test/Analysis/misc-ps.m +++ b/test/Analysis/misc-ps.m @@ -1,6 +1,6 @@ // NOTE: Use '-fobjc-gc' to test the analysis being run twice, and multiple reports are not issued. -// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s +// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s #ifndef __clang_analyzer__ #error __clang_analyzer__ not defined @@ -80,11 +80,11 @@ unsigned r6268365Aux(); void r6268365() { unsigned x = 0; - x &= r6268365Aux(); // expected-warning{{The left operand to '&=' is always 0}} + x &= r6268365Aux(); unsigned j = 0; if (x == 0) ++j; - if (x == 0) x = x / j; // expected-warning{{Assigned value is always the same as the existing value}} expected-warning{{The right operand to '/' is always 1}} + if (x == 0) x = x / j; } void divzeroassume(unsigned x, unsigned j) { @@ -412,14 +412,14 @@ void test_trivial_symbolic_comparison(int *x) { int test_trivial_symbolic_comparison_aux(); int a = test_trivial_symbolic_comparison_aux(); int b = a; - if (a != b) { // expected-warning{{Both operands to '!=' always have the same value}} + if (a != b) { int *p = 0; *p = 0xDEADBEEF; // no-warning } a = a == 1; b = b == 1; - if (a != b) { // expected-warning{{Both operands to '!=' always have the same value}} + if (a != b) { int *p = 0; *p = 0xDEADBEEF; // no-warning } diff --git a/test/Analysis/new.cpp b/test/Analysis/new.cpp index 105a973ccc92..e262aa727e2b 100644 --- a/test/Analysis/new.cpp +++ b/test/Analysis/new.cpp @@ -267,7 +267,7 @@ void testNullDtorDerived() { clang_analyzer_eval(true); // no warn } -//Deleting a non class pointer should not crash/warn +//Deleting a non-class pointer should not crash/warn void test_var_delete() { int *v = new int; delete v; // no crash/warn diff --git a/test/Analysis/no-outofbounds.c b/test/Analysis/no-outofbounds.c index 84f86d79bd57..d4012794d5c7 100644 --- a/test/Analysis/no-outofbounds.c +++ b/test/Analysis/no-outofbounds.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,alpha.unix,alpha.security.ArrayBound -analyzer-store=region -verify %s +// expected-no-diagnostics //===----------------------------------------------------------------------===// // This file tests cases where we should not flag out-of-bounds warnings. @@ -24,8 +25,7 @@ void free(void *); void field() { struct vec { size_t len; int data[0]; }; - // FIXME: Not warn for this. - struct vec *a = malloc(sizeof(struct vec) + 10); // expected-warning {{Cast a region whose size is not a multiple of the destination type size}} + struct vec *a = malloc(sizeof(struct vec) + 10*sizeof(int)); a->len = 10; a->data[1] = 5; // no-warning free(a); diff --git a/test/Analysis/nonnull.m b/test/Analysis/nonnull.m index c32a7f780ece..0cea80b536d8 100644 --- a/test/Analysis/nonnull.m +++ b/test/Analysis/nonnull.m @@ -1,7 +1,9 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -w -verify %s @interface MyObject - (void)takePointer:(void *)ptr __attribute__((nonnull(1))); +- (void)takePointerArg:(void *)__attribute__((nonnull)) ptr; + @end void testNonNullMethod(int *p, MyObject *obj) { @@ -21,3 +23,55 @@ void testSubclass(int *p, Subclass *obj) { return; [obj takePointer:p]; // expected-warning{{nonnull}} } + +void testSubclassArg(int *p, Subclass *obj) { + if (p) + return; + [obj takePointerArg:p]; // expected-warning{{nonnull}} +} + + +union rdar16153464_const_cp_t { + const struct rdar16153464_cczp *zp; + const struct rdar16153464_cczp_prime *prime; +} __attribute__((transparent_union)); + +struct rdar16153464_header { + union rdar16153464_const_cp_t cp; + unsigned char pad[16 - sizeof(union rdar16153464_const_cp_t *)]; +} __attribute__((aligned(16))); + + +struct rdar16153464_full_ctx { + struct rdar16153464_header hdr; +} __attribute__((aligned(16))); + + +struct rdar16153464_pub_ctx { + struct rdar16153464_header hdr; +} __attribute__((aligned(16))); + + +union rdar16153464_full_ctx_t { + struct rdar16153464_full_ctx *_full; + struct rdar16153464_header *hdr; + struct rdar16153464_body *body; + struct rdar16153464_public *pub; +} __attribute__((transparent_union)); + +union rdar16153464_pub_ctx_t { + struct rdar16153464_pub_ctx *_pub; + struct rdar16153464_full_ctx *_full; + struct rdar16153464_header *hdr; + struct rdar16153464_body *body; + struct rdar16153464_public *pub; + union rdar16153464_full_ctx_t innert; +} __attribute__((transparent_union)); + +int rdar16153464(union rdar16153464_full_ctx_t inner) +{ + extern void rdar16153464_check(union rdar16153464_pub_ctx_t outer) __attribute((nonnull(1))); + rdar16153464_check((union rdar16153464_pub_ctx_t){ .innert = inner }); // no-warning + rdar16153464_check(inner); // no-warning + rdar16153464_check(0); // expected-warning{{nonnull}} +} diff --git a/test/Analysis/null-deref-ps.c b/test/Analysis/null-deref-ps.c index 4dc8fc4ec991..240e8edb13d2 100644 --- a/test/Analysis/null-deref-ps.c +++ b/test/Analysis/null-deref-ps.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.deadcode.IdempotentOperations,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -analyzer-purge=none -verify %s -Wno-error=return-type -// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.deadcode.IdempotentOperations,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -verify %s -Wno-error=return-type +// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -analyzer-purge=none -verify %s -Wno-error=return-type +// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -verify %s -Wno-error=return-type typedef unsigned uintptr_t; @@ -64,7 +64,7 @@ int f4_b() { short *p = x; // expected-warning{{incompatible integer to pointer conversion}} // The following branch should be infeasible. - if (!(p == &array[0])) { // expected-warning{{Both operands to '==' always have the same value}} + if (!(p == &array[0])) { p = 0; *p = 1; // no-warning } @@ -297,7 +297,7 @@ typedef void (*NoConstType)(int*); int foo10595327(int b) { void (*fp)(int *); // We use path sensitivity to get the function declaration. Even when the - // function pointer is cast to non pointer-to-const parameter type, we can + // function pointer is cast to non-pointer-to-const parameter type, we can // find the right function declaration. if (b > 5) fp = (NoConstType)ttt2; diff --git a/test/Analysis/objc-arc.m b/test/Analysis/objc-arc.m index ba590d614e8d..92432b1ea802 100644 --- a/test/Analysis/objc-arc.m +++ b/test/Analysis/objc-arc.m @@ -138,7 +138,7 @@ NSString *CreateNSString(); void from_cf() { id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning{{never read}} id obj2 = (__bridge_transfer NSString*)CFCreateString(); - [obj2 self]; // Add a use, to show we can use the object after it has been transfered. + [obj2 self]; // Add a use, to show we can use the object after it has been transferred. id obj3 = (__bridge id)CFGetSomething(); [obj3 self]; // Add a use, to show we can use the object after it has been bridged. id obj4 = (__bridge NSString*)CFGetString(); // expected-warning{{never read}} diff --git a/test/Analysis/objc-boxing.m b/test/Analysis/objc-boxing.m index 98310b52f49d..c23192e17e5d 100644 --- a/test/Analysis/objc-boxing.m +++ b/test/Analysis/objc-boxing.m @@ -1,4 +1,6 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,osx.cocoa.NonNilReturnValue,debug.ExprInspection -analyzer-store=region -verify %s + +void clang_analyzer_eval(int); typedef signed char BOOL; typedef long NSInteger; @@ -41,4 +43,15 @@ id const_char_pointer(int *x) { if (x) return @(3); return @(*x); // expected-warning {{Dereference of null pointer (loaded from variable 'x')}} -} \ No newline at end of file +} + +void checkNonNil() { + clang_analyzer_eval(!!@3); // expected-warning{{TRUE}} + clang_analyzer_eval(!!@(3+4)); // expected-warning{{TRUE}} + clang_analyzer_eval(!!@(57.0)); // expected-warning{{TRUE}} + + const char *str = "abc"; + clang_analyzer_eval(!!@(str)); // expected-warning{{TRUE}} + clang_analyzer_eval(!!@__objc_yes); // expected-warning{{TRUE}} +} + diff --git a/test/Analysis/objc-for.m b/test/Analysis/objc-for.m index 2f14b8ad1aae..d1e044a6513b 100644 --- a/test/Analysis/objc-for.m +++ b/test/Analysis/objc-for.m @@ -109,7 +109,7 @@ void collectionIsEmptyCollectionIsModified(NSMutableDictionary *D){ } int collectionIsEmptyNSSet(NSSet *S){ - if ([S count] == 2) { // Count is non zero. + if ([S count] == 2) { // Count is non-zero. int tapCounts[2]; int i = 0; for (NSString *elem in S) { diff --git a/test/Analysis/objc-properties.m b/test/Analysis/objc-properties.m index 323f41af54ce..f6ed3e5ef043 100644 --- a/test/Analysis/objc-properties.m +++ b/test/Analysis/objc-properties.m @@ -23,8 +23,8 @@ typedef signed char BOOL; @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented - @property (assign, nonatomic) MyClass* Z; // non synthesized ivar, implemented setter - @property (readonly) id nonSynth; // non synthesized, explicitly implemented to return ivar with expected name + @property (assign, nonatomic) MyClass* Z; // non-synthesized ivar, implemented setter + @property (readonly) id nonSynth; // non-synthesized, explicitly implemented to return ivar with expected name - (id) initWithPtr:(MyClass*) value; - (id) myInitWithPtr:(MyClass*) value; diff --git a/test/Analysis/objc-radar17039661.m b/test/Analysis/objc-radar17039661.m new file mode 100644 index 000000000000..ec4f19d2da3b --- /dev/null +++ b/test/Analysis/objc-radar17039661.m @@ -0,0 +1,60 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -verify -fblocks %s + +@class NSString; +typedef long NSInteger; +typedef unsigned char BOOL; +@interface NSObject {} ++(id)alloc; +-(id)init; +-(id)autorelease; +-(id)copy; +-(id)retain; +@end +@interface NSNumber : NSObject ++ (NSNumber *)numberWithInteger:(NSInteger)value __attribute__((availability(ios,introduced=2.0))); +@end + +NSInteger *inoutIntegerValueGlobal; +NSInteger *inoutIntegerValueGlobal2; +NSString *traitNameGlobal; +static BOOL cond; + +static inline void reallyPerformAction(void (^integerHandler)(NSInteger *inoutIntegerValue, NSString *traitName)) { + integerHandler(inoutIntegerValueGlobal, traitNameGlobal); + integerHandler(inoutIntegerValueGlobal2,traitNameGlobal); +} + +static inline BOOL performAction(NSNumber *(^action)(NSNumber *traitValue)) { + __attribute__((__blocks__(byref))) BOOL didFindTrait = 0; + reallyPerformAction(^(NSInteger *inoutIntegerValue,NSString *traitName) { + + if (cond) { + + NSNumber *traitValue = @(*inoutIntegerValue); + + NSNumber *newTraitValue = action(traitValue); + + if (traitValue != newTraitValue) { + *inoutIntegerValue = newTraitValue ? *inoutIntegerValue : *inoutIntegerValue; + } + didFindTrait = 1; + } + + }); + return didFindTrait; +} + +void runTest() { + __attribute__((__blocks__(byref))) NSNumber *builtinResult = ((NSNumber *)0); + BOOL wasBuiltinTrait = performAction(^(NSNumber *traitValue) { + builtinResult = [traitValue retain]; // expected-warning {{Potential leak of an object}} + + return traitValue; + }); + if (wasBuiltinTrait) { + [builtinResult autorelease]; + return; + } else { + return; + } +} diff --git a/test/Analysis/objc-string.mm b/test/Analysis/objc-string.mm index c67ab5e8919c..a32b740bba02 100644 --- a/test/Analysis/objc-string.mm +++ b/test/Analysis/objc-string.mm @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -Wno-objc-literal-conversion %s void clang_analyzer_eval(bool); @class NSString; diff --git a/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m b/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m index f1ecd548eb3e..4777aed99d91 100644 --- a/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m +++ b/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m @@ -32,8 +32,8 @@ typedef signed char BOOL; @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented - @property (assign, nonatomic) MyClass* Z; // non synthesized ivar, implemented setter - @property (readonly) id nonSynth; // non synthesized, explicitly implemented to return ivar with expected name + @property (assign, nonatomic) MyClass* Z; // non-synthesized ivar, implemented setter + @property (readonly) id nonSynth; // non-synthesized, explicitly implemented to return ivar with expected name @property (assign) MyClass* NotA; // warnings should be suppressed, backing ivar is annotated @property (assign) MyClass* NotX __attribute__((annotate("objc_allow_direct_instance_variable_assignment"))); // warnings should be suppressed diff --git a/test/Analysis/properties.m b/test/Analysis/properties.m index ddd0068d3698..f5b5d92d6adc 100644 --- a/test/Analysis/properties.m +++ b/test/Analysis/properties.m @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class -fobjc-arc %s + +void clang_analyzer_eval(int); typedef signed char BOOL; typedef unsigned int NSUInteger; @@ -14,6 +17,7 @@ typedef struct _NSZone NSZone; -(id)autorelease; -(id)copy; -(id)retain; +-(oneway void)release; @end @interface NSString : NSObject - (NSUInteger)length; @@ -36,6 +40,8 @@ typedef struct _NSZone NSZone; @end +#if !__has_feature(objc_arc) + @implementation Test1 @synthesize text; @@ -114,6 +120,8 @@ NSNumber* numberFromMyNumberProperty(MyNumber* aMyNumber) return [result autorelease]; // expected-warning {{Object autoreleased too many times}} } +#endif + // rdar://6611873 @@ -121,18 +129,23 @@ NSNumber* numberFromMyNumberProperty(MyNumber* aMyNumber) NSString *_name; } @property (retain) NSString * name; +@property (assign) id friend; @end @implementation Person @synthesize name = _name; @end +#if !__has_feature(objc_arc) void rdar6611873() { Person *p = [[[Person alloc] init] autorelease]; p.name = [[NSString string] retain]; // expected-warning {{leak}} p.name = [[NSString alloc] init]; // expected-warning {{leak}} + + p.friend = [[Person alloc] init]; // expected-warning {{leak}} } +#endif @interface SubPerson : Person -(NSString *)foo; @@ -144,6 +157,8 @@ void rdar6611873() { } @end + +#if !__has_feature(objc_arc) // Static analyzer doesn't detect uninitialized variable issues for property accesses @interface RDar9241180 @property (readwrite,assign) id x; @@ -164,5 +179,168 @@ void rdar6611873() { self.x = y; // expected-warning {{Argument for property setter is an uninitialized value}} } @end +#endif + + +//------ +// Property accessor synthesis +//------ + +extern void doSomethingWithPerson(Person *p); +extern void doSomethingWithName(NSString *name); + +void testConsistencyRetain(Person *p) { + clang_analyzer_eval(p.name == p.name); // expected-warning{{TRUE}} + + id origName = p.name; + clang_analyzer_eval(p.name == origName); // expected-warning{{TRUE}} + doSomethingWithPerson(p); + clang_analyzer_eval(p.name == origName); // expected-warning{{UNKNOWN}} +} + +void testConsistencyAssign(Person *p) { + clang_analyzer_eval(p.friend == p.friend); // expected-warning{{TRUE}} + + id origFriend = p.friend; + clang_analyzer_eval(p.friend == origFriend); // expected-warning{{TRUE}} + doSomethingWithPerson(p); + clang_analyzer_eval(p.friend == origFriend); // expected-warning{{UNKNOWN}} +} + +#if !__has_feature(objc_arc) +void testOverrelease(Person *p, int coin) { + switch (coin) { + case 0: + [p.name release]; // expected-warning{{not owned}} + break; + case 1: + [p.friend release]; // expected-warning{{not owned}} + break; + case 2: { + id friend = p.friend; + doSomethingWithPerson(p); + [friend release]; // expected-warning{{not owned}} + } + } +} + +// +@implementation Person (Rdar16333368) + +- (void)testDeliberateRelease:(Person *)other { + doSomethingWithName(self.name); + [_name release]; // no-warning + self->_name = 0; + + doSomethingWithName(other->_name); + [other.name release]; // expected-warning{{not owned}} +} + +- (void)deliberateReleaseFalseNegative { + // This is arguably a false negative because the result of p.friend shouldn't + // be released, even though we are manipulating the ivar in between the two + // actions. + id name = self.name; + _name = 0; + [name release]; +} + +- (void)testRetainAndRelease { + [self.name retain]; + [self.name release]; + [self.name release]; // expected-warning{{not owned}} +} + +- (void)testRetainAndReleaseIVar { + [self.name retain]; + [_name release]; + [_name release]; // expected-warning{{not owned}} +} + +@end +#endif + +@interface IntWrapper +@property int value; +@end + +@implementation IntWrapper +@synthesize value; +@end +void testConsistencyInt(IntWrapper *w) { + clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}} + + int origValue = w.value; + if (origValue != 42) + return; + + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + +void testConsistencyInt2(IntWrapper *w) { + if (w.value != 42) + return; + + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + + +@interface IntWrapperAuto +@property int value; +@end + +@implementation IntWrapperAuto +@end + +void testConsistencyIntAuto(IntWrapperAuto *w) { + clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}} + + int origValue = w.value; + if (origValue != 42) + return; + + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + +void testConsistencyIntAuto2(IntWrapperAuto *w) { + if (w.value != 42) + return; + + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + + +typedef struct { + int value; +} IntWrapperStruct; + +@interface StructWrapper +@property IntWrapperStruct inner; +@end + +@implementation StructWrapper +@synthesize inner; +@end + +void testConsistencyStruct(StructWrapper *w) { + clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}} + + int origValue = w.inner.value; + if (origValue != 42) + return; + + clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}} +} + + +@interface OpaqueIntWrapper +@property int value; +@end + +// For now, don't assume a property is implemented using an ivar unless we can +// actually see that it is. +void testOpaqueConsistency(OpaqueIntWrapper *w) { + clang_analyzer_eval(w.value == w.value); // expected-warning{{UNKNOWN}} +} diff --git a/test/Analysis/properties.mm b/test/Analysis/properties.mm new file mode 100644 index 000000000000..e49d034f2651 --- /dev/null +++ b/test/Analysis/properties.mm @@ -0,0 +1,79 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class -fobjc-arc %s + +void clang_analyzer_eval(bool); +void clang_analyzer_checkInlined(bool); + +@interface IntWrapper +@property (readonly) int &value; +@end + +@implementation IntWrapper +@synthesize value; +@end + +void testReferenceConsistency(IntWrapper *w) { + clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}} + clang_analyzer_eval(&w.value == &w.value); // expected-warning{{TRUE}} + + if (w.value != 42) + return; + + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + +void testReferenceAssignment(IntWrapper *w) { + w.value = 42; + clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}} +} + + +struct IntWrapperStruct { + int value; +}; + +@interface StructWrapper +@property IntWrapperStruct inner; +@end + +@implementation StructWrapper +@synthesize inner; +@end + +void testConsistencyStruct(StructWrapper *w) { + clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}} + + int origValue = w.inner.value; + if (origValue != 42) + return; + + clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}} +} + + +class CustomCopy { +public: + CustomCopy() : value(0) {} + CustomCopy(const CustomCopy &other) : value(other.value) { + clang_analyzer_checkInlined(true); // expected-warning{{TRUE}} + } + int value; +}; + +@interface CustomCopyWrapper +@property CustomCopy inner; +@end + +@implementation CustomCopyWrapper +//@synthesize inner; +@end + +void testConsistencyCustomCopy(CustomCopyWrapper *w) { + clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}} + + int origValue = w.inner.value; + if (origValue != 42) + return; + + clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}} +} diff --git a/test/Analysis/pthreadlock.c b/test/Analysis/pthreadlock.c index b90477424511..2a59e0ffe98a 100644 --- a/test/Analysis/pthreadlock.c +++ b/test/Analysis/pthreadlock.c @@ -6,17 +6,31 @@ typedef struct { void *foo; } pthread_mutex_t; +typedef struct { + void *foo; +} pthread_mutexattr_t; + +typedef struct { + void *foo; +} lck_grp_t; + typedef pthread_mutex_t lck_mtx_t; extern int pthread_mutex_lock(pthread_mutex_t *); extern int pthread_mutex_unlock(pthread_mutex_t *); extern int pthread_mutex_trylock(pthread_mutex_t *); +extern int pthread_mutex_destroy(pthread_mutex_t *); +extern int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); extern int lck_mtx_lock(lck_mtx_t *); extern int lck_mtx_unlock(lck_mtx_t *); extern int lck_mtx_try_lock(lck_mtx_t *); +extern void lck_mtx_destroy(lck_mtx_t *lck, lck_grp_t *grp); pthread_mutex_t mtx1, mtx2; lck_mtx_t lck1, lck2; +lck_grp_t grp1; + +#define NULL 0 void ok1(void) @@ -68,6 +82,107 @@ ok7(void) lck_mtx_unlock(&lck1); // no-warning } +void +ok8(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_lock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning +} + +void +ok9(void) +{ + pthread_mutex_unlock(&mtx1); // no-warning + if (pthread_mutex_trylock(&mtx1) == 0) // no-warning + pthread_mutex_unlock(&mtx1); // no-warning +} + +void +ok10(void) +{ + if (pthread_mutex_trylock(&mtx1) != 0) // no-warning + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning +} + +void +ok11(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning +} + +void +ok12(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_destroy(&mtx2); // no-warning +} + +void +ok13(void) +{ + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // no-warning +} + +void +ok14(void) +{ + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_unlock(&mtx2); // no-warning + pthread_mutex_destroy(&mtx2); // no-warning +} + +void +ok15(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // no-warning +} + +void +ok16(void) +{ + pthread_mutex_init(&mtx1, NULL); // no-warning +} + +void +ok17(void) +{ + pthread_mutex_init(&mtx1, NULL); // no-warning + pthread_mutex_init(&mtx2, NULL); // no-warning +} + +void +ok18(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // no-warning +} + +void +ok19(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // no-warning + pthread_mutex_destroy(&mtx2); // no-warning + pthread_mutex_init(&mtx2, NULL); // no-warning +} + +void +ok20(void) +{ + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // no-warning + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // no-warning +} + void bad1(void) { @@ -135,3 +250,151 @@ bad8(void) lck_mtx_lock(&lck2); // no-warning lck_mtx_unlock(&lck1); // expected-warning{{This was not the most recently acquired lock}} } + +void +bad9(void) +{ + lck_mtx_unlock(&lck1); // no-warning + lck_mtx_unlock(&lck1); // expected-warning{{This lock has already been unlocked}} +} + +void +bad10(void) +{ + lck_mtx_lock(&lck1); // no-warning + lck_mtx_unlock(&lck1); // no-warning + lck_mtx_unlock(&lck1); // expected-warning{{This lock has already been unlocked}} +} + +static void +bad11_sub(pthread_mutex_t *lock) +{ + lck_mtx_unlock(lock); // expected-warning{{This lock has already been unlocked}} +} + +void +bad11(int i) +{ + lck_mtx_lock(&lck1); // no-warning + lck_mtx_unlock(&lck1); // no-warning + if (i < 5) + bad11_sub(&lck1); +} + +void +bad12(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been unlocked}} +} + +void +bad13(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_lock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been unlocked}} +} + +void +bad14(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_lock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx2); // expected-warning{{This lock has already been unlocked}} +} + +void +bad15(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_lock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx2); // no-warning + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_unlock(&mtx2); // expected-warning{{This lock has already been unlocked}} +} + +void +bad16(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad17(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad18(void) +{ + pthread_mutex_destroy(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad19(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_destroy(&mtx1); // expected-warning{{This lock is still locked}} +} + +void +bad20(void) +{ + lck_mtx_destroy(&mtx1, &grp1); // no-warning + lck_mtx_lock(&mtx1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad21(void) +{ + lck_mtx_destroy(&mtx1, &grp1); // no-warning + lck_mtx_unlock(&mtx1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad22(void) +{ + lck_mtx_destroy(&mtx1, &grp1); // no-warning + lck_mtx_destroy(&mtx1, &grp1); // expected-warning{{This lock has already been destroyed}} +} + +void +bad23(void) +{ + lck_mtx_lock(&mtx1); // no-warning + lck_mtx_destroy(&mtx1, &grp1); // expected-warning{{This lock is still locked}} +} + +void +bad24(void) +{ + pthread_mutex_init(&mtx1, NULL); // no-warning + pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}} +} + +void +bad25(void) +{ + pthread_mutex_lock(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock is still being held}} +} + +void +bad26(void) +{ + pthread_mutex_unlock(&mtx1); // no-warning + pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}} +} diff --git a/test/Analysis/ptr-arith.c b/test/Analysis/ptr-arith.c index 4a15bc24b906..96dc8bacbce3 100644 --- a/test/Analysis/ptr-arith.c +++ b/test/Analysis/ptr-arith.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple x86_64-apple-darwin9 %s -// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple i686-apple-darwin9 %s +// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple x86_64-apple-darwin9 -Wno-tautological-pointer-compare %s +// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple i686-apple-darwin9 -Wno-tautological-pointer-compare %s void clang_analyzer_eval(int); diff --git a/test/Analysis/reference.cpp b/test/Analysis/reference.cpp index bd5eaaa30909..cd0202ebcb35 100644 --- a/test/Analysis/reference.cpp +++ b/test/Analysis/reference.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -analyzer-constraints=range -verify -Wno-null-dereference %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -analyzer-constraints=range -verify -Wno-null-dereference -Wno-tautological-undefined-compare %s void clang_analyzer_eval(bool); diff --git a/test/Analysis/region-1.m b/test/Analysis/region-1.m index 9edb35b78b7c..6940c69dc1bc 100644 --- a/test/Analysis/region-1.m +++ b/test/Analysis/region-1.m @@ -25,7 +25,7 @@ typedef unsigned int NSUInteger; CK_UNRESTRICTED= 0, CK_READ_ONLY, CK_ADD_ONLY, CK_REMOVE_ONLY }; @protocol EcoClass - (NSArray *) ownedAttributes; @end @protocol EcoNamespace; -@protocol EcoType; +@protocol EcoType @end; @protocol EcoClassifier - (NSArray *) features; @end @protocol EcoComment; @protocol EcoElement - (NSArray *) ownedElements; diff --git a/test/Analysis/retain-release-cache-out.m b/test/Analysis/retain-release-cache-out.m new file mode 100644 index 000000000000..54573a460638 --- /dev/null +++ b/test/Analysis/retain-release-cache-out.m @@ -0,0 +1,27 @@ +// RUN: %clang_cc1 -analyze %s -analyzer-checker=core,osx.cocoa.RetainCount -fblocks -verify + +// This test is checking behavior when a single checker runs only with the core +// checkers, testing that the traversal order in the CFG does not affect the +// reporting of an error. + +#import "Inputs/system-header-simulator-objc.h" + +void testDoubleRelease(BOOL z) { + id x = [[NSObject alloc] init]; + if (z) { + [x release]; + } else { + ; + } + [x release]; // expected-warning {{Reference-counted object is used after it is released}} +} + +void testDoubleRelease2(BOOL z) { + id x = [[NSObject alloc] init]; + if (z) { + ; + } else { + [x release]; + } + [x release]; // expected-warning {{Reference-counted object is used after it is released}} +} diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index aafd94e97bdc..6973f9bcd67d 100644 --- a/test/Analysis/retain-release.m +++ b/test/Analysis/retain-release.m @@ -194,8 +194,15 @@ typedef double NSTimeInterval; @end @interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey; - (void)setObject:(id)anObject forKey:(id)aKey; -@end @interface NSMutableDictionary (NSMutableDictionaryCreation) + (id)dictionaryWithCapacity:(NSUInteger)numItems; -@end typedef double CGFloat; +@end +@interface NSMutableDictionary (NSMutableDictionaryCreation) + (id)dictionaryWithCapacity:(NSUInteger)numItems; +@end + +@interface NSNull : NSObject ++ (NSNull*) null; +@end + +typedef double CGFloat; struct CGSize { }; typedef struct CGSize CGSize; @@ -210,7 +217,7 @@ typedef struct IONotificationPort * IONotificationPortRef; typedef void (*IOServiceMatchingCallback)( void * refcon, io_iterator_t iterator ); io_service_t IOServiceGetMatchingService( mach_port_t masterPort, CFDictionaryRef matching ); kern_return_t IOServiceGetMatchingServices( mach_port_t masterPort, CFDictionaryRef matching, io_iterator_t * existing ); -kern_return_t IOServiceAddNotification( mach_port_t masterPort, const io_name_t notificationType, CFDictionaryRef matching, mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) __attribute__((deprecated)); // expected-note {{'IOServiceAddNotification' declared here}} +kern_return_t IOServiceAddNotification( mach_port_t masterPort, const io_name_t notificationType, CFDictionaryRef matching, mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) __attribute__((deprecated)); // expected-note {{'IOServiceAddNotification' has been explicitly marked deprecated here}} kern_return_t IOServiceAddMatchingNotification( IONotificationPortRef notifyPort, const io_name_t notificationType, CFDictionaryRef matching, IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification ); CFMutableDictionaryRef IOServiceMatching( const char * name ); CFMutableDictionaryRef IOServiceNameMatching( const char * name ); @@ -348,7 +355,7 @@ CFAbsoluteTime f2() { NSDate* global_x; -// Test to see if we supresss an error when we store the pointer +// Test to see if we suppress an error when we store the pointer // to a global. CFAbsoluteTime f3() { @@ -516,38 +523,54 @@ void f15() { CFRelease(*B); // no-warning } -// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable. +// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f16(int x, CFTypeRef p) { if (p) return; - if (x > 0) { + switch (x) { + case 0: CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}} - } - else if (x < 0) { + break; + case 1: CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}} - } - else { + break; + case 2: CFMakeCollectable(p); // expected-warning{{Null pointer argument in call to CFMakeCollectable}} + break; + case 3: + CFAutorelease(p); // expected-warning{{Null pointer argument in call to CFAutorelease}} + break; + default: + break; } } -// Test that an object is non-null after being CFRetained/CFReleased. +// Test that an object is non-null after CFRetain/CFRelease/CFMakeCollectable/CFAutorelease. void f17(int x, CFTypeRef p) { - if (x > 0) { + switch (x) { + case 0: CFRelease(p); if (!p) CFRelease(0); // no-warning - } - else if (x < 0) { + break; + case 1: CFRetain(p); if (!p) CFRetain(0); // no-warning - } - else { + break; + case 2: CFMakeCollectable(p); if (!p) CFMakeCollectable(0); // no-warning + break; + case 3: + CFAutorelease(p); + if (!p) + CFAutorelease(0); // no-warning + break; + default: + break; } } @@ -2121,6 +2144,15 @@ void foo() { CFStringCreateWithCString(0, "hello world", kCFStringEncodingUTF8); } +//===----------------------------------------------------------------------===// +// Handle NSNull +//===----------------------------------------------------------------------===// + +__attribute__((ns_returns_retained)) +id returnNSNull() { + return [NSNull null]; // no-warning +} + // CHECK: diagnostics // CHECK-NEXT: // CHECK-NEXT: @@ -2134,12 +2166,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line324 +// CHECK-NEXT: line334 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line324 +// CHECK-NEXT: line334 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2147,50 +2179,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line325 +// CHECK-NEXT: line335 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 +// CHECK-NEXT: line335 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -2198,7 +2196,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line325 +// CHECK-NEXT: line335 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2206,12 +2204,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 +// CHECK-NEXT: line335 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 +// CHECK-NEXT: line335 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2231,25 +2229,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col20 +// CHECK-NEXT: line335 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line325 -// CHECK-NEXT: col31 +// CHECK-NEXT: line335 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2261,7 +2259,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2269,24 +2267,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2306,12 +2304,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line326 +// CHECK-NEXT: line336 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2319,12 +2317,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2336,7 +2334,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2344,24 +2342,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2381,12 +2379,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line327 +// CHECK-NEXT: line337 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2394,12 +2392,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2411,7 +2409,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2419,24 +2417,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2456,12 +2454,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line329 +// CHECK-NEXT: line339 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2469,12 +2467,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2490,12 +2488,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2503,12 +2501,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2520,7 +2518,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2528,12 +2526,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2554,7 +2552,7 @@ void foo() { // CHECK-NEXT: issue_hash7 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line330 +// CHECK-NEXT: line340 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2570,12 +2568,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line335 +// CHECK-NEXT: line345 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line335 +// CHECK-NEXT: line345 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2583,50 +2581,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line336 +// CHECK-NEXT: line346 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 +// CHECK-NEXT: line346 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -2634,7 +2598,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line336 +// CHECK-NEXT: line346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2642,12 +2606,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 +// CHECK-NEXT: line346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 +// CHECK-NEXT: line346 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2667,25 +2631,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col20 +// CHECK-NEXT: line346 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line336 -// CHECK-NEXT: col31 +// CHECK-NEXT: line346 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2697,7 +2661,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2705,24 +2669,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2742,12 +2706,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line337 +// CHECK-NEXT: line347 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2755,12 +2719,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2772,7 +2736,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2780,24 +2744,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2817,12 +2781,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line338 +// CHECK-NEXT: line348 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2830,12 +2794,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2847,7 +2811,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2855,24 +2819,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col28 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2892,12 +2856,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line340 +// CHECK-NEXT: line350 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2905,12 +2869,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2926,12 +2890,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2939,12 +2903,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2956,7 +2920,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2964,12 +2928,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2990,7 +2954,7 @@ void foo() { // CHECK-NEXT: issue_hash7 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line341 +// CHECK-NEXT: line351 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3006,12 +2970,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line371 +// CHECK-NEXT: line381 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line371 +// CHECK-NEXT: line381 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3019,50 +2983,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line372 +// CHECK-NEXT: line382 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 +// CHECK-NEXT: line382 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -3070,7 +3000,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line372 +// CHECK-NEXT: line382 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3078,12 +3008,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 +// CHECK-NEXT: line382 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 +// CHECK-NEXT: line382 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3103,25 +3033,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col20 +// CHECK-NEXT: line382 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line372 -// CHECK-NEXT: col31 +// CHECK-NEXT: line382 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3137,12 +3067,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3150,12 +3080,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3167,7 +3097,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3175,12 +3105,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3200,12 +3130,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line374 +// CHECK-NEXT: line384 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3213,12 +3143,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3234,12 +3164,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3247,12 +3177,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3264,7 +3194,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3272,12 +3202,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3295,10 +3225,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf5 -// CHECK-NEXT: issue_hash7 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line377 +// CHECK-NEXT: line387 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3307,44 +3237,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line383 +// CHECK-NEXT: line393 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3352,12 +3248,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line383 +// CHECK-NEXT: line393 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line383 +// CHECK-NEXT: line393 // CHECK-NEXT: col62 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3377,25 +3273,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col20 +// CHECK-NEXT: line393 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line383 -// CHECK-NEXT: col31 +// CHECK-NEXT: line393 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3407,7 +3303,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3415,24 +3311,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3452,12 +3348,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line384 +// CHECK-NEXT: line394 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3465,12 +3361,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3482,7 +3378,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3490,24 +3386,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3527,12 +3423,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line385 +// CHECK-NEXT: line395 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3540,12 +3436,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line386 +// CHECK-NEXT: line396 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line386 +// CHECK-NEXT: line396 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3557,7 +3453,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line386 +// CHECK-NEXT: line396 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3573,10 +3469,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf6 -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line386 +// CHECK-NEXT: line396 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3585,44 +3481,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line391 +// CHECK-NEXT: line401 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3630,12 +3492,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 +// CHECK-NEXT: line401 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 +// CHECK-NEXT: line401 // CHECK-NEXT: col62 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3655,25 +3517,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col20 +// CHECK-NEXT: line401 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 -// CHECK-NEXT: col31 +// CHECK-NEXT: line401 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3685,7 +3547,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3693,24 +3555,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3730,12 +3592,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line392 +// CHECK-NEXT: line402 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3743,12 +3605,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3760,7 +3622,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3768,12 +3630,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3791,10 +3653,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf7 -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3810,12 +3672,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 +// CHECK-NEXT: line401 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line391 +// CHECK-NEXT: line401 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3823,50 +3685,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col6 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line393 +// CHECK-NEXT: line403 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 +// CHECK-NEXT: line403 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col21 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -3874,7 +3702,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line393 +// CHECK-NEXT: line403 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3882,12 +3710,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 +// CHECK-NEXT: line403 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 +// CHECK-NEXT: line403 // CHECK-NEXT: col52 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3907,25 +3735,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col10 +// CHECK-NEXT: line403 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line393 -// CHECK-NEXT: col21 +// CHECK-NEXT: line403 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3937,7 +3765,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3945,24 +3773,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3978,7 +3806,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3986,12 +3814,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4009,10 +3837,10 @@ void foo() { // CHECK-NEXT: typeLeak of returned object // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf7 -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line394 +// CHECK-NEXT: line404 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4021,44 +3849,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line402 +// CHECK-NEXT: line412 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4066,12 +3860,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line402 +// CHECK-NEXT: line412 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line402 +// CHECK-NEXT: line412 // CHECK-NEXT: col33 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4091,25 +3885,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col20 +// CHECK-NEXT: line412 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line402 -// CHECK-NEXT: col31 +// CHECK-NEXT: line412 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4121,7 +3915,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4129,24 +3923,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4166,12 +3960,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line403 +// CHECK-NEXT: line413 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4179,12 +3973,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4196,7 +3990,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4204,24 +3998,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4241,12 +4035,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line404 +// CHECK-NEXT: line414 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4254,12 +4048,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line405 +// CHECK-NEXT: line415 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line405 +// CHECK-NEXT: line415 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4271,7 +4065,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line405 +// CHECK-NEXT: line415 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4287,10 +4081,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf8 -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line405 +// CHECK-NEXT: line415 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4306,12 +4100,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line408 +// CHECK-NEXT: line418 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line408 +// CHECK-NEXT: line418 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4319,12 +4113,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4336,7 +4130,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4344,12 +4138,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4357,9 +4151,9 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Variable 'p' initialized to a null pointer value +// CHECK-NEXT: 'p' initialized to a null pointer value // CHECK-NEXT: message -// CHECK-NEXT: Variable 'p' initialized to a null pointer value +// CHECK-NEXT: 'p' initialized to a null pointer value // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -4369,12 +4163,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line409 +// CHECK-NEXT: line419 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4382,12 +4176,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4403,12 +4197,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4416,12 +4210,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4433,7 +4227,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4441,12 +4235,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4466,12 +4260,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4479,16 +4273,50 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line421 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line421 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line421 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line421 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -4496,20 +4324,20 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line411 -// CHECK-NEXT: col14 +// CHECK-NEXT: line421 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line411 +// CHECK-NEXT: line421 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4530,8 +4358,8 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line411 -// CHECK-NEXT: col14 +// CHECK-NEXT: line421 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -4539,44 +4367,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col42 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4584,12 +4378,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col75 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4609,25 +4403,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col20 +// CHECK-NEXT: line430 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 -// CHECK-NEXT: col42 +// CHECK-NEXT: line430 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4643,12 +4437,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4656,12 +4450,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4673,7 +4467,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4681,12 +4475,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4706,12 +4500,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4719,12 +4513,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4740,12 +4534,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4753,12 +4547,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4774,12 +4568,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4787,12 +4581,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4808,12 +4602,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4821,12 +4615,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4838,7 +4632,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4846,12 +4640,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4871,12 +4665,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4884,12 +4678,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4905,12 +4699,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4918,13 +4712,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -4935,21 +4729,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -4966,11 +4760,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash7 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col48 +// CHECK-NEXT: line436 +// CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -4985,12 +4779,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4998,12 +4792,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5019,12 +4813,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5032,12 +4826,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5049,7 +4843,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5057,12 +4851,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5082,12 +4876,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5095,12 +4889,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5116,12 +4910,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5129,12 +4923,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5150,12 +4944,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5163,12 +4957,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5180,7 +4974,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5188,12 +4982,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5213,12 +5007,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5226,50 +5020,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col46 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -5277,7 +5037,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5285,12 +5045,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col49 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5310,25 +5070,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col26 +// CHECK-NEXT: line436 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 -// CHECK-NEXT: col46 +// CHECK-NEXT: line436 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5344,12 +5104,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5357,12 +5117,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5374,7 +5134,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5382,12 +5142,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5407,12 +5167,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5420,50 +5180,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col13 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -5471,21 +5197,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col20 +// CHECK-NEXT: line437 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col20 +// CHECK-NEXT: line437 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col23 +// CHECK-NEXT: line437 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -5502,11 +5228,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash8 +// CHECK-NEXT: issue_hash7 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 -// CHECK-NEXT: col20 +// CHECK-NEXT: line437 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -5521,12 +5247,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5534,12 +5260,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5555,12 +5281,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5568,12 +5294,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5585,7 +5311,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5593,12 +5319,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5618,12 +5344,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5631,12 +5357,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5652,12 +5378,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5665,12 +5391,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5686,12 +5412,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5699,12 +5425,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5716,7 +5442,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5724,12 +5450,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5749,12 +5475,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5762,12 +5488,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5783,12 +5509,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5796,12 +5522,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5817,12 +5543,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5830,12 +5556,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5847,7 +5573,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5855,12 +5581,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5880,12 +5606,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5893,12 +5619,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5907,44 +5633,10 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col6 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col28 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5952,12 +5644,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5977,25 +5669,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col10 +// CHECK-NEXT: line439 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 -// CHECK-NEXT: col28 +// CHECK-NEXT: line439 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6011,12 +5703,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6024,12 +5716,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6041,7 +5733,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6049,12 +5741,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6074,12 +5766,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6087,50 +5779,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col13 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -6138,21 +5796,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col20 +// CHECK-NEXT: line440 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col20 +// CHECK-NEXT: line440 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col23 +// CHECK-NEXT: line440 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -6169,11 +5827,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash11 +// CHECK-NEXT: issue_hash10 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 -// CHECK-NEXT: col20 +// CHECK-NEXT: line440 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -6188,12 +5846,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6201,12 +5859,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6222,12 +5880,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6235,12 +5893,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6252,7 +5910,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6260,12 +5918,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6285,12 +5943,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6298,50 +5956,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col6 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col32 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -6349,7 +5973,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6357,12 +5981,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col63 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6382,25 +6006,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col10 +// CHECK-NEXT: line433 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 -// CHECK-NEXT: col32 +// CHECK-NEXT: line433 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6416,12 +6040,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6429,12 +6053,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6446,7 +6070,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6454,12 +6078,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6479,12 +6103,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6492,12 +6116,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6513,12 +6137,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6526,12 +6150,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6547,12 +6171,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6560,12 +6184,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6581,12 +6205,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6594,12 +6218,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6611,7 +6235,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6619,12 +6243,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6644,12 +6268,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6657,12 +6281,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6678,12 +6302,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6691,12 +6315,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6712,12 +6336,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6725,12 +6349,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6742,7 +6366,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6750,12 +6374,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6775,12 +6399,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6788,12 +6412,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6809,12 +6433,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6822,13 +6446,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -6839,21 +6463,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -6870,11 +6494,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash14 +// CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line433 -// CHECK-NEXT: col67 +// CHECK-NEXT: line442 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -6889,12 +6513,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6902,12 +6526,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6923,12 +6547,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6936,12 +6560,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6953,7 +6577,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6961,12 +6585,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6986,12 +6610,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -6999,12 +6623,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7020,12 +6644,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7033,12 +6657,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7054,12 +6678,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7067,12 +6691,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7084,7 +6708,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7092,12 +6716,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7117,12 +6741,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7130,12 +6754,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7151,12 +6775,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7164,12 +6788,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7185,12 +6809,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7198,12 +6822,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7215,7 +6839,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7223,12 +6847,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7248,12 +6872,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7261,12 +6885,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7282,12 +6906,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7295,12 +6919,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7316,12 +6940,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7329,12 +6953,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7346,7 +6970,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7354,12 +6978,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7379,12 +7003,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7392,12 +7016,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7413,12 +7037,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7426,12 +7050,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7443,7 +7067,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7451,12 +7075,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line433 +// CHECK-NEXT: line443 // CHECK-NEXT: col68 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7476,12 +7100,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7489,13 +7113,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col4 +// CHECK-NEXT: line442 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7510,26 +7134,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col4 +// CHECK-NEXT: line442 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col7 +// CHECK-NEXT: line444 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col15 +// CHECK-NEXT: line444 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7537,35 +7161,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col15 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Assuming 'dissenter' is non-null -// CHECK-NEXT: message -// CHECK-NEXT: Assuming 'dissenter' is non-null -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -7573,26 +7168,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col7 +// CHECK-NEXT: line444 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col15 +// CHECK-NEXT: line444 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col18 +// CHECK-NEXT: line444 +// CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col22 +// CHECK-NEXT: line444 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7600,6 +7195,35 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line444 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line444 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line444 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Assuming 'dissenter' is non-null +// CHECK-NEXT: message +// CHECK-NEXT: Assuming 'dissenter' is non-null +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -7607,26 +7231,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col18 +// CHECK-NEXT: line444 +// CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col22 +// CHECK-NEXT: line444 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col25 +// CHECK-NEXT: line444 +// CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col28 +// CHECK-NEXT: line444 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7637,21 +7261,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col25 +// CHECK-NEXT: line444 +// CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col25 +// CHECK-NEXT: line444 +// CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col28 +// CHECK-NEXT: line444 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7668,11 +7292,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash15 +// CHECK-NEXT: issue_hash13 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line434 -// CHECK-NEXT: col25 +// CHECK-NEXT: line444 +// CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -7687,12 +7311,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line420 +// CHECK-NEXT: line430 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7700,12 +7324,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7721,12 +7345,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7734,12 +7358,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7751,7 +7375,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7759,12 +7383,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7784,12 +7408,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line421 +// CHECK-NEXT: line431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7797,12 +7421,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7818,12 +7442,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line423 +// CHECK-NEXT: line433 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7831,12 +7455,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7852,12 +7476,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7865,12 +7489,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7882,7 +7506,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7890,12 +7514,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7915,12 +7539,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line424 +// CHECK-NEXT: line434 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7928,12 +7552,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7949,12 +7573,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line426 +// CHECK-NEXT: line436 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7962,12 +7586,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7983,12 +7607,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -7996,12 +7620,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8013,7 +7637,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8021,12 +7645,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8046,12 +7670,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line427 +// CHECK-NEXT: line437 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8059,12 +7683,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8080,12 +7704,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line429 +// CHECK-NEXT: line439 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8093,12 +7717,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8114,12 +7738,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8127,12 +7751,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8144,7 +7768,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8152,12 +7776,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8177,12 +7801,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line430 +// CHECK-NEXT: line440 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8190,12 +7814,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8211,12 +7835,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line432 +// CHECK-NEXT: line442 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8224,12 +7848,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8245,12 +7869,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8258,12 +7882,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8275,7 +7899,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8283,12 +7907,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8308,12 +7932,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line434 +// CHECK-NEXT: line444 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8321,50 +7945,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col14 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line436 +// CHECK-NEXT: line446 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 +// CHECK-NEXT: line446 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col40 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -8372,7 +7962,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line436 +// CHECK-NEXT: line446 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8380,12 +7970,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 +// CHECK-NEXT: line446 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 +// CHECK-NEXT: line446 // CHECK-NEXT: col61 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8405,25 +7995,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col26 +// CHECK-NEXT: line446 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line436 -// CHECK-NEXT: col40 +// CHECK-NEXT: line446 +// CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8439,12 +8029,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8452,12 +8042,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8469,7 +8059,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8477,12 +8067,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8502,12 +8092,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8515,50 +8105,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col16 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 +// CHECK-NEXT: line447 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -8566,21 +8122,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col23 +// CHECK-NEXT: line447 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col23 +// CHECK-NEXT: line447 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col26 +// CHECK-NEXT: line447 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -8597,11 +8153,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf10 -// CHECK-NEXT: issue_hash18 +// CHECK-NEXT: issue_hash17 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line437 -// CHECK-NEXT: col23 +// CHECK-NEXT: line447 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -8616,12 +8172,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line443 +// CHECK-NEXT: line453 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line443 +// CHECK-NEXT: line453 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8629,12 +8185,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 +// CHECK-NEXT: line466 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 +// CHECK-NEXT: line466 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8643,44 +8199,10 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col43 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line456 +// CHECK-NEXT: line466 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8688,12 +8210,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 +// CHECK-NEXT: line466 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 +// CHECK-NEXT: line466 // CHECK-NEXT: col49 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8713,25 +8235,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col22 +// CHECK-NEXT: line466 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line456 -// CHECK-NEXT: col43 +// CHECK-NEXT: line466 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8743,7 +8265,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8751,12 +8273,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8777,7 +8299,7 @@ void foo() { // CHECK-NEXT: issue_hash21 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line462 +// CHECK-NEXT: line472 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8786,44 +8308,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col27 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line470 +// CHECK-NEXT: line480 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8831,12 +8319,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line470 +// CHECK-NEXT: line480 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line470 +// CHECK-NEXT: line480 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8856,25 +8344,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col17 +// CHECK-NEXT: line480 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line470 -// CHECK-NEXT: col27 +// CHECK-NEXT: line480 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line471 +// CHECK-NEXT: line481 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line471 +// CHECK-NEXT: line481 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8886,7 +8374,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line471 +// CHECK-NEXT: line481 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8902,10 +8390,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf12 -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line471 +// CHECK-NEXT: line481 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8914,44 +8402,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col25 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col44 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line479 +// CHECK-NEXT: line489 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8959,12 +8413,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line479 +// CHECK-NEXT: line489 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line479 +// CHECK-NEXT: line489 // CHECK-NEXT: col75 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -8984,25 +8438,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col25 +// CHECK-NEXT: line489 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line479 -// CHECK-NEXT: col44 +// CHECK-NEXT: line489 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9014,7 +8468,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9022,24 +8476,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9059,12 +8513,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line480 +// CHECK-NEXT: line490 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9072,12 +8526,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9089,7 +8543,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9097,24 +8551,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9134,12 +8588,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line481 +// CHECK-NEXT: line491 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9147,12 +8601,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line482 +// CHECK-NEXT: line492 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line482 +// CHECK-NEXT: line492 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9164,7 +8618,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line482 +// CHECK-NEXT: line492 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9183,7 +8637,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line482 +// CHECK-NEXT: line492 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9192,44 +8646,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col25 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col44 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line485 +// CHECK-NEXT: line495 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9237,12 +8657,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line485 +// CHECK-NEXT: line495 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line485 +// CHECK-NEXT: line495 // CHECK-NEXT: col75 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9262,25 +8682,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col25 +// CHECK-NEXT: line495 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line485 -// CHECK-NEXT: col44 +// CHECK-NEXT: line495 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9292,7 +8712,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9300,24 +8720,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9337,12 +8757,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line486 +// CHECK-NEXT: line496 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9350,12 +8770,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9367,7 +8787,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9375,24 +8795,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9412,12 +8832,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line487 +// CHECK-NEXT: line497 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9425,12 +8845,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9442,7 +8862,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9450,12 +8870,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9476,7 +8896,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line488 +// CHECK-NEXT: line498 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9485,44 +8905,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col25 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col44 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line492 +// CHECK-NEXT: line502 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9530,12 +8916,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line492 +// CHECK-NEXT: line502 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line492 +// CHECK-NEXT: line502 // CHECK-NEXT: col75 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9555,25 +8941,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col25 +// CHECK-NEXT: line502 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line492 -// CHECK-NEXT: col44 +// CHECK-NEXT: line502 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9585,7 +8971,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9593,24 +8979,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9630,12 +9016,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line493 +// CHECK-NEXT: line503 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9643,12 +9029,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9660,7 +9046,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9668,24 +9054,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9705,12 +9091,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line494 +// CHECK-NEXT: line504 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9718,12 +9104,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9739,12 +9125,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9752,12 +9138,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col44 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9769,7 +9155,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9777,12 +9163,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col75 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9803,7 +9189,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line495 +// CHECK-NEXT: line505 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9815,7 +9201,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line503 +// CHECK-NEXT: line513 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9823,12 +9209,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line503 +// CHECK-NEXT: line513 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line503 +// CHECK-NEXT: line513 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9848,12 +9234,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line503 +// CHECK-NEXT: line513 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line503 +// CHECK-NEXT: line513 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9861,12 +9247,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line504 +// CHECK-NEXT: line514 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line504 +// CHECK-NEXT: line514 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9878,7 +9264,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line504 +// CHECK-NEXT: line514 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9894,10 +9280,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf14_leakimmediately -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line504 +// CHECK-NEXT: line514 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9913,12 +9299,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9926,12 +9312,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9943,7 +9329,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9951,12 +9337,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9976,12 +9362,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -9989,12 +9375,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10010,12 +9396,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10023,12 +9409,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10040,7 +9426,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10048,12 +9434,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10073,12 +9459,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10086,12 +9472,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10103,7 +9489,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10111,12 +9497,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10131,13 +9517,13 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: descriptionNull pointer argument in call to CFRelease // CHECK-NEXT: categoryAPI Misuse (Apple) -// CHECK-NEXT: typenull passed to CFRetain/CFRelease/CFMakeCollectable +// CHECK-NEXT: typenull passed to CF memory management function // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf16 // CHECK-NEXT: issue_hash5 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line522 +// CHECK-NEXT: line532 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10153,12 +9539,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10166,12 +9552,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10183,7 +9569,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10191,12 +9577,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10216,12 +9602,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10229,12 +9615,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10250,12 +9636,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10263,12 +9649,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10280,7 +9666,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10288,12 +9674,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10313,12 +9699,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10326,12 +9712,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10347,12 +9733,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10360,12 +9746,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10377,7 +9763,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10385,12 +9771,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10410,12 +9796,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10423,12 +9809,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10440,7 +9826,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10448,12 +9834,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10468,13 +9854,13 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: descriptionNull pointer argument in call to CFRetain // CHECK-NEXT: categoryAPI Misuse (Apple) -// CHECK-NEXT: typenull passed to CFRetain/CFRelease/CFMakeCollectable +// CHECK-NEXT: typenull passed to CF memory management function // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf16 // CHECK-NEXT: issue_hash8 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line525 +// CHECK-NEXT: line535 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10490,12 +9876,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10503,12 +9889,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10520,7 +9906,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10528,12 +9914,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10553,12 +9939,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line518 +// CHECK-NEXT: line528 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10566,12 +9952,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10587,12 +9973,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10600,12 +9986,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10617,7 +10003,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10625,12 +10011,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10650,12 +10036,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line521 +// CHECK-NEXT: line531 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10663,12 +10049,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10684,12 +10070,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10697,12 +10083,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10714,7 +10100,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10722,12 +10108,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10747,12 +10133,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line524 +// CHECK-NEXT: line534 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10760,12 +10146,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10777,7 +10163,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10785,12 +10171,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10805,13 +10191,13 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: descriptionNull pointer argument in call to CFMakeCollectable // CHECK-NEXT: categoryAPI Misuse (Apple) -// CHECK-NEXT: typenull passed to CFRetain/CFRelease/CFMakeCollectable +// CHECK-NEXT: typenull passed to CF memory management function // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextf16 // CHECK-NEXT: issue_hash11 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line528 +// CHECK-NEXT: line538 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10820,44 +10206,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line574 +// CHECK-NEXT: line584 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10865,12 +10217,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line574 +// CHECK-NEXT: line584 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line574 +// CHECK-NEXT: line584 // CHECK-NEXT: col55 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10890,25 +10242,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col17 +// CHECK-NEXT: line584 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line574 -// CHECK-NEXT: col17 +// CHECK-NEXT: line584 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10920,7 +10272,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10928,24 +10280,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10961,7 +10313,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10969,12 +10321,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -10995,7 +10347,7 @@ void foo() { // CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line575 +// CHECK-NEXT: line585 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11004,44 +10356,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11049,12 +10367,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col63 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11074,25 +10392,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col20 +// CHECK-NEXT: line598 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 -// CHECK-NEXT: col20 +// CHECK-NEXT: line598 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11108,12 +10426,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11121,12 +10439,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11138,7 +10456,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11146,12 +10464,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11171,12 +10489,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11184,12 +10502,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11201,7 +10519,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11209,12 +10527,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11232,10 +10550,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_6659160 -// CHECK-NEXT: issue_hash13 +// CHECK-NEXT: issue_hash5 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line596 +// CHECK-NEXT: line606 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11251,12 +10569,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11264,12 +10582,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11285,12 +10603,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11298,12 +10616,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11315,7 +10633,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11323,12 +10641,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11348,12 +10666,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11361,12 +10679,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11378,7 +10696,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11386,12 +10704,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11399,9 +10717,9 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Variable 'kindC' initialized to a null pointer value +// CHECK-NEXT: 'kindC' initialized to a null pointer value // CHECK-NEXT: message -// CHECK-NEXT: Variable 'kindC' initialized to a null pointer value +// CHECK-NEXT: 'kindC' initialized to a null pointer value // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -11411,12 +10729,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11424,12 +10742,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11445,12 +10763,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11458,12 +10776,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11475,7 +10793,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11483,12 +10801,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11508,12 +10826,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11521,12 +10839,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11542,12 +10860,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11555,12 +10873,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11576,12 +10894,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11589,12 +10907,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11610,12 +10928,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11623,12 +10941,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11640,7 +10958,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11648,12 +10966,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11674,7 +10992,7 @@ void foo() { // CHECK-NEXT: issue_hash27 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11690,12 +11008,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line588 +// CHECK-NEXT: line598 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11703,50 +11021,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line594 +// CHECK-NEXT: line604 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 +// CHECK-NEXT: line604 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -11754,7 +11038,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line594 +// CHECK-NEXT: line604 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11762,12 +11046,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 +// CHECK-NEXT: line604 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 +// CHECK-NEXT: line604 // CHECK-NEXT: col57 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11787,25 +11071,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col20 +// CHECK-NEXT: line604 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line594 -// CHECK-NEXT: col20 +// CHECK-NEXT: line604 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11821,12 +11105,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11834,12 +11118,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11851,7 +11135,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11859,12 +11143,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11884,12 +11168,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line595 +// CHECK-NEXT: line605 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11897,12 +11181,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11918,12 +11202,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line598 +// CHECK-NEXT: line608 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11931,12 +11215,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11952,12 +11236,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11965,12 +11249,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11982,7 +11266,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -11990,12 +11274,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12015,12 +11299,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line606 +// CHECK-NEXT: line616 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12028,12 +11312,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line607 +// CHECK-NEXT: line617 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line607 +// CHECK-NEXT: line617 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12049,12 +11333,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line607 +// CHECK-NEXT: line617 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line607 +// CHECK-NEXT: line617 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12062,12 +11346,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12083,12 +11367,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line608 +// CHECK-NEXT: line618 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12096,12 +11380,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12117,12 +11401,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line609 +// CHECK-NEXT: line619 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12130,12 +11414,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12151,12 +11435,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line610 +// CHECK-NEXT: line620 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12164,12 +11448,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line612 +// CHECK-NEXT: line622 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line612 +// CHECK-NEXT: line622 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12185,12 +11469,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line612 +// CHECK-NEXT: line622 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line612 +// CHECK-NEXT: line622 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12198,12 +11482,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line615 +// CHECK-NEXT: line625 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line615 +// CHECK-NEXT: line625 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12219,12 +11503,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line615 +// CHECK-NEXT: line625 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line615 +// CHECK-NEXT: line625 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12232,12 +11516,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12249,7 +11533,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12257,12 +11541,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12283,7 +11567,7 @@ void foo() { // CHECK-NEXT: issue_hash33 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line616 +// CHECK-NEXT: line626 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12292,44 +11576,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line638 +// CHECK-NEXT: line648 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12337,12 +11587,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line638 +// CHECK-NEXT: line648 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line638 +// CHECK-NEXT: line648 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12362,25 +11612,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col12 +// CHECK-NEXT: line648 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line638 -// CHECK-NEXT: col12 +// CHECK-NEXT: line648 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12392,7 +11642,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12400,24 +11650,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12437,12 +11687,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line639 +// CHECK-NEXT: line649 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12450,12 +11700,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12467,7 +11717,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12475,12 +11725,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12501,7 +11751,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line640 +// CHECK-NEXT: line650 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12517,12 +11767,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line646 +// CHECK-NEXT: line656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line646 +// CHECK-NEXT: line656 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12530,12 +11780,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 +// CHECK-NEXT: line657 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 +// CHECK-NEXT: line657 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12544,44 +11794,10 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line647 +// CHECK-NEXT: line657 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12589,12 +11805,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 +// CHECK-NEXT: line657 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 +// CHECK-NEXT: line657 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12614,25 +11830,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col12 +// CHECK-NEXT: line657 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line647 -// CHECK-NEXT: col12 +// CHECK-NEXT: line657 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12644,7 +11860,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12652,24 +11868,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12689,12 +11905,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line648 +// CHECK-NEXT: line658 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12702,12 +11918,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12719,7 +11935,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12727,12 +11943,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12753,7 +11969,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line649 +// CHECK-NEXT: line659 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12769,12 +11985,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12782,12 +11998,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12799,7 +12015,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12807,12 +12023,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col76 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12825,44 +12041,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line701 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line701 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line701 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line701 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12870,24 +12052,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col84 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col76 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12907,12 +12089,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line701 +// CHECK-NEXT: line711 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12920,12 +12102,80 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line706 +// CHECK-NEXT: line711 +// CHECK-NEXT: col2 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line711 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line711 +// CHECK-NEXT: col2 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line711 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line715 +// CHECK-NEXT: col2 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line715 +// CHECK-NEXT: col6 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line715 +// CHECK-NEXT: col2 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line715 +// CHECK-NEXT: col6 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line716 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line706 +// CHECK-NEXT: line716 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12937,7 +12187,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line706 +// CHECK-NEXT: line716 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12953,10 +12203,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindObjective-C method // CHECK-NEXT: issue_contextapplicationDidFinishLaunching: -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line706 +// CHECK-NEXT: line716 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12972,12 +12222,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -12985,12 +12235,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13002,7 +12252,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13010,12 +12260,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col76 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13028,44 +12278,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line713 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line713 -// CHECK-NEXT: col31 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line713 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line713 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13073,24 +12289,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col84 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col76 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13110,12 +12326,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line713 +// CHECK-NEXT: line723 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13123,13 +12339,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line714 +// CHECK-NEXT: line723 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line714 -// CHECK-NEXT: col3 +// CHECK-NEXT: line723 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -13144,26 +12360,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line714 +// CHECK-NEXT: line723 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line714 -// CHECK-NEXT: col3 +// CHECK-NEXT: line723 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line716 -// CHECK-NEXT: col1 +// CHECK-NEXT: line724 +// CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line716 -// CHECK-NEXT: col1 +// CHECK-NEXT: line724 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -13171,37 +12387,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line716 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'dict' -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindObjective-C method -// CHECK-NEXT: issue_contextradar10102244 -// CHECK-NEXT: issue_hash4 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line716 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -13210,25 +12395,25 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line724 -// CHECK-NEXT: col3 +// CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line724 -// CHECK-NEXT: col19 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col3 +// CHECK-NEXT: line724 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col9 +// CHECK-NEXT: line724 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -13243,26 +12428,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col3 +// CHECK-NEXT: line724 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col9 +// CHECK-NEXT: line724 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 +// CHECK-NEXT: line726 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 +// CHECK-NEXT: line726 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -13273,28 +12458,93 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 +// CHECK-NEXT: line726 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col34 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Method returns an Objective-C object with a +0 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'dict' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindObjective-C method +// CHECK-NEXT: issue_contextradar10102244 +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line726 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line734 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line734 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line735 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line735 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line735 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line735 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line735 +// CHECK-NEXT: col34 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Method returns an Objective-C object with a +0 retain count // CHECK-NEXT: message // CHECK-NEXT: Method returns an Objective-C object with a +0 retain count // CHECK-NEXT: @@ -13306,25 +12556,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 +// CHECK-NEXT: line735 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line725 -// CHECK-NEXT: col20 +// CHECK-NEXT: line735 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13336,7 +12586,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13344,12 +12594,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13370,7 +12620,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line726 +// CHECK-NEXT: line736 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13386,12 +12636,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line801 +// CHECK-NEXT: line811 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line801 +// CHECK-NEXT: line811 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13399,12 +12649,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13416,7 +12666,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13424,12 +12674,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13449,12 +12699,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line802 +// CHECK-NEXT: line812 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13462,12 +12712,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13479,7 +12729,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13487,12 +12737,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13510,10 +12760,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindObjective-C method // CHECK-NEXT: issue_context_initReturningNewClassBad -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line803 +// CHECK-NEXT: line813 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13529,12 +12779,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line806 +// CHECK-NEXT: line816 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line806 +// CHECK-NEXT: line816 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13542,50 +12792,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col6 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line807 +// CHECK-NEXT: line817 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line807 +// CHECK-NEXT: line817 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -13593,7 +12809,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line807 +// CHECK-NEXT: line817 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13601,12 +12817,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line807 +// CHECK-NEXT: line817 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line807 +// CHECK-NEXT: line817 // CHECK-NEXT: col43 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13626,63 +12842,29 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line807 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line817 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col8 +// CHECK-NEXT: line817 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start +// CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -13690,7 +12872,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13698,24 +12880,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13728,44 +12910,10 @@ void foo() { // CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line808 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13773,12 +12921,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13799,7 +12947,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line808 +// CHECK-NEXT: line818 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13808,44 +12956,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13853,12 +12967,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13871,44 +12985,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13916,24 +12996,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13949,7 +13029,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13957,12 +13037,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13983,7 +13063,7 @@ void foo() { // CHECK-NEXT: issue_hash0 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -13992,44 +13072,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14037,12 +13083,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14055,44 +13101,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14100,24 +13112,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14133,7 +13145,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14141,12 +13153,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14167,7 +13179,7 @@ void foo() { // CHECK-NEXT: issue_hash0 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14179,7 +13191,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14187,12 +13199,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14208,7 +13220,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14226,12 +13238,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14239,50 +13251,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line846 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -14290,7 +13268,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14298,12 +13276,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line846 +// CHECK-NEXT: line856 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14319,7 +13297,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14327,18 +13305,18 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning from 'NoCopyString' // CHECK-NEXT: message @@ -14352,12 +13330,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14365,12 +13343,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14382,7 +13360,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14390,12 +13368,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14413,10 +13391,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_RDar6859457 -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14432,12 +13410,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line851 +// CHECK-NEXT: line861 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14445,12 +13423,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14462,7 +13440,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14470,12 +13448,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14491,7 +13469,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14509,12 +13487,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14522,50 +13500,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line847 -// CHECK-NEXT: col37 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -14573,7 +13517,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14581,12 +13525,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line847 +// CHECK-NEXT: line857 // CHECK-NEXT: col59 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14602,7 +13546,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14610,18 +13554,18 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning from 'noCopyString' // CHECK-NEXT: message @@ -14635,12 +13579,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line852 +// CHECK-NEXT: line862 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14648,12 +13592,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14665,7 +13609,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14673,12 +13617,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col54 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14696,10 +13640,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_RDar6859457 -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line853 +// CHECK-NEXT: line863 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14708,44 +13652,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14753,12 +13663,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14771,44 +13681,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line886 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14816,24 +13692,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14849,7 +13725,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14857,12 +13733,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14883,7 +13759,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line886 +// CHECK-NEXT: line896 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14895,7 +13771,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14903,12 +13779,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14928,12 +13804,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14941,12 +13817,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14958,7 +13834,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14966,12 +13842,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -14989,10 +13865,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6902710 -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15008,12 +13884,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15021,12 +13897,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15038,7 +13914,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15046,12 +13922,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15071,12 +13947,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line917 +// CHECK-NEXT: line927 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15084,16 +13960,50 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line928 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line928 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line928 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -15101,21 +14011,21 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line918 -// CHECK-NEXT: col3 +// CHECK-NEXT: line928 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 -// CHECK-NEXT: col3 +// CHECK-NEXT: line928 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 -// CHECK-NEXT: col43 +// CHECK-NEXT: line928 +// CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -15132,11 +14042,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6902710 -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line918 -// CHECK-NEXT: col3 +// CHECK-NEXT: line928 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -15151,12 +14061,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15164,12 +14074,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15181,7 +14091,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15189,12 +14099,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col43 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15214,12 +14124,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line918 +// CHECK-NEXT: line928 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15227,12 +14137,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15241,45 +14151,79 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line919 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line919 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line919 -// CHECK-NEXT: col69 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line929 +// CHECK-NEXT: col42 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6902710 -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line919 -// CHECK-NEXT: col3 +// CHECK-NEXT: line929 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -15294,12 +14238,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line916 +// CHECK-NEXT: line926 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15307,12 +14251,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15324,7 +14268,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15332,12 +14276,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col69 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15357,12 +14301,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line919 +// CHECK-NEXT: line929 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15370,12 +14314,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line920 +// CHECK-NEXT: line930 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line920 +// CHECK-NEXT: line930 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15387,7 +14331,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line920 +// CHECK-NEXT: line930 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15403,10 +14347,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6902710 -// CHECK-NEXT: issue_hash5 +// CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line920 +// CHECK-NEXT: line930 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15418,7 +14362,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line928 +// CHECK-NEXT: line938 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15426,12 +14370,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line928 +// CHECK-NEXT: line938 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line928 +// CHECK-NEXT: line938 // CHECK-NEXT: col45 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15451,12 +14395,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line928 +// CHECK-NEXT: line938 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line928 +// CHECK-NEXT: line938 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15464,12 +14408,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line929 +// CHECK-NEXT: line939 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line929 +// CHECK-NEXT: line939 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15481,7 +14425,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line929 +// CHECK-NEXT: line939 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15497,10 +14441,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6945561 -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line929 +// CHECK-NEXT: line939 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15512,7 +14456,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line937 +// CHECK-NEXT: line947 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15520,12 +14464,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line937 +// CHECK-NEXT: line947 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line937 +// CHECK-NEXT: line947 // CHECK-NEXT: col49 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15545,12 +14489,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line937 +// CHECK-NEXT: line947 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line937 +// CHECK-NEXT: line947 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15558,12 +14502,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line938 +// CHECK-NEXT: line948 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line938 +// CHECK-NEXT: line948 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15575,7 +14519,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line938 +// CHECK-NEXT: line948 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15591,10 +14535,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextIOBSDNameMatching_wrapper -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line938 +// CHECK-NEXT: line948 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15606,7 +14550,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line941 +// CHECK-NEXT: line951 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15614,12 +14558,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line941 +// CHECK-NEXT: line951 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line941 +// CHECK-NEXT: line951 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15639,12 +14583,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line941 +// CHECK-NEXT: line951 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line941 +// CHECK-NEXT: line951 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15652,12 +14596,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line942 +// CHECK-NEXT: line952 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line942 +// CHECK-NEXT: line952 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15669,7 +14613,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line942 +// CHECK-NEXT: line952 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15685,10 +14629,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextIOServiceMatching_wrapper -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line942 +// CHECK-NEXT: line952 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15700,7 +14644,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line945 +// CHECK-NEXT: line955 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15708,12 +14652,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line945 +// CHECK-NEXT: line955 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line945 +// CHECK-NEXT: line955 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15733,12 +14677,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line945 +// CHECK-NEXT: line955 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line945 +// CHECK-NEXT: line955 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15746,12 +14690,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line946 +// CHECK-NEXT: line956 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line946 +// CHECK-NEXT: line956 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15763,7 +14707,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line946 +// CHECK-NEXT: line956 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15779,10 +14723,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextIOServiceNameMatching_wrapper -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line946 +// CHECK-NEXT: line956 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15791,44 +14735,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col39 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line953 +// CHECK-NEXT: line963 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15836,12 +14746,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line953 +// CHECK-NEXT: line963 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line953 +// CHECK-NEXT: line963 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15861,25 +14771,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col30 +// CHECK-NEXT: line963 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line953 -// CHECK-NEXT: col39 +// CHECK-NEXT: line963 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15891,7 +14801,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15899,24 +14809,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15936,12 +14846,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line954 +// CHECK-NEXT: line964 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15949,12 +14859,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15966,7 +14876,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -15974,12 +14884,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col58 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col65 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16000,7 +14910,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line955 +// CHECK-NEXT: line965 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16012,7 +14922,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line960 +// CHECK-NEXT: line970 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16020,12 +14930,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line960 +// CHECK-NEXT: line970 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line960 +// CHECK-NEXT: line970 // CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16045,12 +14955,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line960 +// CHECK-NEXT: line970 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line960 +// CHECK-NEXT: line970 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16058,12 +14968,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line961 +// CHECK-NEXT: line971 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line961 +// CHECK-NEXT: line971 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16075,7 +14985,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line961 +// CHECK-NEXT: line971 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16091,10 +15001,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextIORegistryEntryIDMatching_wrapper -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line961 +// CHECK-NEXT: line971 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16106,7 +15016,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line965 +// CHECK-NEXT: line975 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16114,12 +15024,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line965 +// CHECK-NEXT: line975 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line965 +// CHECK-NEXT: line975 // CHECK-NEXT: col55 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16139,12 +15049,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line965 +// CHECK-NEXT: line975 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line965 +// CHECK-NEXT: line975 // CHECK-NEXT: col28 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16152,12 +15062,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line966 +// CHECK-NEXT: line976 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line966 +// CHECK-NEXT: line976 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16169,7 +15079,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line966 +// CHECK-NEXT: line976 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16185,10 +15095,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextIOOpenFirmwarePathMatching_wrapper -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line966 +// CHECK-NEXT: line976 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16197,44 +15107,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col39 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line969 +// CHECK-NEXT: line979 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16242,12 +15118,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line969 +// CHECK-NEXT: line979 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line969 +// CHECK-NEXT: line979 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16267,25 +15143,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col30 +// CHECK-NEXT: line979 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line969 -// CHECK-NEXT: col39 +// CHECK-NEXT: line979 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16297,7 +15173,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16305,24 +15181,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col51 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col43 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col50 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16342,12 +15218,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line970 +// CHECK-NEXT: line980 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16355,12 +15231,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16372,7 +15248,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16380,12 +15256,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16406,7 +15282,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line971 +// CHECK-NEXT: line981 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16415,6 +15291,35 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line985 +// CHECK-NEXT: col30 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line985 +// CHECK-NEXT: col30 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line985 +// CHECK-NEXT: col41 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -16422,12 +15327,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line975 +// CHECK-NEXT: line985 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line975 +// CHECK-NEXT: line985 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16435,13 +15340,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col30 +// CHECK-NEXT: line986 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col39 +// CHECK-NEXT: line986 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -16452,95 +15357,32 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col30 +// CHECK-NEXT: line986 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col41 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count -// CHECK-NEXT: message -// CHECK-NEXT: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line975 -// CHECK-NEXT: col39 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line976 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line976 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line976 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col62 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col44 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col51 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16560,12 +15402,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line976 +// CHECK-NEXT: line986 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16573,12 +15415,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16590,7 +15432,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16598,12 +15440,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16624,7 +15466,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line977 +// CHECK-NEXT: line987 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16633,44 +15475,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col17 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col39 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line983 +// CHECK-NEXT: line993 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16678,12 +15486,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line983 +// CHECK-NEXT: line993 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line983 +// CHECK-NEXT: line993 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16703,25 +15511,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col30 +// CHECK-NEXT: line993 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line983 -// CHECK-NEXT: col39 +// CHECK-NEXT: line993 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16733,7 +15541,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16741,24 +15549,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col106 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col73 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16778,12 +15586,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line984 +// CHECK-NEXT: line994 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16791,12 +15599,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16808,7 +15616,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16816,12 +15624,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16842,7 +15650,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line985 +// CHECK-NEXT: line995 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16858,12 +15666,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1023 +// CHECK-NEXT: line1033 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1023 +// CHECK-NEXT: line1033 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16871,50 +15679,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1026 +// CHECK-NEXT: line1036 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1026 +// CHECK-NEXT: line1036 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -16922,7 +15696,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1026 +// CHECK-NEXT: line1036 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16930,12 +15704,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1026 +// CHECK-NEXT: line1036 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1026 +// CHECK-NEXT: line1036 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -16955,59 +15729,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1026 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1027 -// CHECK-NEXT: col46 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1027 -// CHECK-NEXT: col56 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1027 -// CHECK-NEXT: col46 +// CHECK-NEXT: line1036 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1027 -// CHECK-NEXT: col56 +// CHECK-NEXT: line1036 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17019,7 +15759,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17027,24 +15767,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17064,12 +15804,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1028 +// CHECK-NEXT: line1038 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17077,12 +15817,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17094,7 +15834,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17102,24 +15842,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17139,12 +15879,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1029 +// CHECK-NEXT: line1039 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17152,12 +15892,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17169,7 +15909,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17177,12 +15917,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17200,10 +15940,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7152619 -// CHECK-NEXT: issue_hash8 +// CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1030 +// CHECK-NEXT: line1040 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17219,12 +15959,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1039 +// CHECK-NEXT: line1049 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1039 +// CHECK-NEXT: line1049 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17232,12 +15972,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17253,12 +15993,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17266,12 +16006,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col67 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17283,7 +16023,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17291,12 +16031,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col69 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17316,12 +16056,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1051 +// CHECK-NEXT: line1061 // CHECK-NEXT: col67 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17329,12 +16069,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17346,7 +16086,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17354,12 +16094,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17377,10 +16117,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7184450 -// CHECK-NEXT: issue_hash12 +// CHECK-NEXT: issue_hash13 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1050 +// CHECK-NEXT: line1060 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17396,12 +16136,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1061 +// CHECK-NEXT: line1071 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1061 +// CHECK-NEXT: line1071 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17409,12 +16149,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17430,12 +16170,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17443,12 +16183,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17460,7 +16200,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17468,12 +16208,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col68 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17493,12 +16233,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17506,12 +16246,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17523,7 +16263,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17531,12 +16271,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17554,10 +16294,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7184450_pos -// CHECK-NEXT: issue_hash12 +// CHECK-NEXT: issue_hash13 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17573,12 +16313,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1061 +// CHECK-NEXT: line1071 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1061 +// CHECK-NEXT: line1071 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17586,12 +16326,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17607,12 +16347,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1072 +// CHECK-NEXT: line1082 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17620,12 +16360,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17637,7 +16377,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17645,12 +16385,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col107 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17670,12 +16410,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1073 +// CHECK-NEXT: line1083 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17683,12 +16423,46 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1077 +// CHECK-NEXT: line1085 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1085 +// CHECK-NEXT: col29 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1085 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1085 +// CHECK-NEXT: col29 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1087 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1077 +// CHECK-NEXT: line1087 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17700,7 +16474,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1077 +// CHECK-NEXT: line1087 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17716,10 +16490,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7184450_pos -// CHECK-NEXT: issue_hash17 +// CHECK-NEXT: issue_hash13 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1077 +// CHECK-NEXT: line1087 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17728,44 +16502,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1111 +// CHECK-NEXT: line1121 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17773,12 +16513,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1111 +// CHECK-NEXT: line1121 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1111 +// CHECK-NEXT: line1121 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17798,25 +16538,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1121 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1111 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1121 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1112 +// CHECK-NEXT: line1122 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1112 +// CHECK-NEXT: line1122 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17828,7 +16568,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1112 +// CHECK-NEXT: line1122 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17844,10 +16584,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7299394_positive -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1112 +// CHECK-NEXT: line1122 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17863,12 +16603,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1244 +// CHECK-NEXT: line1254 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1244 +// CHECK-NEXT: line1254 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17876,12 +16616,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17893,7 +16633,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17901,12 +16641,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1247 +// CHECK-NEXT: line1257 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17926,12 +16666,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1246 +// CHECK-NEXT: line1256 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17939,12 +16679,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1248 +// CHECK-NEXT: line1258 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1248 +// CHECK-NEXT: line1258 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17956,7 +16696,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1248 +// CHECK-NEXT: line1258 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17972,10 +16712,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_7358899 -// CHECK-NEXT: issue_hash9 +// CHECK-NEXT: issue_hash7 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1248 +// CHECK-NEXT: line1258 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -17984,44 +16724,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1264 +// CHECK-NEXT: line1274 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18029,12 +16735,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1264 +// CHECK-NEXT: line1274 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1264 +// CHECK-NEXT: line1274 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18054,25 +16760,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col10 +// CHECK-NEXT: line1274 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1264 -// CHECK-NEXT: col10 +// CHECK-NEXT: line1274 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1265 +// CHECK-NEXT: line1275 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1265 +// CHECK-NEXT: line1275 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18084,7 +16790,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1265 +// CHECK-NEXT: line1275 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18100,10 +16806,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar7265711_a -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1265 +// CHECK-NEXT: line1275 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18119,12 +16825,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1284 +// CHECK-NEXT: line1294 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1284 +// CHECK-NEXT: line1294 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18132,50 +16838,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1285 +// CHECK-NEXT: line1295 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 +// CHECK-NEXT: line1295 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -18183,7 +16855,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1285 +// CHECK-NEXT: line1295 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18191,12 +16863,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 +// CHECK-NEXT: line1295 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 +// CHECK-NEXT: line1295 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18216,25 +16888,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1295 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1285 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1295 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1286 +// CHECK-NEXT: line1296 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1286 +// CHECK-NEXT: line1296 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18246,7 +16918,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1286 +// CHECK-NEXT: line1296 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18262,10 +16934,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar7306898 -// CHECK-NEXT: issue_hash5 +// CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1286 +// CHECK-NEXT: line1296 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18277,7 +16949,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18285,12 +16957,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18311,7 +16983,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18327,12 +16999,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18340,12 +17012,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18357,7 +17029,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18365,12 +17037,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18391,7 +17063,7 @@ void foo() { // CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1296 +// CHECK-NEXT: line1306 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18407,12 +17079,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18420,12 +17092,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18437,7 +17109,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18445,12 +17117,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18471,7 +17143,7 @@ void foo() { // CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1297 +// CHECK-NEXT: line1307 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18487,12 +17159,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1295 +// CHECK-NEXT: line1305 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18500,12 +17172,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18517,7 +17189,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18525,12 +17197,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18551,7 +17223,7 @@ void foo() { // CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1298 +// CHECK-NEXT: line1308 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18560,44 +17232,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1325 +// CHECK-NEXT: line1335 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18605,12 +17243,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1325 +// CHECK-NEXT: line1335 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1325 +// CHECK-NEXT: line1335 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18630,25 +17268,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col19 +// CHECK-NEXT: line1335 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1325 -// CHECK-NEXT: col19 +// CHECK-NEXT: line1335 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1326 +// CHECK-NEXT: line1336 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1326 +// CHECK-NEXT: line1336 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18660,7 +17298,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1326 +// CHECK-NEXT: line1336 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18676,10 +17314,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_attr_1 -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1326 +// CHECK-NEXT: line1336 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18688,44 +17326,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1329 +// CHECK-NEXT: line1339 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18733,12 +17337,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1329 +// CHECK-NEXT: line1339 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1329 +// CHECK-NEXT: line1339 // CHECK-NEXT: col44 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18758,25 +17362,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col19 +// CHECK-NEXT: line1339 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1329 -// CHECK-NEXT: col19 +// CHECK-NEXT: line1339 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1330 +// CHECK-NEXT: line1340 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1330 +// CHECK-NEXT: line1340 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18788,7 +17392,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1330 +// CHECK-NEXT: line1340 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18804,10 +17408,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_attr_1b -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1330 +// CHECK-NEXT: line1340 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18823,12 +17427,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1333 +// CHECK-NEXT: line1343 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1333 +// CHECK-NEXT: line1343 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18836,50 +17440,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1334 +// CHECK-NEXT: line1344 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 +// CHECK-NEXT: line1344 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -18887,7 +17457,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1334 +// CHECK-NEXT: line1344 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18895,12 +17465,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 +// CHECK-NEXT: line1344 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 +// CHECK-NEXT: line1344 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18920,25 +17490,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col20 +// CHECK-NEXT: line1344 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1334 -// CHECK-NEXT: col20 +// CHECK-NEXT: line1344 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18954,12 +17524,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18967,12 +17537,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18984,7 +17554,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -18992,12 +17562,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19015,10 +17585,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_attr1c -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1335 +// CHECK-NEXT: line1345 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19034,12 +17604,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1333 +// CHECK-NEXT: line1343 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1333 +// CHECK-NEXT: line1343 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19047,12 +17617,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19068,12 +17638,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19081,12 +17651,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19098,7 +17668,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19106,12 +17676,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19124,44 +17694,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1336 -// CHECK-NEXT: col21 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1336 -// CHECK-NEXT: col21 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1336 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1336 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19169,24 +17705,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col46 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19206,12 +17742,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1336 +// CHECK-NEXT: line1346 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19219,12 +17755,46 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1337 +// CHECK-NEXT: line1346 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1346 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1346 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1346 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1347 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1337 +// CHECK-NEXT: line1347 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19236,7 +17806,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1337 +// CHECK-NEXT: line1347 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19252,10 +17822,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_attr1c -// CHECK-NEXT: issue_hash5 +// CHECK-NEXT: issue_hash4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1337 +// CHECK-NEXT: line1347 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19264,44 +17834,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1340 +// CHECK-NEXT: line1350 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19309,12 +17845,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1340 +// CHECK-NEXT: line1350 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1340 +// CHECK-NEXT: line1350 // CHECK-NEXT: col50 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19334,25 +17870,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1350 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1340 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1350 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1341 +// CHECK-NEXT: line1351 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1341 +// CHECK-NEXT: line1351 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19364,7 +17900,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1341 +// CHECK-NEXT: line1351 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19380,10 +17916,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestattr2_a -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1341 +// CHECK-NEXT: line1351 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19392,44 +17928,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1344 +// CHECK-NEXT: line1354 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19437,12 +17939,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1344 +// CHECK-NEXT: line1354 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1344 +// CHECK-NEXT: line1354 // CHECK-NEXT: col63 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19462,25 +17964,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1354 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1344 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1354 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1345 +// CHECK-NEXT: line1355 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1345 +// CHECK-NEXT: line1355 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19492,7 +17994,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1345 +// CHECK-NEXT: line1355 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19508,10 +18010,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestattr2_b -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1345 +// CHECK-NEXT: line1355 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19520,6 +18022,35 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1358 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1358 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1358 +// CHECK-NEXT: col63 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -19527,12 +18058,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 +// CHECK-NEXT: line1358 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 +// CHECK-NEXT: line1358 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19540,13 +18071,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1359 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1359 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -19554,35 +18085,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col63 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count -// CHECK-NEXT: message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -19590,25 +18092,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1359 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1348 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1359 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1350 +// CHECK-NEXT: line1360 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1350 +// CHECK-NEXT: line1360 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19620,7 +18122,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1350 +// CHECK-NEXT: line1360 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19636,10 +18138,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestattr2_b_11358224_self_assign_looses_the_leak -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1350 +// CHECK-NEXT: line1360 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19648,44 +18150,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19693,12 +18161,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19711,44 +18179,10 @@ void foo() { // CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1380 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19756,24 +18190,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19789,7 +18223,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19797,12 +18231,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col25 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19823,7 +18257,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1380 +// CHECK-NEXT: line1390 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19839,12 +18273,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19852,12 +18286,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19869,7 +18303,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19877,12 +18311,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19898,7 +18332,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1404 +// CHECK-NEXT: line1414 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19916,12 +18350,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1404 +// CHECK-NEXT: line1414 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1404 +// CHECK-NEXT: line1414 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19929,12 +18363,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19950,12 +18384,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19963,12 +18397,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19980,7 +18414,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -19988,12 +18422,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20009,7 +18443,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1394 +// CHECK-NEXT: line1404 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20027,26 +18461,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col8 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col10 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col21 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -20057,7 +18491,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20065,12 +18499,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col52 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20086,7 +18520,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20094,53 +18528,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1405 +// CHECK-NEXT: line1415 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth2 +// CHECK-NEXT: depth1 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning from 'returnsRetainedCFDate' // CHECK-NEXT: message // CHECK-NEXT: Returning from 'returnsRetainedCFDate' // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col26 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col53 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Returning from 'returnsCFRetainedAsCF' -// CHECK-NEXT: message -// CHECK-NEXT: Returning from 'returnsCFRetainedAsCF' -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -20148,26 +18553,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1415 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col8 +// CHECK-NEXT: line1415 +// CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1415 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1415 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -20175,6 +18580,35 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1423 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1423 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1423 +// CHECK-NEXT: col53 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Returning from 'returnsCFRetainedAsCF' +// CHECK-NEXT: message +// CHECK-NEXT: Returning from 'returnsCFRetainedAsCF' +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -20182,12 +18616,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20195,12 +18629,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20212,7 +18646,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20220,24 +18654,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20257,12 +18691,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20270,12 +18704,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20287,7 +18721,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20295,12 +18729,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20321,7 +18755,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1413 +// CHECK-NEXT: line1423 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20337,12 +18771,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20350,12 +18784,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20367,7 +18801,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20375,12 +18809,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20396,7 +18830,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1394 +// CHECK-NEXT: line1404 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20414,26 +18848,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col8 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col10 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col21 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -20444,7 +18878,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20452,12 +18886,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col52 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20473,7 +18907,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20481,18 +18915,18 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning from 'returnsRetainedCFDate' // CHECK-NEXT: message @@ -20506,46 +18940,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1417 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1417 -// CHECK-NEXT: col20 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1417 -// CHECK-NEXT: col40 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20553,12 +18953,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20570,7 +18970,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20578,24 +18978,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20611,7 +19011,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20619,12 +19019,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20645,7 +19045,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1417 +// CHECK-NEXT: line1427 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20661,12 +19061,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20674,12 +19074,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20691,7 +19091,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20699,12 +19099,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20720,7 +19120,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1394 +// CHECK-NEXT: line1404 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20738,26 +19138,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col8 +// CHECK-NEXT: line1404 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col10 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 -// CHECK-NEXT: col21 +// CHECK-NEXT: line1406 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -20768,7 +19168,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20776,12 +19176,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1396 +// CHECK-NEXT: line1406 // CHECK-NEXT: col52 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20797,7 +19197,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20805,18 +19205,18 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning from 'returnsRetainedCFDate' // CHECK-NEXT: message @@ -20830,46 +19230,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1421 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1421 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1421 -// CHECK-NEXT: col30 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20877,12 +19243,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20894,7 +19260,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20902,24 +19268,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20935,7 +19301,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20943,12 +19309,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col32 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20969,7 +19335,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1421 +// CHECK-NEXT: line1431 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20985,12 +19351,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1441 +// CHECK-NEXT: line1451 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1441 +// CHECK-NEXT: line1451 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -20998,50 +19364,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col13 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1442 +// CHECK-NEXT: line1452 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 +// CHECK-NEXT: line1452 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col36 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -21049,7 +19381,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1442 +// CHECK-NEXT: line1452 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21057,12 +19389,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 +// CHECK-NEXT: line1452 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 +// CHECK-NEXT: line1452 // CHECK-NEXT: col82 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21082,25 +19414,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1452 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1442 -// CHECK-NEXT: col36 +// CHECK-NEXT: line1452 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1443 +// CHECK-NEXT: line1453 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1443 +// CHECK-NEXT: line1453 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21112,7 +19444,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1443 +// CHECK-NEXT: line1453 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21128,10 +19460,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_panic_negative -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1443 +// CHECK-NEXT: line1453 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21147,12 +19479,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1452 +// CHECK-NEXT: line1462 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1452 +// CHECK-NEXT: line1462 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21160,12 +19492,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1453 +// CHECK-NEXT: line1463 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1453 +// CHECK-NEXT: line1463 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21174,6 +19506,35 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1463 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1463 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1463 +// CHECK-NEXT: col82 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -21181,12 +19542,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1453 +// CHECK-NEXT: line1463 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1453 +// CHECK-NEXT: line1463 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21194,75 +19555,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col36 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col82 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count -// CHECK-NEXT: message -// CHECK-NEXT: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1453 -// CHECK-NEXT: col36 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21278,12 +19576,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21291,12 +19589,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21308,7 +19606,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21316,12 +19614,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21341,12 +19639,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1454 +// CHECK-NEXT: line1464 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21354,12 +19652,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1456 +// CHECK-NEXT: line1466 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1456 +// CHECK-NEXT: line1466 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21371,7 +19669,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1456 +// CHECK-NEXT: line1466 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21387,10 +19685,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_panic_neg_2 -// CHECK-NEXT: issue_hash5 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1456 +// CHECK-NEXT: line1466 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21399,44 +19697,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1476 +// CHECK-NEXT: line1486 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21444,12 +19708,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1476 +// CHECK-NEXT: line1486 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1476 +// CHECK-NEXT: line1486 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21469,25 +19733,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1486 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1476 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1486 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21499,7 +19763,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21507,12 +19771,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21530,10 +19794,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_blocks_1_pos -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1477 +// CHECK-NEXT: line1487 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21542,44 +19806,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1497 +// CHECK-NEXT: line1507 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21587,12 +19817,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1497 +// CHECK-NEXT: line1507 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1497 +// CHECK-NEXT: line1507 // CHECK-NEXT: col53 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21612,25 +19842,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1507 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1497 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1507 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21642,7 +19872,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21650,12 +19880,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col39 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21671,7 +19901,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21689,12 +19919,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21702,12 +19932,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21719,7 +19949,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21727,24 +19957,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col28 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21760,7 +19990,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21768,18 +19998,18 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col39 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Returning to caller // CHECK-NEXT: message @@ -21793,12 +20023,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1498 +// CHECK-NEXT: line1508 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21806,12 +20036,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1499 +// CHECK-NEXT: line1509 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1499 +// CHECK-NEXT: line1509 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21823,7 +20053,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1499 +// CHECK-NEXT: line1509 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21839,10 +20069,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_blocks_1_indirect_retain_via_call -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1499 +// CHECK-NEXT: line1509 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21858,12 +20088,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1549 +// CHECK-NEXT: line1559 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1549 +// CHECK-NEXT: line1559 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21871,12 +20101,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1552 +// CHECK-NEXT: line1562 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1552 +// CHECK-NEXT: line1562 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21885,6 +20115,35 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1562 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1562 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1562 +// CHECK-NEXT: col38 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Entering loop body +// CHECK-NEXT: message +// CHECK-NEXT: Entering loop body +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -21892,12 +20151,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1552 +// CHECK-NEXT: line1562 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1552 +// CHECK-NEXT: line1562 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21905,12 +20164,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1553 +// CHECK-NEXT: line1563 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1553 +// CHECK-NEXT: line1563 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21926,12 +20185,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1553 +// CHECK-NEXT: line1563 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1553 +// CHECK-NEXT: line1563 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21939,50 +20198,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1555 +// CHECK-NEXT: line1565 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 +// CHECK-NEXT: line1565 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col16 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col34 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -21990,7 +20215,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1555 +// CHECK-NEXT: line1565 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -21998,12 +20223,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 +// CHECK-NEXT: line1565 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 +// CHECK-NEXT: line1565 // CHECK-NEXT: col49 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22023,25 +20248,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1565 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1555 -// CHECK-NEXT: col34 +// CHECK-NEXT: line1565 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22057,12 +20282,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22070,12 +20295,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22087,7 +20312,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22095,12 +20320,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col30 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22120,12 +20345,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1557 +// CHECK-NEXT: line1567 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22133,13 +20358,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1570 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col21 +// CHECK-NEXT: line1570 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -22150,25 +20375,10 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1570 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col91 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Object leaked: object allocated and stored into 'info' is not referenced later in this execution path and has a retain count of +1 @@ -22181,11 +20391,11 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar_8724287 -// CHECK-NEXT: issue_hash12 +// CHECK-NEXT: issue_hash7 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1560 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1570 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -22193,44 +20403,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22238,12 +20414,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22256,44 +20432,10 @@ void foo() { // CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1605 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22301,24 +20443,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22334,7 +20476,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22342,12 +20484,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22368,7 +20510,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1605 +// CHECK-NEXT: line1615 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22377,44 +20519,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22422,12 +20530,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22440,44 +20548,10 @@ void foo() { // CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1613 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22485,24 +20559,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22518,7 +20592,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22526,12 +20600,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22552,7 +20626,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1613 +// CHECK-NEXT: line1623 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22561,44 +20635,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22606,12 +20646,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22624,44 +20664,10 @@ void foo() { // CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1634 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22669,24 +20675,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22702,7 +20708,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22710,12 +20716,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22736,7 +20742,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1634 +// CHECK-NEXT: line1644 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22745,44 +20751,10 @@ void foo() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22790,12 +20762,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22808,44 +20780,10 @@ void foo() { // CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col29 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1646 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22853,24 +20791,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22886,7 +20824,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22894,12 +20832,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col60 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22920,7 +20858,7 @@ void foo() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1646 +// CHECK-NEXT: line1656 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22936,12 +20874,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1666 +// CHECK-NEXT: line1676 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1666 +// CHECK-NEXT: line1676 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -22949,50 +20887,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col11 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1667 +// CHECK-NEXT: line1677 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 +// CHECK-NEXT: line1677 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col24 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -23000,7 +20904,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1667 +// CHECK-NEXT: line1677 // CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23008,12 +20912,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 +// CHECK-NEXT: line1677 // CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 +// CHECK-NEXT: line1677 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23033,25 +20937,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col24 +// CHECK-NEXT: line1677 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1667 -// CHECK-NEXT: col35 +// CHECK-NEXT: line1677 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1668 +// CHECK-NEXT: line1678 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1668 +// CHECK-NEXT: line1678 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23063,7 +20967,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1668 +// CHECK-NEXT: line1678 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23079,10 +20983,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contextrdar6582778 -// CHECK-NEXT: issue_hash3 +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1668 +// CHECK-NEXT: line1678 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23098,12 +21002,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1692 +// CHECK-NEXT: line1702 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1692 +// CHECK-NEXT: line1702 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23111,12 +21015,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 +// CHECK-NEXT: line1704 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 +// CHECK-NEXT: line1704 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23125,44 +21029,10 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1694 +// CHECK-NEXT: line1704 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23170,12 +21040,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 +// CHECK-NEXT: line1704 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 +// CHECK-NEXT: line1704 // CHECK-NEXT: col64 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23195,25 +21065,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1704 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1694 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1704 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23225,7 +21095,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23233,24 +21103,24 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23270,12 +21140,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1695 +// CHECK-NEXT: line1705 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23283,12 +21153,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23304,12 +21174,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23317,12 +21187,12 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23334,7 +21204,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23342,12 +21212,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col28 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col33 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23368,7 +21238,7 @@ void foo() { // CHECK-NEXT: issue_hash6 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1697 +// CHECK-NEXT: line1707 // CHECK-NEXT: col27 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23384,46 +21254,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1834 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1834 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23431,50 +21267,16 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col15 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1818 +// CHECK-NEXT: line1835 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 +// CHECK-NEXT: line1835 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col22 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -23482,7 +21284,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1818 +// CHECK-NEXT: line1835 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23490,12 +21292,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 +// CHECK-NEXT: line1835 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 +// CHECK-NEXT: line1835 // CHECK-NEXT: col66 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23515,25 +21317,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1835 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1818 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1835 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23545,7 +21347,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23553,12 +21355,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23576,10 +21378,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_objc_arrays -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_hash3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1821 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23595,26 +21397,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23629,26 +21431,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23663,26 +21465,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1844 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1844 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23693,7 +21495,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1827 +// CHECK-NEXT: line1844 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23701,12 +21503,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 +// CHECK-NEXT: line1844 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 +// CHECK-NEXT: line1844 // CHECK-NEXT: col56 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23726,25 +21528,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1844 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1827 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1844 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23756,7 +21558,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23764,12 +21566,12 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23787,10 +21589,10 @@ void foo() { // CHECK-NEXT: typeLeak // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest_objc_arrays -// CHECK-NEXT: issue_hash15 +// CHECK-NEXT: issue_hash12 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1830 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -23806,26 +21608,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23840,26 +21642,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23874,26 +21676,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23901,35 +21703,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col27 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count -// CHECK-NEXT: message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -23937,26 +21710,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -23964,47 +21737,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col24 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col27 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count -// CHECK-NEXT: message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24012,26 +21744,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1835 -// CHECK-NEXT: col23 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1838 +// CHECK-NEXT: line1852 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1838 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24039,52 +21771,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1838 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1838 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1838 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'a3' -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_arrays -// CHECK-NEXT: issue_hash23 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1838 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24092,26 +21778,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24119,6 +21805,76 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col35 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1852 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24126,25 +21882,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1852 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 +// CHECK-NEXT: line1852 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 +// CHECK-NEXT: line1852 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24160,12 +21916,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 +// CHECK-NEXT: line1852 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 +// CHECK-NEXT: line1852 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24173,13 +21929,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24190,31 +21946,48 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col57 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'a3' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_arrays +// CHECK-NEXT: issue_hash20 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -24223,25 +21996,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1843 -// CHECK-NEXT: col22 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1847 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1847 +// CHECK-NEXT: line1838 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24250,52 +22023,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1847 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1847 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1847 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'a' -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_arrays -// CHECK-NEXT: issue_hash32 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1847 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24303,25 +22030,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1816 -// CHECK-NEXT: col5 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1842 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24337,12 +22064,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1842 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1817 +// CHECK-NEXT: line1842 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24350,13 +22077,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col20 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24371,26 +22098,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 +// CHECK-NEXT: line1847 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col20 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24398,35 +22125,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: NSDictionary literal is an object with a +0 retain count -// CHECK-NEXT: message -// CHECK-NEXT: NSDictionary literal is an object with a +0 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24434,26 +22132,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24461,47 +22159,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col43 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col28 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col35 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count -// CHECK-NEXT: message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24509,26 +22166,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1852 -// CHECK-NEXT: col27 +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1856 +// CHECK-NEXT: line1859 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1856 -// CHECK-NEXT: col9 +// CHECK-NEXT: line1859 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24536,52 +22193,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1856 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1856 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1856 -// CHECK-NEXT: col23 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'a' -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_arrays -// CHECK-NEXT: issue_hash41 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1856 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24589,25 +22200,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1859 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col4 +// CHECK-NEXT: line1859 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1860 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 +// CHECK-NEXT: line1860 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24619,30 +22230,30 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1860 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1860 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1860 +// CHECK-NEXT: col57 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: NSNumber literal is an object with a +0 retain count +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: message -// CHECK-NEXT: NSNumber literal is an object with a +0 retain count +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -24652,12 +22263,12 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1860 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 +// CHECK-NEXT: line1860 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24665,13 +22276,13 @@ void foo() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24682,43 +22293,48 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col24 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col16 +// CHECK-NEXT: line1864 +// CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'a' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_arrays +// CHECK-NEXT: issue_hash28 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -24727,26 +22343,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1861 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1834 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1863 -// CHECK-NEXT: col1 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1863 -// CHECK-NEXT: col1 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24754,37 +22370,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1863 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_integer_literals -// CHECK-NEXT: issue_hash3 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1863 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24792,26 +22377,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col3 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col4 +// CHECK-NEXT: line1838 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24819,35 +22404,6 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col18 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: NSNumber boxed expression produces an object with a +0 retain count -// CHECK-NEXT: message -// CHECK-NEXT: NSNumber boxed expression produces an object with a +0 retain count -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -24855,26 +22411,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 +// CHECK-NEXT: line1842 +// CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -24882,45 +22438,2156 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 -// CHECK-NEXT: file0 -// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1847 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1851 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1851 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1855 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1859 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1859 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1859 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1859 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1864 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1868 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1868 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1868 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1868 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col35 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSDictionary literal is an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSDictionary literal is an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col43 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col35 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1869 +// CHECK-NEXT: col20 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'a' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_arrays +// CHECK-NEXT: issue_hash37 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1873 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSNumber literal is an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSNumber literal is an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1878 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1879 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1879 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1879 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1879 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1880 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1880 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1880 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_integer_literals +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1880 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col18 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSNumber boxed expression produces an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSNumber boxed expression produces an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col18 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col14 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col21 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_boxed_expressions +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1883 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSString boxed expression produces an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSString boxed expression produces an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col15 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1886 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1887 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1888 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1888 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1888 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_objc_boxed_expressions +// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1888 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1894 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1894 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col6 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col6 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Assuming 'y' is <= 2 +// CHECK-NEXT: message +// CHECK-NEXT: Assuming 'y' is <= 2 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1895 +// CHECK-NEXT: col8 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col21 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col21 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col43 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1898 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1899 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1899 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1899 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1899 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col25 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col6 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object released +// CHECK-NEXT: message +// CHECK-NEXT: Object released +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1900 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col25 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col35 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: message +// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionReference-counted object is used after it is released +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeUse-after-release +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contextrdar11400885 +// CHECK-NEXT: issue_hash9 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1901 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1920 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1920 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col21 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1928 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col35 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeBad release +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttestConsumeAndStopTracking +// CHECK-NEXT: issue_hash10 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1929 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1933 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1933 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col21 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1941 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col26 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col28 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col48 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeBad release +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttestCFConsumeAndStopTracking +// CHECK-NEXT: issue_hash10 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1942 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1954 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1954 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1954 +// CHECK-NEXT: col31 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1954 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1954 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1955 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1955 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1955 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'x' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttest_custom_cf +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1955 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1989 +// CHECK-NEXT: col18 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1989 +// CHECK-NEXT: col18 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1989 +// CHECK-NEXT: col29 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'makeCustom' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'makeCustom' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1989 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1989 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1990 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1990 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1990 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'obj' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttestCustomReturnsRetained +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1990 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1993 +// CHECK-NEXT: col13 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1993 +// CHECK-NEXT: col13 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line1993 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'getCustom' returns a Core Foundation object with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'getCustom' returns a Core Foundation object with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1993 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 +// CHECK-NEXT: line1993 +// CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col26 +// CHECK-NEXT: line1993 +// CHECK-NEXT: col23 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: message +// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeBad release +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttestCustomReturnsNotRetained +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line1993 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col15 +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col18 +// CHECK-NEXT: line2012 +// CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Calling 'initX' // CHECK-NEXT: message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Calling 'initX' +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2005 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth1 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Entered call from 'test12706177' +// CHECK-NEXT: message +// CHECK-NEXT: Entered call from 'test12706177' // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -24930,28 +24597,188 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 +// CHECK-NEXT: line2005 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col14 +// CHECK-NEXT: line2005 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1870 +// CHECK-NEXT: line2006 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1870 +// CHECK-NEXT: line2006 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth1 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Assuming 'Cond' is not equal to 0 +// CHECK-NEXT: message +// CHECK-NEXT: Assuming 'Cond' is not equal to 0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col7 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2006 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2007 +// CHECK-NEXT: col5 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2007 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col38 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Returning from 'initX' +// CHECK-NEXT: message +// CHECK-NEXT: Returning from 'initX' +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindcontrol +// CHECK-NEXT: edges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: start +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: end +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2012 +// CHECK-NEXT: col4 +// CHECK-NEXT: file0 +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: @@ -24960,7 +24787,7 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1870 +// CHECK-NEXT: line2012 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -24968,33 +24795,33 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1870 +// CHECK-NEXT: line2012 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1870 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2012 +// CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: descriptionPotential leak of an object // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) // CHECK-NEXT: typeLeak -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_boxed_expressions -// CHECK-NEXT: issue_hash5 +// CHECK-NEXT: issue_context_kindObjective-C method +// CHECK-NEXT: issue_contexttest12706177 +// CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1870 +// CHECK-NEXT: line2012 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -25010,60 +24837,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1866 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1869 +// CHECK-NEXT: line2028 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col7 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25074,30 +24867,30 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col15 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col39 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: NSString boxed expression produces an object with a +0 retain count +// CHECK-NEXT: Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: NSString boxed expression produces an object with a +0 retain count +// CHECK-NEXT: Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25107,26 +24900,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col37 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25137,42 +24930,42 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col23 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col15 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col39 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Reference count incremented. The object now has a +1 retain count +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25182,26 +24975,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1869 -// CHECK-NEXT: col11 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1871 -// CHECK-NEXT: col1 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1871 -// CHECK-NEXT: col1 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25212,27 +25005,83 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1871 -// CHECK-NEXT: col1 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col40 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col10 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col40 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object returned to caller with a +0 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Object returned to caller with a +0 retain count +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2028 +// CHECK-NEXT: col40 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'value' +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_objc_boxed_expressions -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_contextgetIncorrectlyAutoreleasedCFType +// CHECK-NEXT: issue_hash2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1871 -// CHECK-NEXT: col1 +// CHECK-NEXT: line2028 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25247,26 +25096,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1876 +// CHECK-NEXT: line2033 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1876 -// CHECK-NEXT: col3 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1877 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1877 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25274,38 +25123,33 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1877 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1877 -// CHECK-NEXT: col12 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col6 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col42 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25315,26 +25159,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col6 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col40 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25345,30 +25189,42 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col12 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col43 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col24 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col42 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Assuming 'y' is <= 2 +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Assuming 'y' is <= 2 +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25378,26 +25234,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1878 -// CHECK-NEXT: col8 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col7 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col17 +// CHECK-NEXT: line2033 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25405,6 +25261,81 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col43 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: message +// CHECK-NEXT: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionObject with a +0 retain count returned to caller where a +1 (owning) retain count is expected +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeMethod should return an owned object +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contextcreateIncorrectlyAutoreleasedCFType +// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2033 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2048 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2048 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2048 +// CHECK-NEXT: col37 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -25412,26 +25343,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col7 +// CHECK-NEXT: line2048 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col17 +// CHECK-NEXT: line2048 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25442,30 +25373,42 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col43 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2049 +// CHECK-NEXT: col13 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2049 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: Object released // CHECK-NEXT: message -// CHECK-NEXT: Method returns an Objective-C object with a +1 retain count +// CHECK-NEXT: Object released // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25475,26 +25418,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1881 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2049 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1882 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2052 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1882 -// CHECK-NEXT: col9 +// CHECK-NEXT: line2052 +// CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25502,6 +25445,81 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2052 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2052 +// CHECK-NEXT: col9 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2052 +// CHECK-NEXT: col11 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: message +// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionReference-counted object is used after it is released +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeUse-after-release +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contextuseAfterRelease +// CHECK-NEXT: issue_hash7 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2052 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2057 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2057 +// CHECK-NEXT: col19 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2057 +// CHECK-NEXT: col37 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -25509,26 +25527,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1882 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2057 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1882 -// CHECK-NEXT: col9 +// CHECK-NEXT: line2057 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25539,42 +25557,42 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col25 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col39 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col6 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col16 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object released +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Object released +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25584,26 +25602,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1883 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2058 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col9 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25614,48 +25632,43 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col5 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col25 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col35 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col18 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2059 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2059 +// CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Reference-counted object is used after it is released +// CHECK-NEXT: Reference count incremented. The object now has a +2 retain count // CHECK-NEXT: message -// CHECK-NEXT: Reference-counted object is used after it is released -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionReference-counted object is used after it is released -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeUse-after-release -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contextrdar11400885 -// CHECK-NEXT: issue_hash9 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1884 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: +// CHECK-NEXT: Reference count incremented. The object now has a +2 retain count +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -25664,26 +25677,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1903 +// CHECK-NEXT: line2059 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1903 -// CHECK-NEXT: col4 +// CHECK-NEXT: line2059 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col3 +// CHECK-NEXT: line2060 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col4 +// CHECK-NEXT: line2060 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25691,67 +25704,64 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2060 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: message +// CHECK-NEXT: Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'obj' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contexttestAutoreleaseReturnsInput +// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2060 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2077 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2077 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col21 +// CHECK-NEXT: line2077 +// CHECK-NEXT: col70 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -25761,26 +25771,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2077 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1911 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2077 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1912 +// CHECK-NEXT: line2078 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1912 -// CHECK-NEXT: col24 +// CHECK-NEXT: line2078 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25791,48 +25801,43 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1912 -// CHECK-NEXT: col3 +// CHECK-NEXT: line2078 +// CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1912 -// CHECK-NEXT: col26 +// CHECK-NEXT: line2078 +// CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1912 -// CHECK-NEXT: col35 +// CHECK-NEXT: line2078 +// CHECK-NEXT: col62 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2078 +// CHECK-NEXT: col48 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2078 +// CHECK-NEXT: col61 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeBad release -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttestConsumeAndStopTracking -// CHECK-NEXT: issue_hash10 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1912 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -25841,26 +25846,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1916 +// CHECK-NEXT: line2078 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1916 -// CHECK-NEXT: col4 +// CHECK-NEXT: line2078 +// CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 +// CHECK-NEXT: line2079 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col4 +// CHECK-NEXT: line2079 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25868,6 +25873,47 @@ void foo() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: kindevent +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2079 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: ranges +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2079 +// CHECK-NEXT: col3 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2079 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2079 +// CHECK-NEXT: col12 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2079 +// CHECK-NEXT: col16 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: depth0 +// CHECK-NEXT: extended_message +// CHECK-NEXT: Reference count incremented. The object now has a +2 retain count +// CHECK-NEXT: message +// CHECK-NEXT: Reference count incremented. The object now has a +2 retain count +// CHECK-NEXT: +// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -25875,26 +25921,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 +// CHECK-NEXT: line2079 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col4 +// CHECK-NEXT: line2079 +// CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2080 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2080 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25905,31 +25951,33 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2080 +// CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col21 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'arr' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: message -// CHECK-NEXT: NSArray literal is an object with a +0 retain count +// CHECK-NEXT: Object leaked: object allocated and stored into 'arr' is not referenced later in this execution path and has a retain count of +1 // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: descriptionPotential leak of an object stored into 'arr' +// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) +// CHECK-NEXT: typeLeak +// CHECK-NEXT: issue_context_kindfunction +// CHECK-NEXT: issue_contextautoreleaseReturningTypedObject +// CHECK-NEXT: issue_hash1 +// CHECK-NEXT: location +// CHECK-NEXT: +// CHECK-NEXT: line2080 +// CHECK-NEXT: col1 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: path +// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -25938,26 +25986,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2091 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1924 -// CHECK-NEXT: col19 +// CHECK-NEXT: line2091 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1925 +// CHECK-NEXT: line2094 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1925 -// CHECK-NEXT: col26 +// CHECK-NEXT: line2094 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -25968,48 +26016,31 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1925 -// CHECK-NEXT: col3 +// CHECK-NEXT: line2094 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1925 -// CHECK-NEXT: col28 +// CHECK-NEXT: line2094 +// CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1925 -// CHECK-NEXT: col48 +// CHECK-NEXT: line2094 +// CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: NSNumber literal is an object with a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: Incorrect decrement of the reference count of an object that is not owned at this point by the caller +// CHECK-NEXT: NSNumber literal is an object with a +0 retain count // CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: descriptionIncorrect decrement of the reference count of an object that is not owned at this point by the caller -// CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeBad release -// CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttestCFConsumeAndStopTracking -// CHECK-NEXT: issue_hash10 -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line1925 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: path -// CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges @@ -26018,26 +26049,26 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 +// CHECK-NEXT: line2094 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col10 +// CHECK-NEXT: line2094 +// CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col16 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col29 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -26048,30 +26079,42 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col16 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: ranges // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col16 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col31 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col27 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2095 +// CHECK-NEXT: col17 +// CHECK-NEXT: file0 +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: line2095 +// CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: message -// CHECK-NEXT: Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count +// CHECK-NEXT: Object autoreleased // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -26081,25 +26124,25 @@ void foo() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col16 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1937 -// CHECK-NEXT: col29 +// CHECK-NEXT: line2095 +// CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1938 +// CHECK-NEXT: line2096 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line1938 +// CHECK-NEXT: line2096 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -26111,28 +26154,30 @@ void foo() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1938 +// CHECK-NEXT: line2096 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: message -// CHECK-NEXT: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1 +// CHECK-NEXT: Object was autoreleased but has a +0 retain count // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: descriptionPotential leak of an object stored into 'x' +// CHECK-NEXT: descriptionObject autoreleased too many times // CHECK-NEXT: categoryMemory (Core Foundation/Objective-C) -// CHECK-NEXT: typeLeak +// CHECK-NEXT: typeObject autoreleased too many times // CHECK-NEXT: issue_context_kindfunction -// CHECK-NEXT: issue_contexttest_custom_cf -// CHECK-NEXT: issue_hash2 +// CHECK-NEXT: issue_contextautoreleaseObjC +// CHECK-NEXT: issue_hash6 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line1938 +// CHECK-NEXT: line2096 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: diff --git a/test/Analysis/stack-addr-ps.cpp b/test/Analysis/stack-addr-ps.cpp index a39f9c7dc726..a4ab2f3985c6 100644 --- a/test/Analysis/stack-addr-ps.cpp +++ b/test/Analysis/stack-addr-ps.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s -Wno-undefined-bool-conversion typedef __INTPTR_TYPE__ intptr_t; diff --git a/test/Analysis/stackaddrleak.c b/test/Analysis/stackaddrleak.c index 4f81f6623e51..21a15d75eca0 100644 --- a/test/Analysis/stackaddrleak.c +++ b/test/Analysis/stackaddrleak.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -std=c99 -Dbool=_Bool %s -// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -x c++ %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -std=c99 -Dbool=_Bool -Wno-bool-conversion %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -x c++ -Wno-bool-conversion %s typedef __INTPTR_TYPE__ intptr_t; char const *p; diff --git a/test/Analysis/superclass.m b/test/Analysis/superclass.m index ba5ea40aceb7..d5d3c4764073 100644 --- a/test/Analysis/superclass.m +++ b/test/Analysis/superclass.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fblocks -analyze -analyzer-checker=alpha.osx.cocoa.MissingSuperCall -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -fblocks -analyze -analyzer-checker=osx.cocoa.MissingSuperCall -verify -Wno-objc-root-class %s // Define used Classes @protocol NSObject diff --git a/test/Analysis/temp-obj-dtors-cfg-output.cpp b/test/Analysis/temp-obj-dtors-cfg-output.cpp index ff68a876e910..5fb33d36b855 100644 --- a/test/Analysis/temp-obj-dtors-cfg-output.cpp +++ b/test/Analysis/temp-obj-dtors-cfg-output.cpp @@ -1,7 +1,6 @@ // RUN: rm -f %t // RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-temporary-dtors=true %s > %t 2>&1 // RUN: FileCheck --input-file=%t %s -// XPASS: * class A { public: @@ -52,6 +51,37 @@ void test_cond() { int b; } +struct C { + C():b_(true) {} + ~C() {} + + operator bool() { return b_; } + bool b_; +}; + +struct D { + D():b_(true) {} + + operator bool() { return b_; } + bool b_; +}; + +int test_cond_unnamed_custom_destructor() { + if (C()) { return 1; } else { return 0; } +} + +int test_cond_named_custom_destructor() { + if (C c = C()) { return 1; } else { return 0; } +} + +int test_cond_unnamed_auto_destructor() { + if (D()) { return 1; } else { return 0; } +} + +int test_cond_named_auto_destructor() { + if (D d = D()) { return 1; } else { return 0; } +} + void test_cond_cref() { const A& a = B() ? A() : A(B()); foo(B() ? A() : A(B())); @@ -126,6 +156,38 @@ void test_noreturn2() { int b; } +extern bool check(const NoReturn&); + +// PR16664 and PR18159 +int testConsistencyNestedSimple(bool value) { + if (value) { + if (!value || check(NoReturn())) { + return 1; + } + } + return 0; +} + +// PR16664 and PR18159 +int testConsistencyNestedComplex(bool value) { + if (value) { + if (!value || !value || check(NoReturn())) { + return 1; + } + } + return 0; +} + +// PR16664 and PR18159 +int testConsistencyNestedNormalReturn(bool value) { + if (value) { + if (!value || value || check(NoReturn())) { + return 1; + } + } + return 0; +} + // CHECK: [B1 (ENTRY)] // CHECK: Succs (1): B0 // CHECK: [B0 (EXIT)] @@ -212,17 +274,17 @@ void test_noreturn2() { // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B1.1] (BindTemporary) // CHECK: 3: [B1.2].operator int -// CHECK: 4: [B1.3]() +// CHECK: 4: [B1.2] // CHECK: 5: [B1.4] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 6: int([B1.5]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 7: B() (CXXConstructExpr, class B) // CHECK: 8: [B1.7] (BindTemporary) // CHECK: 9: [B1.8].operator int -// CHECK: 10: [B1.9]() +// CHECK: 10: [B1.8] // CHECK: 11: [B1.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 12: int([B1.11]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 13: [B1.6] + [B1.12] -// CHECK: 14: int a = int(A().operator int()) + int(B().operator int()); +// CHECK: 14: int a = int(A()) + int(B()); // CHECK: 15: ~B() (Temporary object destructor) // CHECK: 16: ~A() (Temporary object destructor) // CHECK: 17: foo @@ -230,13 +292,13 @@ void test_noreturn2() { // CHECK: 19: A() (CXXConstructExpr, class A) // CHECK: 20: [B1.19] (BindTemporary) // CHECK: 21: [B1.20].operator int -// CHECK: 22: [B1.21]() +// CHECK: 22: [B1.20] // CHECK: 23: [B1.22] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 24: int([B1.23]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 25: B() (CXXConstructExpr, class B) // CHECK: 26: [B1.25] (BindTemporary) // CHECK: 27: [B1.26].operator int -// CHECK: 28: [B1.27]() +// CHECK: 28: [B1.26] // CHECK: 29: [B1.28] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 30: int([B1.29]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 31: [B1.24] + [B1.30] @@ -262,14 +324,14 @@ void test_noreturn2() { // CHECK: [B3] // CHECK: 1: [B5.8] && [B4.5] // CHECK: 2: [B5.3]([B3.1]) -// CHECK: T: [B5.8] && ... +// CHECK: T: (Temp Dtor) [B5.8] && ... // CHECK: Preds (2): B4 B5 // CHECK: Succs (2): B2 B1 // CHECK: [B4] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B4.1] (BindTemporary) -// CHECK: 3: [B4.2].operator _Bool -// CHECK: 4: [B4.3]() +// CHECK: 3: [B4.2].operator bool +// CHECK: 4: [B4.2] // CHECK: 5: [B4.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: Preds (1): B5 // CHECK: Succs (1): B3 @@ -279,8 +341,8 @@ void test_noreturn2() { // CHECK: 3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool)) // CHECK: 4: A() (CXXConstructExpr, class A) // CHECK: 5: [B5.4] (BindTemporary) -// CHECK: 6: [B5.5].operator _Bool -// CHECK: 7: [B5.6]() +// CHECK: 6: [B5.5].operator bool +// CHECK: 7: [B5.5] // CHECK: 8: [B5.7] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B5.8] && ... // CHECK: Preds (2): B6 B7 @@ -291,23 +353,23 @@ void test_noreturn2() { // CHECK: Succs (1): B5 // CHECK: [B7] // CHECK: 1: [B9.5] && [B8.5] -// CHECK: 2: bool a = A().operator _Bool() && B().operator _Bool(); -// CHECK: T: [B9.5] && ... +// CHECK: 2: bool a = A() && B(); +// CHECK: T: (Temp Dtor) [B9.5] && ... // CHECK: Preds (2): B8 B9 // CHECK: Succs (2): B6 B5 // CHECK: [B8] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B8.1] (BindTemporary) -// CHECK: 3: [B8.2].operator _Bool -// CHECK: 4: [B8.3]() +// CHECK: 3: [B8.2].operator bool +// CHECK: 4: [B8.2] // CHECK: 5: [B8.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: Preds (1): B9 // CHECK: Succs (1): B7 // CHECK: [B9] // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B9.1] (BindTemporary) -// CHECK: 3: [B9.2].operator _Bool -// CHECK: 4: [B9.3]() +// CHECK: 3: [B9.2].operator bool +// CHECK: 4: [B9.2] // CHECK: 5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B9.5] && ... // CHECK: Preds (1): B10 @@ -328,14 +390,14 @@ void test_noreturn2() { // CHECK: [B3] // CHECK: 1: [B5.8] || [B4.5] // CHECK: 2: [B5.3]([B3.1]) -// CHECK: T: [B5.8] || ... +// CHECK: T: (Temp Dtor) [B5.8] || ... // CHECK: Preds (2): B4 B5 // CHECK: Succs (2): B1 B2 // CHECK: [B4] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B4.1] (BindTemporary) -// CHECK: 3: [B4.2].operator _Bool -// CHECK: 4: [B4.3]() +// CHECK: 3: [B4.2].operator bool +// CHECK: 4: [B4.2] // CHECK: 5: [B4.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: Preds (1): B5 // CHECK: Succs (1): B3 @@ -345,8 +407,8 @@ void test_noreturn2() { // CHECK: 3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool)) // CHECK: 4: A() (CXXConstructExpr, class A) // CHECK: 5: [B5.4] (BindTemporary) -// CHECK: 6: [B5.5].operator _Bool -// CHECK: 7: [B5.6]() +// CHECK: 6: [B5.5].operator bool +// CHECK: 7: [B5.5] // CHECK: 8: [B5.7] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B5.8] || ... // CHECK: Preds (2): B6 B7 @@ -357,23 +419,23 @@ void test_noreturn2() { // CHECK: Succs (1): B5 // CHECK: [B7] // CHECK: 1: [B9.5] || [B8.5] -// CHECK: 2: bool a = A().operator _Bool() || B().operator _Bool(); -// CHECK: T: [B9.5] || ... +// CHECK: 2: bool a = A() || B(); +// CHECK: T: (Temp Dtor) [B9.5] || ... // CHECK: Preds (2): B8 B9 // CHECK: Succs (2): B5 B6 // CHECK: [B8] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B8.1] (BindTemporary) -// CHECK: 3: [B8.2].operator _Bool -// CHECK: 4: [B8.3]() +// CHECK: 3: [B8.2].operator bool +// CHECK: 4: [B8.2] // CHECK: 5: [B8.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: Preds (1): B9 // CHECK: Succs (1): B7 // CHECK: [B9] // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B9.1] (BindTemporary) -// CHECK: 3: [B9.2].operator _Bool -// CHECK: 4: [B9.3]() +// CHECK: 3: [B9.2].operator bool +// CHECK: 4: [B9.2] // CHECK: 5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B9.5] || ... // CHECK: Preds (1): B10 @@ -405,8 +467,8 @@ void test_noreturn2() { // CHECK: 1: ~B() (Temporary object destructor) // CHECK: 2: B() (CXXConstructExpr, class B) // CHECK: 3: [B4.2] (BindTemporary) -// CHECK: 4: [B4.3].operator _Bool -// CHECK: 5: [B4.4]() +// CHECK: 4: [B4.3].operator bool +// CHECK: 5: [B4.3] // CHECK: 6: [B4.5] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: 7: ~B() (Temporary object destructor) // CHECK: T: if [B4.6] @@ -429,8 +491,8 @@ void test_noreturn2() { // CHECK: 2: [B7.1] (ImplicitCastExpr, NoOp, const class A) // CHECK: 3: [B7.2] // CHECK: 4: [B7.3] (CXXConstructExpr, class A) -// CHECK: 5: A a = B().operator _Bool() ? A() : A(B().operator A()); -// CHECK: T: [B10.5] ? ... : ... +// CHECK: 5: A a = B() ? A() : A(B()); +// CHECK: T: (Temp Dtor) [B10.5] ? ... : ... // CHECK: Preds (2): B8 B9 // CHECK: Succs (2): B5 B6 // CHECK: [B8] @@ -446,7 +508,7 @@ void test_noreturn2() { // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B9.1] (BindTemporary) // CHECK: 3: [B9.2].operator A -// CHECK: 4: [B9.3]() +// CHECK: 4: [B9.2] // CHECK: 5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, class A) // CHECK: 6: [B9.5] (BindTemporary) // CHECK: 7: [B9.6] (ImplicitCastExpr, NoOp, const class A) @@ -463,14 +525,174 @@ void test_noreturn2() { // CHECK: [B10] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B10.1] (BindTemporary) -// CHECK: 3: [B10.2].operator _Bool -// CHECK: 4: [B10.3]() +// CHECK: 3: [B10.2].operator bool +// CHECK: 4: [B10.2] // CHECK: 5: [B10.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B10.5] ? ... : ... // CHECK: Preds (1): B11 // CHECK: Succs (2): B8 B9 // CHECK: [B0 (EXIT)] // CHECK: Preds (1): B1 +// CHECK: C() : b_(true) +// CHECK: [B2 (ENTRY)] +// CHECK: Succs (1): B1 +// CHECK: [B1] +// CHECK: 1: true +// CHECK: 2: b_([B1.1]) (Member initializer) +// CHECK: Preds (1): B2 +// CHECK: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (1): B1 +// CHECK: ~C() +// CHECK: [B1 (ENTRY)] +// CHECK: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (1): B1 +// CHECK: operator bool() +// CHECK: [B2 (ENTRY)] +// CHECK: Succs (1): B1 +// CHECK: [B1] +// CHECK: 1: this +// CHECK: 2: [B1.1]->b_ +// CHECK: 3: [B1.2] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 4: return [B1.3]; +// CHECK: Preds (1): B2 +// CHECK: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (1): B1 +// CHECK: D() : b_(true) +// CHECK: [B2 (ENTRY)] +// CHECK: Succs (1): B1 +// CHECK: [B1] +// CHECK: 1: true +// CHECK: 2: b_([B1.1]) (Member initializer) +// CHECK: Preds (1): B2 +// CHECK: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (1): B1 +// CHECK: operator bool() +// CHECK: [B2 (ENTRY)] +// CHECK: Succs (1): B1 +// CHECK: [B1] +// CHECK: 1: this +// CHECK: 2: [B1.1]->b_ +// CHECK: 3: [B1.2] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 4: return [B1.3]; +// CHECK: Preds (1): B2 +// CHECK: Succs (1): B0 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (1): B1 +// CHECK: int test_cond_unnamed_custom_destructor() +// CHECK: [B4 (ENTRY)] +// CHECK: Succs (1): B3 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: 1: C() (CXXConstructExpr, struct C) +// CHECK: 2: [B3.1] (BindTemporary) +// CHECK: 3: [B3.2].operator bool +// CHECK: 4: [B3.2] +// CHECK: 5: [B3.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) +// CHECK: 6: ~C() (Temporary object destructor) +// CHECK: T: if [B3.5] +// CHECK: Preds (1): B4 +// CHECK: Succs (2): B2 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (2): B1 B2 +// CHECK: int test_cond_named_custom_destructor() +// CHECK: [B5 (ENTRY)] +// CHECK: Succs (1): B4 +// CHECK: [B1] +// CHECK: 1: [B4.6].~C() (Implicit destructor) +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 0 +// CHECK: 2: return [B2.1]; +// CHECK: 3: [B4.6].~C() (Implicit destructor) +// CHECK: Preds (1): B4 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: 1: 1 +// CHECK: 2: return [B3.1]; +// CHECK: 3: [B4.6].~C() (Implicit destructor) +// CHECK: Preds (1): B4 +// CHECK: Succs (1): B0 +// CHECK: [B4] +// CHECK: 1: C() (CXXConstructExpr, struct C) +// CHECK: 2: [B4.1] (BindTemporary) +// CHECK: 3: [B4.2] (ImplicitCastExpr, NoOp, const struct C) +// CHECK: 4: [B4.3] +// CHECK: 5: [B4.4] (CXXConstructExpr, struct C) +// CHECK: 6: C c = C(); +// CHECK: 7: ~C() (Temporary object destructor) +// CHECK: 8: c +// CHECK: 9: [B4.8].operator bool +// CHECK: 10: [B4.8] +// CHECK: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, _Bool) +// CHECK: T: if [B4.11] +// CHECK: Preds (1): B5 +// CHECK: Succs (2): B3 B2 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (3): B1 B2 B3 +// CHECK: int test_cond_unnamed_auto_destructor() +// CHECK: [B4 (ENTRY)] +// CHECK: Succs (1): B3 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: 1: D() (CXXConstructExpr, struct D) +// CHECK: 2: [B3.1].operator bool +// CHECK: 3: [B3.1] +// CHECK: 4: [B3.3] (ImplicitCastExpr, UserDefinedConversion, _Bool) +// CHECK: T: if [B3.4] +// CHECK: Preds (1): B4 +// CHECK: Succs (2): B2 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (2): B1 B2 +// CHECK: int test_cond_named_auto_destructor() +// CHECK: [B4 (ENTRY)] +// CHECK: Succs (1): B3 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: 1: D() (CXXConstructExpr, struct D) +// CHECK: 2: [B3.1] (ImplicitCastExpr, NoOp, const struct D) +// CHECK: 3: [B3.2] +// CHECK: 4: [B3.3] (CXXConstructExpr, struct D) +// CHECK: 5: D d = D(); +// CHECK: 6: d +// CHECK: 7: [B3.6].operator bool +// CHECK: 8: [B3.6] +// CHECK: 9: [B3.8] (ImplicitCastExpr, UserDefinedConversion, _Bool) +// CHECK: T: if [B3.9] +// CHECK: Preds (1): B4 +// CHECK: Succs (2): B2 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (2): B1 B2 // CHECK: [B14 (ENTRY)] // CHECK: Succs (1): B13 // CHECK: [B1] @@ -496,7 +718,7 @@ void test_noreturn2() { // CHECK: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A) // CHECK: 3: [B4.2] // CHECK: 4: [B7.3]([B4.3]) -// CHECK: T: [B7.8] ? ... : ... +// CHECK: T: (Temp Dtor) [B7.8] ? ... : ... // CHECK: Preds (2): B5 B6 // CHECK: Succs (2): B2 B3 // CHECK: [B5] @@ -512,7 +734,7 @@ void test_noreturn2() { // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B6.1] (BindTemporary) // CHECK: 3: [B6.2].operator A -// CHECK: 4: [B6.3]() +// CHECK: 4: [B6.2] // CHECK: 5: [B6.4] (ImplicitCastExpr, UserDefinedConversion, class A) // CHECK: 6: [B6.5] (BindTemporary) // CHECK: 7: [B6.6] (ImplicitCastExpr, NoOp, const class A) @@ -532,8 +754,8 @@ void test_noreturn2() { // CHECK: 3: [B7.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &)) // CHECK: 4: B() (CXXConstructExpr, class B) // CHECK: 5: [B7.4] (BindTemporary) -// CHECK: 6: [B7.5].operator _Bool -// CHECK: 7: [B7.6]() +// CHECK: 6: [B7.5].operator bool +// CHECK: 7: [B7.5] // CHECK: 8: [B7.7] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B7.8] ? ... : ... // CHECK: Preds (2): B8 B9 @@ -552,8 +774,8 @@ void test_noreturn2() { // CHECK: 1: [B13.5] ? [B11.6] : [B12.15] // CHECK: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A) // CHECK: 3: [B10.2] -// CHECK: 4: const A &a = B().operator _Bool() ? A() : A(B().operator A()); -// CHECK: T: [B13.5] ? ... : ... +// CHECK: 4: const A &a = B() ? A() : A(B()); +// CHECK: T: (Temp Dtor) [B13.5] ? ... : ... // CHECK: Preds (2): B11 B12 // CHECK: Succs (2): B8 B9 // CHECK: [B11] @@ -569,7 +791,7 @@ void test_noreturn2() { // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B12.1] (BindTemporary) // CHECK: 3: [B12.2].operator A -// CHECK: 4: [B12.3]() +// CHECK: 4: [B12.2] // CHECK: 5: [B12.4] (ImplicitCastExpr, UserDefinedConversion, class A) // CHECK: 6: [B12.5] (BindTemporary) // CHECK: 7: [B12.6] (ImplicitCastExpr, NoOp, const class A) @@ -586,8 +808,8 @@ void test_noreturn2() { // CHECK: [B13] // CHECK: 1: B() (CXXConstructExpr, class B) // CHECK: 2: [B13.1] (BindTemporary) -// CHECK: 3: [B13.2].operator _Bool -// CHECK: 4: [B13.3]() +// CHECK: 3: [B13.2].operator bool +// CHECK: 4: [B13.2] // CHECK: 5: [B13.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B13.5] ? ... : ... // CHECK: Preds (1): B14 @@ -617,7 +839,7 @@ void test_noreturn2() { // CHECK: 3: [B4.2] // CHECK: 4: [B4.3] (CXXConstructExpr, class A) // CHECK: 5: A a = A() ?: A(); -// CHECK: T: [B7.5] ? ... : ... +// CHECK: T: (Temp Dtor) [B7.5] ? ... : ... // CHECK: Preds (2): B5 B6 // CHECK: Succs (2): B2 B3 // CHECK: [B5] @@ -639,8 +861,8 @@ void test_noreturn2() { // CHECK: [B7] // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B7.1] (BindTemporary) -// CHECK: 3: [B7.2].operator _Bool -// CHECK: 4: [B7.3]() +// CHECK: 3: [B7.2].operator bool +// CHECK: 4: [B7.2] // CHECK: 5: [B7.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B7.5] ? ... : ... // CHECK: Preds (1): B8 @@ -669,7 +891,7 @@ void test_noreturn2() { // CHECK: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A) // CHECK: 3: [B4.2] // CHECK: 4: [B7.3]([B4.3]) -// CHECK: T: [B7.8] ? ... : ... +// CHECK: T: (Temp Dtor) [B7.8] ? ... : ... // CHECK: Preds (2): B5 B6 // CHECK: Succs (2): B2 B3 // CHECK: [B5] @@ -694,8 +916,8 @@ void test_noreturn2() { // CHECK: 3: [B7.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &)) // CHECK: 4: A() (CXXConstructExpr, class A) // CHECK: 5: [B7.4] (BindTemporary) -// CHECK: 6: [B7.5].operator _Bool -// CHECK: 7: [B7.6]() +// CHECK: 6: [B7.5].operator bool +// CHECK: 7: [B7.5] // CHECK: 8: [B7.7] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B7.8] ? ... : ... // CHECK: Preds (2): B9 B8 @@ -709,7 +931,7 @@ void test_noreturn2() { // CHECK: 2: [B9.1] (ImplicitCastExpr, NoOp, const class A) // CHECK: 3: [B9.2] // CHECK: 4: const A &a = A() ?: A(); -// CHECK: T: [B12.5] ? ... : ... +// CHECK: T: (Temp Dtor) [B12.5] ? ... : ... // CHECK: Preds (2): B10 B11 // CHECK: Succs (2): B7 B8 // CHECK: [B10] @@ -731,8 +953,8 @@ void test_noreturn2() { // CHECK: [B12] // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B12.1] (BindTemporary) -// CHECK: 3: [B12.2].operator _Bool -// CHECK: 4: [B12.3]() +// CHECK: 3: [B12.2].operator bool +// CHECK: 4: [B12.2] // CHECK: 5: [B12.4] (ImplicitCastExpr, UserDefinedConversion, _Bool) // CHECK: T: [B12.5] ? ... : ... // CHECK: Preds (1): B13 @@ -828,7 +1050,7 @@ void test_noreturn2() { // CHECK: 2: A() (CXXConstructExpr, class A) // CHECK: 3: [B1.2] (BindTemporary) // CHECK: 4: [B1.3].operator int -// CHECK: 5: [B1.4]() +// CHECK: 5: [B1.3] // CHECK: 6: [B1.5] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 7: a // CHECK: 8: [B1.7] = [B1.6] @@ -844,13 +1066,13 @@ void test_noreturn2() { // CHECK: 1: A() (CXXConstructExpr, class A) // CHECK: 2: [B1.1] (BindTemporary) // CHECK: 3: [B1.2].operator int -// CHECK: 4: [B1.3]() +// CHECK: 4: [B1.2] // CHECK: 5: [B1.4] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 6: int([B1.5]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 7: B() (CXXConstructExpr, class B) // CHECK: 8: [B1.7] (BindTemporary) // CHECK: 9: [B1.8].operator int -// CHECK: 10: [B1.9]() +// CHECK: 10: [B1.8] // CHECK: 11: [B1.10] (ImplicitCastExpr, UserDefinedConversion, int) // CHECK: 12: int([B1.11]) (CXXFunctionalCastExpr, NoOp, int) // CHECK: 13: [B1.6] + [B1.12] @@ -863,13 +1085,12 @@ void test_noreturn2() { // CHECK: Succs (1): B0 // CHECK: [B0 (EXIT)] // CHECK: Preds (1): B1 - // CHECK: [B3 (ENTRY)] // CHECK: Succs (1): B2 // CHECK: [B1] // CHECK: 1: int b; // CHECK: Succs (1): B0 -// CHECK: [B2] +// CHECK: [B2 (NORETURN)] // CHECK: 1: int a; // CHECK: 2: NoReturn() (CXXConstructExpr, class NoReturn) // CHECK: 3: [B2.2] (BindTemporary) @@ -880,13 +1101,12 @@ void test_noreturn2() { // CHECK: Succs (1): B0 // CHECK: [B0 (EXIT)] // CHECK: Preds (2): B1 B2 - // CHECK: [B3 (ENTRY)] // CHECK: Succs (1): B2 // CHECK: [B1] // CHECK: 1: int b; // CHECK: Succs (1): B0 -// CHECK: [B2] +// CHECK: [B2 (NORETURN)] // CHECK: 1: int a; // CHECK: 2: NoReturn() (CXXConstructExpr, class NoReturn) // CHECK: 3: [B2.2] (BindTemporary) @@ -897,3 +1117,169 @@ void test_noreturn2() { // CHECK: Succs (1): B0 // CHECK: [B0 (EXIT)] // CHECK: Preds (2): B1 B2 +// CHECK: int testConsistencyNestedSimple(bool value) +// CHECK: [B9 (ENTRY)] +// CHECK: Succs (1): B8 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (2): B3 B8 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: T: if [B5.1] +// CHECK: Preds (1): B5 +// CHECK: Succs (2): B2 B1 +// CHECK: [B4 (NORETURN)] +// CHECK: 1: ~NoReturn() (Temporary object destructor) +// CHECK: Preds (1): B5 +// CHECK: Succs (1): B0 +// CHECK: [B5] +// CHECK: 1: [B7.3] || [B6.7] +// CHECK: T: (Temp Dtor) [B7.3] || ... +// CHECK: Preds (2): B6 B7 +// CHECK: Succs (2): B3 B4 +// CHECK: [B6] +// CHECK: 1: check +// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &)) +// CHECK: 3: NoReturn() (CXXConstructExpr, class NoReturn) +// CHECK: 4: [B6.3] (BindTemporary) +// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn) +// CHECK: 6: [B6.5] +// CHECK: 7: [B6.2]([B6.6]) +// CHECK: Preds (1): B7 +// CHECK: Succs (1): B5 +// CHECK: [B7] +// CHECK: 1: value +// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 3: ![B7.2] +// CHECK: T: [B7.3] || ... +// CHECK: Preds (1): B8 +// CHECK: Succs (2): B5 B6 +// CHECK: [B8] +// CHECK: 1: value +// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: T: if [B8.2] +// CHECK: Preds (1): B9 +// CHECK: Succs (2): B7 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (3): B1 B2 B4 +// CHECK: int testConsistencyNestedComplex(bool value) +// CHECK: [B10 (ENTRY)] +// CHECK: Succs (1): B9 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (2): B3 B9 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: T: if [B5.1] +// CHECK: Preds (1): B5 +// CHECK: Succs (2): B2 B1 +// CHECK: [B4 (NORETURN)] +// CHECK: 1: ~NoReturn() (Temporary object destructor) +// CHECK: Preds (1): B5 +// CHECK: Succs (1): B0 +// CHECK: [B5] +// CHECK: 1: [B8.3] || [B7.3] || [B6.7] +// CHECK: T: (Temp Dtor) [B8.3] || [B7.3] || ... +// CHECK: Preds (3): B6 B7 B8 +// CHECK: Succs (2): B3 B4 +// CHECK: [B6] +// CHECK: 1: check +// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &)) +// CHECK: 3: NoReturn() (CXXConstructExpr, class NoReturn) +// CHECK: 4: [B6.3] (BindTemporary) +// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn) +// CHECK: 6: [B6.5] +// CHECK: 7: [B6.2]([B6.6]) +// CHECK: Preds (1): B7 +// CHECK: Succs (1): B5 +// CHECK: [B7] +// CHECK: 1: value +// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 3: ![B7.2] +// CHECK: T: [B8.3] || [B7.3] || ... +// CHECK: Preds (1): B8 +// CHECK: Succs (2): B5 B6 +// CHECK: [B8] +// CHECK: 1: value +// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 3: ![B8.2] +// CHECK: T: [B8.3] || ... +// CHECK: Preds (1): B9 +// CHECK: Succs (2): B5 B7 +// CHECK: [B9] +// CHECK: 1: value +// CHECK: 2: [B9.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: T: if [B9.2] +// CHECK: Preds (1): B10 +// CHECK: Succs (2): B8 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (3): B1 B2 B4 +// CHECK: int testConsistencyNestedNormalReturn(bool value) +// CHECK: [B10 (ENTRY)] +// CHECK: Succs (1): B9 +// CHECK: [B1] +// CHECK: 1: 0 +// CHECK: 2: return [B1.1]; +// CHECK: Preds (2): B3 B9 +// CHECK: Succs (1): B0 +// CHECK: [B2] +// CHECK: 1: 1 +// CHECK: 2: return [B2.1]; +// CHECK: Preds (1): B3 +// CHECK: Succs (1): B0 +// CHECK: [B3] +// CHECK: T: if [B5.1] +// CHECK: Preds (1): B5 +// CHECK: Succs (2): B2 B1 +// CHECK: [B4 (NORETURN)] +// CHECK: 1: ~NoReturn() (Temporary object destructor) +// CHECK: Preds (1): B5 +// CHECK: Succs (1): B0 +// CHECK: [B5] +// CHECK: 1: [B8.3] || [B7.2] || [B6.7] +// CHECK: T: (Temp Dtor) [B8.3] || [B7.2] || ... +// CHECK: Preds (3): B6 B7 B8 +// CHECK: Succs (2): B3 B4 +// CHECK: [B6] +// CHECK: 1: check +// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &)) +// CHECK: 3: NoReturn() (CXXConstructExpr, class NoReturn) +// CHECK: 4: [B6.3] (BindTemporary) +// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn) +// CHECK: 6: [B6.5] +// CHECK: 7: [B6.2]([B6.6]) +// CHECK: Preds (1): B7 +// CHECK: Succs (1): B5 +// CHECK: [B7] +// CHECK: 1: value +// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: T: [B8.3] || [B7.2] || ... +// CHECK: Preds (1): B8 +// CHECK: Succs (2): B5 B6 +// CHECK: [B8] +// CHECK: 1: value +// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: 3: ![B8.2] +// CHECK: T: [B8.3] || ... +// CHECK: Preds (1): B9 +// CHECK: Succs (2): B5 B7 +// CHECK: [B9] +// CHECK: 1: value +// CHECK: 2: [B9.1] (ImplicitCastExpr, LValueToRValue, _Bool) +// CHECK: T: if [B9.2] +// CHECK: Preds (1): B10 +// CHECK: Succs (2): B8 B1 +// CHECK: [B0 (EXIT)] +// CHECK: Preds (3): B1 B2 B4 diff --git a/test/Analysis/temporaries.cpp b/test/Analysis/temporaries.cpp index 6b49fcbddd41..c57d984a1dc8 100644 --- a/test/Analysis/temporaries.cpp +++ b/test/Analysis/temporaries.cpp @@ -118,13 +118,11 @@ namespace destructors { extern bool coin(); extern bool check(const Dtor &); -#ifndef TEMPORARY_DTORS - // FIXME: Don't crash here when tmp dtros are enabled. - // PR16664 and PR18159 + // Regression test: we used to assert here when tmp dtors are enabled. + // PR16664 and PR18159 if (coin() && (coin() || coin() || check(Dtor()))) { Dtor(); } -#endif } #ifdef TEMPORARY_DTORS @@ -170,18 +168,16 @@ namespace destructors { clang_analyzer_eval(true); // no warning, unreachable code } - -/* - // PR16664 and PR18159 - FIXME: Don't crash here. + // Regression test: we used to assert here. + // PR16664 and PR18159 void testConsistencyNested(int i) { extern bool compute(bool); - + if (i == 5 && (i == 4 || i == 5 || check(NoReturnDtor()))) - clang_analyzer_eval(true); // expected TRUE - + clang_analyzer_eval(true); // expected-warning{{TRUE}} + if (i == 5 && (i == 4 || i == 5 || check(NoReturnDtor()))) - clang_analyzer_eval(true); // expected TRUE + clang_analyzer_eval(true); // expected-warning{{TRUE}} if (i != 5) return; @@ -190,17 +186,54 @@ namespace destructors { (i == 4 || compute(true) || compute(i == 5 && (i == 4 || check(NoReturnDtor()))))) || i != 4) { - clang_analyzer_eval(true); // expected TRUE + clang_analyzer_eval(true); // expected-warning{{TRUE}} } if (compute(i == 5 && (i == 4 || i == 4 || compute(i == 5 && (i == 4 || check(NoReturnDtor()))))) || i != 4) { - clang_analyzer_eval(true); // no warning, unreachable code + // FIXME: This shouldn't cause a warning. + clang_analyzer_eval(true); // expected-warning{{TRUE}} } - }*/ - + } + + // PR16664 and PR18159 + void testConsistencyNestedSimple(bool value) { + if (value) { + if (!value || check(NoReturnDtor())) { + clang_analyzer_eval(true); // no warning, unreachable code + } + } + } + + // PR16664 and PR18159 + void testConsistencyNestedComplex(bool value) { + if (value) { + if (!value || !value || check(NoReturnDtor())) { + // FIXME: This shouldn't cause a warning. + clang_analyzer_eval(true); // expected-warning{{TRUE}} + } + } + } + + // PR16664 and PR18159 + void testConsistencyNestedWarning(bool value) { + if (value) { + if (!value || value || check(NoReturnDtor())) { + clang_analyzer_eval(true); // expected-warning{{TRUE}} + } + } + } + + void testBinaryOperatorShortcut(bool value) { + if (value) { + if (false && false && check(NoReturnDtor()) && true) { + clang_analyzer_eval(true); + } + } + } + #endif // TEMPORARY_DTORS } diff --git a/test/Analysis/test-after-div-zero.c b/test/Analysis/test-after-div-zero.c new file mode 100644 index 000000000000..f34c4f7a3661 --- /dev/null +++ b/test/Analysis/test-after-div-zero.c @@ -0,0 +1,204 @@ +// RUN: %clang_cc1 -std=c99 -Dbool=_Bool -analyze -analyzer-checker=core,alpha.core.TestAfterDivZero -analyzer-output=text -verify %s +// RUN: %clang_cc1 -x c++ -analyze -analyzer-checker=core,alpha.core.TestAfterDivZero -analyzer-output=text -verify %s + +int var; + +void err_eq(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x == 0) { } // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_eq2(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (0 == x) { } // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_ne(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x != 0) { } // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_ge(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x >= 0) { } // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_le(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x <= 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_yes(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} +void err_not(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_pnot(int x) { + int *y = &x; + var = 77 / *y; // expected-note {{Division with compared value made here}} + if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_pnot2(int x) { + int *y = &x; + var = 77 / x; // expected-note {{Division with compared value made here}} + if (!*y) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_ppnot(int x) { + int *y = &x; + int **z = &y; + var = 77 / **z; // expected-note {{Division with compared value made here}} + if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_orig_checker(int x) { + if (x != 0) // expected-note {{Assuming 'x' is equal to 0}} expected-note {{Taking false branch}} + return; + var = 77 / x; // expected-warning {{Division by zero}} expected-note {{Division by zero}} + if (!x) {} // no-warning +} + +void ok_other(int x, int y) { + var = 77 / y; + if (x == 0) { + } +} + +void ok_assign(int x) { + var = 77 / x; + x = var / 77; // <- assignment => don't warn + if (x == 0) { + } +} + +void ok_assign2(int x) { + var = 77 / x; + x = var / 77; // <- assignment => don't warn + if (0 == x) { + } +} + +void ok_dec(int x) { + var = 77 / x; + x--; // <- assignment => don't warn + if (x == 0) { + } +} + +void ok_inc(int x) { + var = 77 / x; + x++; // <- assignment => don't warn + if (x == 0) { + } +} + +void do_something_ptr(int *x); +void ok_callfunc_ptr(int x) { + var = 77 / x; + do_something_ptr(&x); // <- pass address of x to function => don't warn + if (x == 0) { + } +} + +void do_something(int x); +void nok_callfunc(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + do_something(x); + if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void ok_if(int x) { + if (x > 3) + var = 77 / x; + if (x == 0) { + } +} + +void ok_if2(int x) { + if (x < 3) + var = 77 / x; + if (x == 0) { + } // TODO warn here +} + +void ok_pif(int x) { + int *y = &x; + if (x < 3) + var = 77 / *y; + if (x == 0) { + } // TODO warn here +} + +int getValue(bool *isPositive); +void use(int a); +void foo() { + bool isPositive; + int x = getValue(&isPositive); + if (isPositive) { + use(5 / x); + } + + if (x == 0) { + } +} + +int getValue2(); +void foo2() { + int x = getValue2(); + int y = x; + + use(5 / x); // expected-note {{Division with compared value made here}} + if (y == 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void ok_while(int x) { + int n = 100 / x; + while (x != 0) { // <- do not warn + x--; + } +} + +void err_not2(int x, int y) { + int v; + var = 77 / x; + + if (y) + v = 0; + + if (!x) { + } // TODO warn here +} + +inline void inline_func(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +void err_inline(int x) { + var = 77 / x; + inline_func(x); // expected-note {{Calling 'inline_func'}} + if (x == 0) { + } +} + +inline void inline_func2(int x) {} + +void err_inline2(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + inline_func2(x); + if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} + +inline void inline_func3(int x) { + var = 77 / x; +} +void ok_inline(int x) { + var = 77 / x; // expected-note {{Division with compared value made here}} + inline_func3(x); + if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}} +} // expected-note@-1 {{Value being compared against zero has already been used for division}} diff --git a/test/Analysis/uninit-const.c b/test/Analysis/uninit-const.c new file mode 100644 index 000000000000..9e42d23214de --- /dev/null +++ b/test/Analysis/uninit-const.c @@ -0,0 +1,216 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=unix.Malloc,core,alpha.core.CallAndMessageUnInitRefArg -analyzer-output=text -verify %s + +// Passing uninitialized const data to function +#include "Inputs/system-header-simulator.h" + +typedef __typeof(sizeof(int)) size_t; +void *malloc(size_t); +void *valloc(size_t); +void free(void *); + + +void doStuff3(const int y){} +void doStuff2(int g){} +void doStuff_pointerToConstInt(const int *u){}; +void doStuff_arrayOfConstInt(const int a[]){}; + +void doStuff_constPointerToConstInt (int const * const u){}; +void doStuff_constPointerToConstPointerToConstInt(int const * const * const u){}; +void doStuff_pointerToConstPointerToConstInt(int const * const * u){}; +void doStuff_pointerToPointerToConstInt (int const **u){}; +void doStuff_constStaticSizedArray(const int a[static 10]) {} +void doStuff_variadic(const int *u, ...){}; + +void f_1(void) { + int t; + int* tp = &t; // expected-note {{'tp' initialized here}} + doStuff_pointerToConstInt(tp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_1_1(void) { + int t; + int* tp1 = &t; + int* tp2 = tp1; // expected-note {{'tp2' initialized here}} + doStuff_pointerToConstInt(tp2); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + + +int *f_2_sub(int *p) { + return p; +} + +void f_2(void) { + int t; + int* p = f_2_sub(&t); + int* tp = p; // expected-note {{'tp' initialized here}} + doStuff_pointerToConstInt(tp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +int z; +void f_3(void) { + doStuff_pointerToConstInt(&z); // no warning +} + +void f_4(void) { + int x=5; + doStuff_pointerToConstInt(&x); // no warning +} + +void f_5(void) { + int ta[5]; + int* tp = ta; // expected-note {{'tp' initialized here}} + doStuff_pointerToConstInt(tp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_5_1(void) { + int ta[5]; // expected-note {{'ta' initialized here}} + doStuff_pointerToConstInt(ta); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_6(void) { + int ta[5] = {1,2,3,4,5}; + int* tp = ta; + doStuff_pointerToConstInt(tp); // no-warning +} + +void f_6_1(void) { + int ta[5] = {1,2,3,4,5}; + doStuff_pointerToConstInt(ta); // no-warning +} + +void f_7(void) { + int z; // expected-note {{'z' declared without an initial value}} + int y=z; // expected-warning {{Assigned value is garbage or undefined}} + // expected-note@-1 {{Assigned value is garbage or undefined}} + doStuff3(y); +} + +void f_8(void) { + int g; // expected-note {{'g' declared without an initial value}} + doStuff2(g); // expected-warning {{Function call argument is an uninitialized value}} + // expected-note@-1 {{Function call argument is an uninitialized value}} +} + +void f_9(void) { + int a[6]; + int const *ptau = a; // expected-note {{'ptau' initialized here}} + doStuff_arrayOfConstInt(ptau); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_10(void) { + int a[6]; // expected-note {{'a' initialized here}} + doStuff_arrayOfConstInt(a); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_11(void) { + int t[10]; //expected-note {{'t' initialized here}} + doStuff_constStaticSizedArray(t); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +void f_12(void) { + int t[10] = {0,1,2,3,4,5,6,7,8,9}; + doStuff_constStaticSizedArray(t); // no-warning + +} + +int f_malloc_1(void) { + int *ptr; + + ptr = (int *)malloc(sizeof(int)); // expected-note {{Value assigned to 'ptr'}} + + doStuff_pointerToConstInt(ptr); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} + free(ptr); + return 0; +} + +int f_malloc_2(void) { + int *ptr; + + ptr = (int *)malloc(sizeof(int)); + *ptr = 25; + + doStuff_pointerToConstInt(ptr); // no warning + free(ptr); + return 0; +} + +// uninit pointer, uninit val +void f_variadic_unp_unv(void) { + int t; + int v; + int* tp = &t; // expected-note {{'tp' initialized here}} + doStuff_variadic(tp,v); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} +// uninit pointer, init val +void f_variadic_unp_inv(void) { + int t; + int v = 3; + int* tp = &t; // expected-note {{'tp' initialized here}} + doStuff_variadic(tp,v); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +// init pointer, uninit val +void f_variadic_inp_unv(void) { + int t=5; + int v; // expected-note {{'v' declared without an initial value}} + int* tp = &t; + doStuff_variadic(tp,v);// expected-warning {{Function call argument is an uninitialized value}} + // expected-note@-1 {{Function call argument is an uninitialized value}} +} + +// init pointer, init val +void f_variadic_inp_inv(void) { + int t=5; + int v = 3; + int* tp = &t; + doStuff_variadic(tp,v); // no-warning +} + +// init pointer, init pointer +void f_variadic_inp_inp(void) { + int t=5; + int u=3; + int *vp = &u ; + int *tp = &t; + doStuff_variadic(tp,vp); // no-warning +} + +//uninit pointer, init pointer +void f_variadic_unp_inp(void) { + int t; + int u=3; + int *vp = &u ; + int *tp = &t; // expected-note {{'tp' initialized here}} + doStuff_variadic(tp,vp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + +//init pointer, uninit pointer +void f_variadic_inp_unp(void) { + int t=5; + int u; + int *vp = &u ; + int *tp = &t; + doStuff_variadic(tp,vp); // no-warning +} + +//uninit pointer, uninit pointer +void f_variadic_unp_unp(void) { + int t; + int u; + int *vp = &u ; + int *tp = &t; // expected-note {{'tp' initialized here}} + doStuff_variadic(tp,vp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} diff --git a/test/Analysis/uninit-const.cpp b/test/Analysis/uninit-const.cpp new file mode 100644 index 000000000000..56bfa08e4176 --- /dev/null +++ b/test/Analysis/uninit-const.cpp @@ -0,0 +1,128 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,core,alpha.core.CallAndMessageUnInitRefArg -analyzer-output=text -verify %s +// Passing uninitialized const data to unknown function + +#include "Inputs/system-header-simulator-cxx.h" + +void doStuff6(const int& c); +void doStuff4(const int y); +void doStuff3(int& g); +void doStuff_uninit(const int *u); + + +int f10(void) { + int *ptr; + + ptr = new int; // + if(*ptr) { + doStuff4(*ptr); + } + delete ptr; + return 0; +} + +int f9(void) { + int *ptr; + + ptr = new int; // + + doStuff_uninit(ptr); // no warning + delete ptr; + return 0; +} + +int f8(void) { + int *ptr; + + ptr = new int; + *ptr = 25; + + doStuff_uninit(ptr); // no warning? + delete ptr; + return 0; +} + +void f7(void) { + int m = 3; + doStuff6(m); // no warning +} + + +int& f6_1_sub(int &p) { + return p; +} + +void f6_1(void) { + int t; + int p = f6_1_sub(t); //expected-warning {{Assigned value is garbage or undefined}} + //expected-note@-1 {{Calling 'f6_1_sub'}} + //expected-note@-2 {{Returning from 'f6_1_sub'}} + //expected-note@-3 {{Assigned value is garbage or undefined}} + int q = p; + doStuff6(q); +} + +void f6_2(void) { + int t; //expected-note {{'t' declared without an initial value}} + int &p = t; + int &s = p; + int &q = s; //expected-note {{'q' initialized here}} + doStuff6(q); //expected-warning {{Function call argument is an uninitialized value}} + //expected-note@-1 {{Function call argument is an uninitialized value}} +} + +void doStuff6_3(int& q_, int *ptr_) {} + +void f6_3(void) { + int *ptr; //expected-note {{'ptr' declared without an initial value}} + int t; + int &p = t; + int &s = p; + int &q = s; + doStuff6_3(q,ptr); //expected-warning {{Function call argument is an uninitialized value}} + //expected-note@-1 {{Function call argument is an uninitialized value}} + +} + +void f6(void) { + int k; // expected-note {{'k' declared without an initial value}} + doStuff6(k); // expected-warning {{Function call argument is an uninitialized value}} + // expected-note@-1 {{Function call argument is an uninitialized value}} + +} + + + +void f5(void) { + int t; + int* tp = &t; // expected-note {{'tp' initialized here}} + doStuff_uninit(tp); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} + + +void f4(void) { + int y; // expected-note {{'y' declared without an initial value}} + doStuff4(y); // expected-warning {{Function call argument is an uninitialized value}} + // expected-note@-1 {{Function call argument is an uninitialized value}} +} + +void f3(void) { + int g; + doStuff3(g); // no warning +} + +int z; +void f2(void) { + doStuff_uninit(&z); // no warning +} + +void f1(void) { + int x_=5; + doStuff_uninit(&x_); // no warning +} + +void f_uninit(void) { + int x; + doStuff_uninit(&x); // expected-warning {{Function call argument is a pointer to uninitialized value}} + // expected-note@-1 {{Function call argument is a pointer to uninitialized value}} +} diff --git a/test/Analysis/uninit-vals-ps-region.m b/test/Analysis/uninit-vals-ps-region.m index a4aa5a114aeb..87256b3b4b1b 100644 --- a/test/Analysis/uninit-vals-ps-region.m +++ b/test/Analysis/uninit-vals-ps-region.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-checker=core,alpha.deadcode.IdempotentOperations -verify %s +// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-checker=core -verify %s struct s { int data; @@ -42,7 +42,7 @@ void test_uninit_pos_3() { void test_uninit_neg() { struct TestUninit v1 = { 0, 0 }; struct TestUninit v2 = test_uninit_aux(); - test_unit_aux2(v2.x + v1.y); // expected-warning{{The right operand to '+' is always 0}} + test_unit_aux2(v2.x + v1.y); } extern void test_uninit_struct_arg_aux(struct TestUninit arg); diff --git a/test/Analysis/weak-functions.c b/test/Analysis/weak-functions.c index 96e3b44d03b8..a983f92f81aa 100644 --- a/test/Analysis/weak-functions.c +++ b/test/Analysis/weak-functions.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection,unix.Malloc,unix.cstring,alpha.unix.cstring,unix.API,osx.API,osx.cocoa.RetainCount -Wno-null-dereference -analyzer-store=region -fblocks -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection,unix.Malloc,unix.cstring,alpha.unix.cstring,unix.API,osx.API,osx.cocoa.RetainCount -Wno-null-dereference -Wno-tautological-compare -analyzer-store=region -fblocks -verify %s #define NULL 0 void clang_analyzer_eval(int); void myFunc(); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a11b83a854cb..591a9272ae6d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,11 +1,13 @@ # Test runner infrastructure for Clang. This configures the Clang test trees # for use by Lit, and delegates to LLVM's lit test handlers. -# -# If this is a stand-alone Clang build, we fake up our own Lit support here -# rather than relying on LLVM's. -set(CLANG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") -set(CLANG_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..") +if (CMAKE_CFG_INTDIR STREQUAL ".") + set(LLVM_BUILD_MODE ".") +else () + set(LLVM_BUILD_MODE "%(build_mode)s") +endif () + +string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in @@ -17,81 +19,58 @@ configure_lit_site_cfg( ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg ) -if( PATH_TO_LLVM_BUILD ) - set(CLANG_TEST_EXTRA_ARGS "--path=${CLANG_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}") -endif() - option(CLANG_TEST_USE_VG "Run Clang tests under Valgrind" OFF) if(CLANG_TEST_USE_VG) set(CLANG_TEST_EXTRA_ARGS ${CLANG_TEST_EXTRA_ARGS} "--vg") endif () -set(CLANG_TEST_DEPS +list(APPEND CLANG_TEST_DEPS clang clang-headers - c-index-test diagtool arcmt-test c-arcmt-test clang-check clang-format - ) -set(CLANG_TEST_PARAMS - clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg + c-index-test diagtool + clang-tblgen ) -if(CLANG_INCLUDE_TESTS) - list(APPEND CLANG_TEST_DEPS ClangUnitTests) - list(APPEND CLANG_TEST_PARAMS - clang_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg - ) -endif() +if (CLANG_ENABLE_ARCMT) + list(APPEND CLANG_TEST_DEPS + arcmt-test + c-arcmt-test + ) +endif () -if( NOT CLANG_BUILT_STANDALONE ) +if (ENABLE_CLANG_EXAMPLES) list(APPEND CLANG_TEST_DEPS - llc opt FileCheck count not llvm-symbolizer + clang-interpreter + PrintFunctionNames ) +endif () - add_lit_testsuite(check-clang "Running the Clang regression tests" - ${CMAKE_CURRENT_BINARY_DIR} - PARAMS ${CLANG_TEST_PARAMS} - DEPENDS ${CLANG_TEST_DEPS} - ARGS ${CLANG_TEST_EXTRA_ARGS} +if (ENABLE_CLANG_STATIC_ANALYZER AND ENABLE_CLANG_EXAMPLES) + list(APPEND CLANG_TEST_DEPS + SampleAnalyzerPlugin ) - set_target_properties(check-clang PROPERTIES FOLDER "Clang tests") - -else() - - include(FindPythonInterp) - if(PYTHONINTERP_FOUND) - if( LLVM_MAIN_SRC_DIR ) - set(LIT "${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py") - else() - set(LIT "${PATH_TO_LLVM_BUILD}/bin/${CMAKE_CFG_INTDIR}/llvm-lit") - # Installed LLVM does not contain ${CMAKE_CFG_INTDIR} in paths. - if( NOT EXISTS ${LIT} ) - set(LIT "${PATH_TO_LLVM_BUILD}/bin/llvm-lit") - endif() - endif() - - set(LIT_ARGS "${CLANG_TEST_EXTRA_ARGS} ${LLVM_LIT_ARGS}") - separate_arguments(LIT_ARGS) - - list(APPEND CLANG_TEST_PARAMS build_mode=${CMAKE_CFG_INTDIR}) - - foreach(param ${CLANG_TEST_PARAMS}) - list(APPEND LIT_ARGS --param ${param}) - endforeach() +endif () - add_custom_target(check-clang - COMMAND ${PYTHON_EXECUTABLE} - ${LIT} - ${LIT_ARGS} - ${CMAKE_CURRENT_BINARY_DIR} - ${CLANG_TEST_EXTRA_ARGS} - COMMENT "Running Clang regression tests" - DEPENDS ${CLANG_TEST_DEPS} - ) - set_target_properties(check-clang PROPERTIES FOLDER "Clang tests") - endif() +set(CLANG_TEST_PARAMS + clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg + ) +if( NOT CLANG_BUILT_STANDALONE ) + list(APPEND CLANG_TEST_DEPS + llvm-config + llc opt FileCheck count not llvm-symbolizer llvm-profdata + ) endif() +add_lit_testsuite(check-clang "Running the Clang regression tests" + ${CMAKE_CURRENT_BINARY_DIR} + #LIT ${LLVM_LIT} + PARAMS ${CLANG_TEST_PARAMS} + DEPENDS ${CLANG_TEST_DEPS} + ARGS ${CLANG_TEST_EXTRA_ARGS} + ) +set_target_properties(check-clang PROPERTIES FOLDER "Clang tests") + # Add a legacy target spelling: clang-test add_custom_target(clang-test) add_dependencies(clang-test check-clang) diff --git a/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp b/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp index 1f78a738f38b..b9e83988cfb8 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp +++ b/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp @@ -105,9 +105,10 @@ namespace InhCtor { }; + // FIXME: Consider reusing the same diagnostic between dependent and non-dependent contexts typedef int I; struct UsingInt { - using I::I; // expected-error {{expected a class or namespace}} + using I::I; // expected-error {{'I' (aka 'int') is not a class, namespace, or scoped enumeration}} }; template struct UsingIntTemplate { using T::T; // expected-error {{type 'int' cannot be used prior to '::' because it has no members}} diff --git a/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp b/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp index 30393961b3f3..7918e9f861e4 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp +++ b/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp @@ -63,3 +63,14 @@ void test3() { Numbers2::f(f); Numbers2::g(f); // expected-error {{no viable conversion from 'float' to 'Numbers::Number'}} } + +namespace inline_ns { + int x; // expected-note 2{{found}} + inline namespace A { // expected-warning {{C++11}} + int x; // expected-note 2{{found}} + int y; // expected-note 2{{found}} + } + int y; // expected-note 2{{found}} + int k1 = x + y; // expected-error 2{{ambiguous}} + int k2 = inline_ns::x + inline_ns::y; // expected-error 2{{ambiguous}} +} diff --git a/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp b/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp index c745c8451bc8..c3be712ddbca 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp +++ b/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp @@ -1,26 +1,25 @@ // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -// XFAIL: * -// Our C++0x doesn't currently have specialized destructor name handling, -// since the specification is still in flux. -struct C { +// expected-no-diagnostics + +struct C { typedef int I; -}; +}; -typedef int I1, I2; -extern int* p; -extern int* q; +typedef int I1, I2; +extern int* p; +extern int* q; void f() { - p->C::I::~I(); + p->C::I::~I(); q->I1::~I2(); } -struct A { +struct A { ~A(); -}; +}; -typedef A AB; +typedef A AB; int main() { - AB *p; + AB *p; p->AB::~AB(); } diff --git a/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp b/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp index 0956de3c2a88..83c8dd8fc22d 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp +++ b/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s +// expected-no-diagnostics struct C { typedef int I; @@ -20,5 +21,5 @@ struct A { typedef A AB; int main() { AB *p; - p->AB::~AB(); // expected-error{{expected the class name after '~' to name a destructor}} + p->AB::~AB(); } diff --git a/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp b/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp index 253d15e90178..c59c4a550d7a 100644 --- a/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp +++ b/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp @@ -1,5 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s -// XFAIL: * +// RUN: %clang_cc1 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s class C { public: @@ -10,8 +9,13 @@ C::C(int a, // expected-note {{previous definition}} int b) // expected-note {{previous definition}} try { int c; - } catch (int a) { // expected-error {{redefinition of 'a'}} int b; // expected-error {{redefinition of 'b'}} ++c; // expected-error {{use of undeclared identifier 'c'}} } + +void f(int i) { + struct S { + void g() try {} catch (int i) {}; // OK + }; +} diff --git a/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp b/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp index 7c7b84d67823..1b4199155fae 100644 --- a/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp +++ b/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp @@ -9,8 +9,8 @@ void func2(int i) try { // expected-note{{previous definition is here}} } catch (...) { } -void func3(int i) try { // FIXME: note {{previous definition is here}} -} catch (int i) { // FIXME: error {{redefinition of 'i'}} +void func3(int i) try { // expected-note {{previous definition is here}} +} catch (int i) { // expected-error {{redefinition of 'i'}} } void func4(int i) try { // expected-note{{previous definition is here}} @@ -58,3 +58,9 @@ void func10() { int b; // FIXME: decide whether this is valid } } + +void func11(int a) { + try { + } catch (int a) { // OK + } +} diff --git a/test/CXX/basic/basic.start/basic.start.init/p3.cpp b/test/CXX/basic/basic.start/basic.start.init/p3.cpp new file mode 100644 index 000000000000..506232ebacc4 --- /dev/null +++ b/test/CXX/basic/basic.start/basic.start.init/p3.cpp @@ -0,0 +1,24 @@ +// RUN: %clang_cc1 -verify %s -pedantic-errors +// RUN: %clang_cc1 -verify %s -pedantic-errors -DINLINE +// RUN: %clang_cc1 -verify %s -pedantic-errors -DSTATIC +// RUN: %clang_cc1 -verify %s -pedantic-errors -std=c++11 -DCONSTEXPR +// RUN: %clang_cc1 -verify %s -std=c++11 -DDELETED + +#if INLINE +inline // expected-error {{'main' is not allowed to be declared inline}} +#elif STATIC +static // expected-error {{'main' is not allowed to be declared static}} +#elif CONSTEXPR +constexpr // expected-error {{'main' is not allowed to be declared constexpr}} +#endif +int main(int argc, char **argv) +#if DELETED + = delete; // expected-error {{'main' is not allowed to be deleted}} +#else +{ + int (*pmain)(int, char**) = &main; // expected-error {{ISO C++ does not allow 'main' to be used by a program}} + + if (argc) + main(0, 0); // expected-error {{ISO C++ does not allow 'main' to be used by a program}} +} +#endif diff --git a/test/CXX/basic/basic.start/basic.start.main/p2.cpp b/test/CXX/basic/basic.start/basic.start.main/p2.cpp index 5c7d60c1df4c..42e87e5431f2 100644 --- a/test/CXX/basic/basic.start/basic.start.main/p2.cpp +++ b/test/CXX/basic/basic.start/basic.start.main/p2.cpp @@ -62,6 +62,8 @@ main( // expected-error {{first parameter of 'main' (argument count) must be of ) { } +const int main(); // expected-error {{'main' must return 'int'}} + #elif TEST7 // expected-no-diagnostics diff --git a/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp b/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp index 8a62ae84e2af..3b77a62ce7d6 100644 --- a/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp +++ b/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp @@ -9,7 +9,8 @@ namespace NS { void *operator new(size_t);; // expected-error {{'operator new' cannot be declared inside a namespace}} } -static void *operator new(size_t); // expected-error {{'operator new' cannot be declared static in global scope}} +static void *operator new(size_t); // expected-error {{static declaration of 'operator new' follows non-static declaration}} expected-note {{previous}} +static void *operator new(size_t, int, int); // expected-error {{'operator new' cannot be declared static in global scope}} struct B { void operator new(size_t); // expected-error {{'operator new' must return type 'void *'}} diff --git a/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp b/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp index e00e9486f0bf..09dde8efde00 100644 --- a/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp +++ b/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp @@ -8,4 +8,5 @@ namespace NS { void operator delete(void *); // expected-error {{'operator delete' cannot be declared inside a namespace}} } -static void operator delete(void *); // expected-error {{'operator delete' cannot be declared static in global scope}} +static void operator delete(void *); // expected-error {{follows non-static declaration}} expected-note {{implicit}} +static void operator delete(void *, int, int); // expected-error {{'operator delete' cannot be declared static in global scope}} diff --git a/test/CXX/class.access/class.access.base/p1.cpp b/test/CXX/class.access/class.access.base/p1.cpp index 43cc99eb8b49..88e2688406c7 100644 --- a/test/CXX/class.access/class.access.base/p1.cpp +++ b/test/CXX/class.access/class.access.base/p1.cpp @@ -153,3 +153,18 @@ namespace test2 { t->Base::spriv++; // expected-error 2 {{private member}} } } + +namespace PR12788 { + class A { + protected: + struct { + int x; + }; + }; + class B : A { + void f() { + ++x; + A::x++; + } + }; +} diff --git a/test/CXX/class.access/p4.cpp b/test/CXX/class.access/p4.cpp index 0564a52b6d0d..435b09920df6 100644 --- a/test/CXX/class.access/p4.cpp +++ b/test/CXX/class.access/p4.cpp @@ -79,8 +79,8 @@ namespace test1 { -ca; // These are all surrogate calls ca(pub); - ca(prot); // expected-error {{'operator void (*)(class Protected &)' is a protected member}} - ca(priv); // expected-error {{'operator void (*)(class Private &)' is a private member}} + ca(prot); // expected-error {{'operator void (*)(Protected &)' is a protected member}} + ca(priv); // expected-error {{'operator void (*)(Private &)' is a private member}} } } diff --git a/test/CXX/class.access/p6.cpp b/test/CXX/class.access/p6.cpp index 6a93658fc78d..f9b95f0851ef 100644 --- a/test/CXX/class.access/p6.cpp +++ b/test/CXX/class.access/p6.cpp @@ -177,7 +177,7 @@ namespace test8 { }; void test(A &a) { - if (a) return; // expected-error {{'operator void *(class test8::A::*)(void) const' is a private member of 'test8::A'}} + if (a) return; // expected-error-re {{'operator void *(test8::A::*)(){{( __attribute__\(\(thiscall\)\))?}} const' is a private member of 'test8::A'}} } } diff --git a/test/CXX/class/class.static/class.static.data/p4.cpp b/test/CXX/class/class.static/class.static.data/p4.cpp index 2b1eca741937..85d18c6b5fac 100644 --- a/test/CXX/class/class.static/class.static.data/p4.cpp +++ b/test/CXX/class/class.static/class.static.data/p4.cpp @@ -10,15 +10,14 @@ struct OutOfClassInitializerOnly { int const OutOfClassInitializerOnly::i = 0; struct InClassInitializerAndOutOfClassCopyInitializer { - static const int i = 0; // expected-note{{previous definition is here}} + static const int i = 0; // expected-note{{previous initialization is here}} }; -int const InClassInitializerAndOutOfClassCopyInitializer::i = 0; // expected-error{{redefinition of 'i'}} +int const InClassInitializerAndOutOfClassCopyInitializer::i = 0; // expected-error{{static data member 'i' already has an initializer}} struct InClassInitializerAndOutOfClassDirectInitializer { - static const int i = 0; // expected-note{{previous definition is here}} + static const int i = 0; // expected-note{{previous initialization is here}} }; -int const InClassInitializerAndOutOfClassDirectInitializer::i(0); // expected-error{{redefinition of 'i'}} - +int const InClassInitializerAndOutOfClassDirectInitializer::i(0); // expected-error{{static data member 'i' already has an initializer}} int main() { } diff --git a/test/CXX/class/class.union/p8.cpp b/test/CXX/class/class.union/p8.cpp new file mode 100644 index 000000000000..cc54ba406619 --- /dev/null +++ b/test/CXX/class/class.union/p8.cpp @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -std=c++11 -verify %s + +union U { + int x = 0; // expected-note {{previous initialization is here}} + union {}; + union { + int z; + int y = 1; // expected-error {{initializing multiple members of union}} + }; +}; diff --git a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp index c7966ce643f1..4ffb93a1ef74 100644 --- a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp +++ b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp @@ -1,14 +1,16 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -// C++03 [namespace.udecl]p11: +// C++03 [namespace.udecl]p11: (per DR101) // If a function declaration in namespace scope or block scope has // the same name and the same parameter types as a function -// introduced by a using-declaration, the program is -// ill-formed. [Note: two using-declarations may introduce functions -// with the same name and the same parameter types. If, for a call -// to an unqualified function name, function overload resolution -// selects the functions introduced by such using-declarations, the -// function call is ill-formed. +// introduced by a using-declaration, and the declarations do not declare the +// same function, the program is ill-formed. [Note: two using-declarations may +// introduce functions with the same name and the same parameter types. If, +// for a call to an unqualified function name, function overload resolution +// selects the functions introduced by such using-declarations, the function +// call is ill-formed.] +// +// FIXME: DR565 introduces parallel wording here for function templates. namespace test0 { namespace ns { void foo(); } // expected-note {{target of using declaration}} @@ -89,3 +91,19 @@ namespace test5 { template class Test0; template class Test1; } + +namespace test6 { + namespace ns { void foo(); } // expected-note {{target of using declaration}} + using ns::foo; // expected-note {{using declaration}} + namespace ns { + using test6::foo; + void foo() {} + } + void foo(); // expected-error {{declaration conflicts with target of using declaration already in scope}} +} + +namespace test7 { + void foo(); + using test7::foo; + void foo() {} +} diff --git a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp index edaa975a5890..35ef3b57b0cc 100644 --- a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp +++ b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp @@ -7,6 +7,6 @@ struct A { }; struct B : A { - using A::f; // expected-error{{using declaration can not refer to a template specialization}} - using A::X; // expected-error{{using declaration can not refer to a template specialization}} + using A::f; // expected-error{{using declaration cannot refer to a template specialization}} + using A::X; // expected-error{{using declaration cannot refer to a template specialization}} }; diff --git a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp index c4b8849e58cf..c2fb95902454 100644 --- a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp +++ b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp @@ -5,4 +5,4 @@ namespace A { namespace B { } } -using A::B; // expected-error{{using declaration can not refer to namespace}} +using A::B; // expected-error{{using declaration cannot refer to namespace}} diff --git a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp index 78b5a41648a7..4f89dcfb3f52 100644 --- a/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp +++ b/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s +// RUN: not %clang_cc1 -fsyntax-only -std=c++98 -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck --check-prefix=CXX98 %s +// RUN: not %clang_cc1 -fsyntax-only -std=c++11 -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck --check-prefix=CXX11 %s // C++0x N2914. struct X { @@ -6,10 +9,101 @@ struct X { static int a; }; -using X::i; // expected-error{{using declaration can not refer to class member}} -using X::s; // expected-error{{using declaration can not refer to class member}} +using X::i; // expected-error{{using declaration cannot refer to class member}} +using X::s; // expected-error{{using declaration cannot refer to class member}} void f() { - using X::i; // expected-error{{using declaration can not refer to class member}} - using X::s; // expected-error{{using declaration can not refer to class member}} + using X::i; // expected-error{{using declaration cannot refer to class member}} + using X::s; // expected-error{{using declaration cannot refer to class member}} +} + +struct S { + static int n; + struct Q {}; + enum E {}; + typedef Q T; + void f(); + static void g(); +}; + +using S::n; // expected-error{{class member}} expected-note {{use a reference instead}} +#if __cplusplus < 201103L +// CXX98-NOT: fix-it:"{{.*}}":{[[@LINE-2]] +#else +// CXX11: fix-it:"{{.*}}":{[[@LINE-4]]:1-[[@LINE-4]]:6}:"auto &n = " +#endif + +using S::Q; // expected-error{{class member}} +#if __cplusplus < 201103L +// expected-note@-2 {{use a typedef declaration instead}} +// CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:1-[[@LINE-3]]:6}:"typedef" +// CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:11}:" Q" +#else +// expected-note@-6 {{use an alias declaration instead}} +// CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:7-[[@LINE-7]]:7}:"Q = " +#endif + +using S::E; // expected-error{{class member}} +#if __cplusplus < 201103L +// expected-note@-2 {{use a typedef declaration instead}} +// CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:1-[[@LINE-3]]:6}:"typedef" +// CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:11}:" E" +#else +// expected-note@-6 {{use an alias declaration instead}} +// CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:7-[[@LINE-7]]:7}:"E = " +#endif + +using S::T; // expected-error{{class member}} +#if __cplusplus < 201103L +// expected-note@-2 {{use a typedef declaration instead}} +// CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:1-[[@LINE-3]]:6}:"typedef" +// CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:11}:" T" +#else +// expected-note@-6 {{use an alias declaration instead}} +// CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:7-[[@LINE-7]]:7}:"T = " +#endif + +using S::f; // expected-error{{class member}} +using S::g; // expected-error{{class member}} + +void h() { + using S::n; // expected-error{{class member}} expected-note {{use a reference instead}} +#if __cplusplus < 201103L + // CXX98-NOT: fix-it:"{{.*}}":{[[@LINE-2]] +#else + // CXX11: fix-it:"{{.*}}":{[[@LINE-4]]:3-[[@LINE-4]]:8}:"auto &n = " +#endif + + using S::Q; // expected-error{{class member}} +#if __cplusplus < 201103L + // expected-note@-2 {{use a typedef declaration instead}} + // CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:3-[[@LINE-3]]:8}:"typedef" + // CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:13-[[@LINE-4]]:13}:" Q" +#else + // expected-note@-6 {{use an alias declaration instead}} + // CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:9-[[@LINE-7]]:9}:"Q = " +#endif + + using S::E; // expected-error{{class member}} +#if __cplusplus < 201103L + // expected-note@-2 {{use a typedef declaration instead}} + // CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:3-[[@LINE-3]]:8}:"typedef" + // CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:13-[[@LINE-4]]:13}:" E" +#else + // expected-note@-6 {{use an alias declaration instead}} + // CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:9-[[@LINE-7]]:9}:"E = " +#endif + + using S::T; // expected-error{{class member}} +#if __cplusplus < 201103L + // expected-note@-2 {{use a typedef declaration instead}} + // CXX98: fix-it:"{{.*}}":{[[@LINE-3]]:3-[[@LINE-3]]:8}:"typedef" + // CXX98: fix-it:"{{.*}}":{[[@LINE-4]]:13-[[@LINE-4]]:13}:" T" +#else + // expected-note@-6 {{use an alias declaration instead}} + // CXX11: fix-it:"{{.*}}":{[[@LINE-7]]:9-[[@LINE-7]]:9}:"T = " +#endif + + using S::f; // expected-error{{class member}} + using S::g; // expected-error{{class member}} } diff --git a/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp b/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp index 10be98d16ea0..3c250f9d25dd 100644 --- a/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp +++ b/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp @@ -9,6 +9,7 @@ alignas(1) alignas(4) int n6 alignas(2); // ok alignas(1) int n7 alignas(2), // expected-error {{less than minimum alignment}} n8 alignas(4); // ok alignas(8) int n9 alignas(2); // ok, overaligned +alignas(1) extern int n10; // expected-error {{less than minimum alignment}} enum alignas(1) E1 {}; // expected-error {{requested alignment is less than minimum alignment of 4 for type 'E1'}} enum alignas(1) E2 : char {}; // ok diff --git a/test/CXX/dcl.dcl/dcl.attr/dcl.attr.deprecated/p1.cpp b/test/CXX/dcl.dcl/dcl.attr/dcl.attr.deprecated/p1.cpp index 21119398b2f4..3bbbf9eed6e4 100644 --- a/test/CXX/dcl.dcl/dcl.attr/dcl.attr.deprecated/p1.cpp +++ b/test/CXX/dcl.dcl/dcl.attr/dcl.attr.deprecated/p1.cpp @@ -1,25 +1,25 @@ // RUN: %clang_cc1 -std=c++1y -verify %s -class [[deprecated]] C {}; // expected-note {{declared here}} +class [[deprecated]] C {}; // expected-note {{'C' has been explicitly marked deprecated here}} C c; // expected-warning {{'C' is deprecated}} -typedef int t [[deprecated]]; // expected-note {{declared here}} +typedef int t [[deprecated]]; // expected-note {{'t' has been explicitly marked deprecated here}} t x = 42; // expected-warning {{'t' is deprecated}} -[[deprecated]] int old = 42; // expected-note {{declared here}} +[[deprecated]] int old = 42; // expected-note {{'old' has been explicitly marked deprecated here}} int use = old; // expected-warning {{'old' is deprecated}} -struct S { [[deprecated]] int member = 42; } s; // expected-note {{declared here}} +struct S { [[deprecated]] int member = 42; } s; // expected-note {{'member' has been explicitly marked deprecated here}} int use2 = s.member; // expected-warning {{'member' is deprecated}} -[[deprecated]] int f() { return 42; } // expected-note {{declared here}} +[[deprecated]] int f() { return 42; } // expected-note {{'f' has been explicitly marked deprecated here}} int use3 = f(); // expected-warning {{'f' is deprecated}} -enum [[deprecated]] e { E }; // expected-note {{declared here}} +enum [[deprecated]] e { E }; // expected-note {{'e' has been explicitly marked deprecated here}} e my_enum; // expected-warning {{'e' is deprecated}} template class X {}; -template <> class [[deprecated]] X {}; // expected-note {{declared here}} +template <> class [[deprecated]] X {}; // expected-note {{'X' has been explicitly marked deprecated here}} X x1; // FIXME: The diagnostic here could be much better by mentioning X. X x2; // expected-warning {{'X' is deprecated}} diff --git a/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp b/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp index 0af241f55fe5..59cac367dbf2 100644 --- a/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp +++ b/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp @@ -13,7 +13,7 @@ void a2 [[noreturn]] () { [[noreturn()]] void c(); // expected-error {{attribute 'noreturn' cannot have an argument list}} void d() [[noreturn]]; // expected-error {{'noreturn' attribute cannot be applied to types}} -int d2 [[noreturn]]; // expected-error {{'noreturn' attribute only applies to functions and methods}} +int d2 [[noreturn]]; // expected-error {{'noreturn' attribute only applies to functions}} [[noreturn]] int e() { b2(); } // ok diff --git a/test/CXX/dcl.dcl/dcl.enum/p2.cpp b/test/CXX/dcl.dcl/dcl.enum/p2.cpp new file mode 100644 index 000000000000..de826d057042 --- /dev/null +++ b/test/CXX/dcl.dcl/dcl.enum/p2.cpp @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -std=c++11 -verify %s + +// expected-no-diagnostics +enum class E : int const volatile { }; +using T = __underlying_type(E); +using T = int; diff --git a/test/CXX/dcl.dcl/dcl.link/p2.cpp b/test/CXX/dcl.dcl/dcl.link/p2.cpp new file mode 100644 index 000000000000..d1c3bcb8fa03 --- /dev/null +++ b/test/CXX/dcl.dcl/dcl.link/p2.cpp @@ -0,0 +1,14 @@ +// RUN: %clang_cc1 -std=c++11 -verify %s + +extern "C" { + extern R"(C++)" { } +} + +#define plusplus "++" +extern "C" plusplus { +} + +extern u8"C" {} // expected-error {{string literal in language linkage specifier cannot have an encoding-prefix}} +extern L"C" {} // expected-error {{string literal in language linkage specifier cannot have an encoding-prefix}} +extern u"C++" {} // expected-error {{string literal in language linkage specifier cannot have an encoding-prefix}} +extern U"C" {} // expected-error {{string literal in language linkage specifier cannot have an encoding-prefix}} diff --git a/test/CXX/dcl.dcl/dcl.link/p7.cpp b/test/CXX/dcl.dcl/dcl.link/p7.cpp index bd9ff3c3665c..7d80a22ca300 100644 --- a/test/CXX/dcl.dcl/dcl.link/p7.cpp +++ b/test/CXX/dcl.dcl/dcl.link/p7.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s struct X { }; @@ -7,8 +7,6 @@ struct X { }; // CHECK: @x2 = external global %struct.X // CHECK: @x3 = external global %struct.X extern "C" { - - X x1; } diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp index cf422972a280..08fefdc91fb5 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp @@ -27,7 +27,7 @@ void f2(constexpr int i) {} // expected-error {{function parameter cannot be con struct s2 { constexpr int mi1; // expected-error {{non-static data member cannot be constexpr; did you intend to make it const?}} static constexpr int mi2; // expected-error {{requires an initializer}} - mutable constexpr int mi3 = 3; // expected-error-re {{non-static data member cannot be constexpr$}} expected-error {{'mutable' and 'const' cannot be mixed}} + mutable constexpr int mi3 = 3; // expected-error-re {{non-static data member cannot be constexpr{{$}}}} expected-error {{'mutable' and 'const' cannot be mixed}} }; // typedef typedef constexpr int CI; // expected-error {{typedef cannot be constexpr}} @@ -73,7 +73,7 @@ template T gt(T t) { return t; } struct S { template constexpr T f(); // expected-warning {{C++1y}} template - T g() const; // expected-note {{candidate template ignored: could not match 'T () const' against 'char ()'}} + T g() const; // expected-note-re {{candidate template ignored: could not match 'T (){{( __attribute__\(\(thiscall\)\))?}} const' against 'char (){{( __attribute__\(\(thiscall\)\))?}}'}} }; // explicit specialization can differ in constepxr diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp index 001a086a008b..eeb5b6f9c2aa 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -emit-llvm -triple %itanium_abi_triple %s -o - | FileCheck %s // constexpr functions and constexpr constructors are implicitly inline. struct S { diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp index bb7f7ac326e7..370f732fd92b 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp @@ -35,7 +35,7 @@ template struct ConstexprMember { constexpr R F() const { return 0; } }; constexpr int d = ConstexprMember().F(); // ok -constexpr int e = ConstexprMember().F(); // expected-error {{constant expression}} +constexpr int e = ConstexprMember().F(); // expected-error {{constant expression}} expected-note {{non-literal type 'const NonLiteral' cannot be used in a constant expression}} template struct ConstexprCtor { constexpr ConstexprCtor(P...) {} diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp index 07eec1edbe39..12237a39ab54 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp @@ -1,7 +1,6 @@ -// RUN: %clang_cc1 -verify %s -// XFAIL: * +// RUN: %clang_cc1 -fsyntax-only -verify %s -void f0() { +void f0() { // expected-note {{previous definition is here}} } -inline void f0(); // expected-error {{function definition cannot precede inline declaration}} +inline void f0(); // expected-error {{inline declaration of 'f0' follows non-inline definition}} diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp index ee870d960161..5d1e6fb85ce9 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp @@ -14,3 +14,7 @@ public: explicit A::A() { } // expected-error {{'explicit' can only be specified inside the class definition}} explicit A::operator bool() { return false; } // expected-warning {{explicit conversion functions are a C++11 extension}}\ // expected-error {{'explicit' can only be specified inside the class definition}} + +class B { + friend explicit A::A(); // expected-error {{'explicit' is invalid in friend declarations}} +}; diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp index fd86276e8548..d7e7c52f3f70 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp @@ -1,5 +1,4 @@ -// RUN: %clang_cc1 -verify %s -// XFAIL: * +// RUN: %clang_cc1 -fsyntax-only -verify %s typedef const int T0; typedef int& T1; @@ -9,6 +8,6 @@ struct s0 { mutable T0 f1; // expected-error{{'mutable' and 'const' cannot be mixed}} mutable int &f2; // expected-error{{'mutable' cannot be applied to references}} mutable T1 f3; // expected-error{{'mutable' cannot be applied to references}} - mutable struct s1 {}; // expected-error{{'mutable' cannot be applied to non-data members}} + mutable struct s1 {}; // expected-error{{'mutable' can only be applied to member variables}} mutable void im0(); // expected-error{{'mutable' cannot be applied to functions}} }; diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp index 84f9f9b82983..46c874f605cb 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++1y +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wno-c++1y-extensions // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions template @@ -41,3 +42,25 @@ struct S { }; const int S::b; const auto S::c = 0; + +namespace std { template struct initializer_list { initializer_list(); }; } + +// In an initializer of the form ( expression-list ), the expression-list +// shall be a single assigment-expression. +auto parens1(1); +auto parens2(2, 3); // expected-error {{initializer for variable 'parens2' with type 'auto' contains multiple expressions}} +#if __cplusplus >= 201103L +auto parens3({4, 5, 6}); // expected-error {{cannot deduce type for variable 'parens3' with type 'auto' from parenthesized initializer list}} +auto parens4 = [p4(1)] {}; +auto parens5 = [p5(2, 3)] {}; // expected-error {{initializer for lambda capture 'p5' contains multiple expressions}} +auto parens6 = [p6({4, 5, 6})] {}; // expected-error {{cannot deduce type for lambda capture 'p6' from parenthesized initializer list}} +#endif + +#if __cplusplus >= 201402L +namespace std_example { + // The other half of this example is in p3.cpp + auto f() -> int; + auto g() { return 0.0; } + auto h(); +} +#endif diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp index 1ed93b137540..7f1b3b0f240e 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp @@ -30,29 +30,33 @@ struct DD { typedef int n; }; +PD pd(); +DD dd(); + struct A { - decltype(PD()) s; // ok - decltype(PD())::n n; // ok - decltype(DD()) *p = new decltype(DD()); // ok + decltype(pd()) s; // ok + decltype(pd())::n n; // ok + decltype(dd()) *p = new decltype(dd()); // ok }; +A a(); // Two errors here: one for the decltype, one for the variable. decltype( - PD(), // expected-error {{private destructor}} - PD()) pd1; // expected-error {{private destructor}} -decltype(DD(), // expected-error {{deleted function}} - DD()) dd1; -decltype(A(), - DD()) dd2; // expected-error {{deleted function}} + pd(), // expected-error {{private destructor}} + pd()) pd1; // expected-error {{private destructor}} +decltype(dd(), // expected-error {{deleted function}} + dd()) dd1; +decltype(a(), + dd()) dd2; // expected-error {{deleted function}} decltype( - PD(), // expected-error {{temporary of type 'PD' has private destructor}} + pd(), // expected-error {{temporary of type 'PD' has private destructor}} 0) pd2; -decltype(((13, ((DD())))))::n dd_parens; // ok -decltype(((((42)), PD())))::n pd_parens_comma; // ok +decltype(((13, ((dd())))))::n dd_parens; // ok +decltype(((((42)), pd())))::n pd_parens_comma; // ok // Ensure parens aren't stripped from a decltype node. -extern decltype(PD()) pd_ref; // ok +extern decltype(pd()) pd_ref; // ok decltype((pd_ref)) pd_ref3 = pd_ref; // ok, PD & decltype(pd_ref) pd_ref2 = pd_ref; // expected-error {{private destructor}} @@ -107,7 +111,7 @@ namespace RequireCompleteType { namespace Overload { DD operator+(PD &a, PD &b); - decltype(PD()) *pd_ptr; + decltype(pd()) *pd_ptr; decltype(*pd_ptr + *pd_ptr) *dd_ptr; // ok decltype(0, *pd_ptr) pd_ref2 = pd_ref; // ok diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp index 02cc973018b8..39d6e706b6c1 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp @@ -2,12 +2,12 @@ using X = struct { // ok }; -template using Y = struct { // expected-error {{can not be defined in a type alias template}} +template using Y = struct { // expected-error {{cannot be defined in a type alias template}} }; class K { virtual ~K(); - operator struct S {} (); // expected-error{{'K::S' can not be defined in a type specifier}} + operator struct S {} (); // expected-error{{'K::S' cannot be defined in a type specifier}} }; struct A {}; @@ -18,26 +18,26 @@ void f() { for (struct S { S(int) {} } s : arr) { // expected-error {{types may not be defined in a for range declaration}} } - new struct T {}; // expected-error {{'T' can not be defined in a type specifier}} - new struct A {}; // expected-error {{'A' can not be defined in a type specifier}} + new struct T {}; // expected-error {{'T' cannot be defined in a type specifier}} + new struct A {}; // expected-error {{'A' cannot be defined in a type specifier}} - try {} catch (struct U {}) {} // expected-error {{'U' can not be defined in a type specifier}} + try {} catch (struct U {}) {} // expected-error {{'U' cannot be defined in a type specifier}} - (void)(struct V { V(int); })0; // expected-error {{'V' can not be defined in a type specifier}} + (void)(struct V { V(int); })0; // expected-error {{'V' cannot be defined in a type specifier}} - (void)dynamic_cast((K*)0); // expected-error {{'W' can not be defined in a type specifier}} - (void)static_cast(0); // expected-error {{'X' can not be defined in a type specifier}} - (void)reinterpret_cast(0); // expected-error {{'Y' can not be defined in a type specifier}} - (void)const_cast((const Z*)0); // expected-error {{'Z' can not be defined in a type specifier}} + (void)dynamic_cast((K*)0); // expected-error {{'W' cannot be defined in a type specifier}} + (void)static_cast(0); // expected-error {{'X' cannot be defined in a type specifier}} + (void)reinterpret_cast(0); // expected-error {{'Y' cannot be defined in a type specifier}} + (void)const_cast((const Z*)0); // expected-error {{'Z' cannot be defined in a type specifier}} } -void g() throw (struct Ex {}) { // expected-error {{'Ex' can not be defined in a type specifier}} +void g() throw (struct Ex {}) { // expected-error {{'Ex' cannot be defined in a type specifier}} } -alignas(struct Aa {}) int x; // expected-error {{'Aa' can not be defined in a type specifier}} +alignas(struct Aa {}) int x; // expected-error {{'Aa' cannot be defined in a type specifier}} -int a = sizeof(struct So {}); // expected-error {{'So' can not be defined in a type specifier}} -int b = alignof(struct Ao {}); // expected-error {{'Ao' can not be defined in a type specifier}} +int a = sizeof(struct So {}); // expected-error {{'So' cannot be defined in a type specifier}} +int b = alignof(struct Ao {}); // expected-error {{'Ao' cannot be defined in a type specifier}} namespace std { struct type_info; } -const std::type_info &ti = typeid(struct Ti {}); // expected-error {{'Ti' can not be defined in a type specifier}} +const std::type_info &ti = typeid(struct Ti {}); // expected-error {{'Ti' cannot be defined in a type specifier}} diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp index 89a28adcc65c..cc44f74a5547 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp @@ -154,5 +154,5 @@ namespace Access { namespace VoidArg { using V = void; V f(int); // ok - V g(V); // expected-error {{empty parameter list defined with a type alias of 'void' not allowed}} + V g(V); // ok (DR577) } diff --git a/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp b/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp index b30e0ec7856b..b44b2c7d1566 100644 --- a/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp +++ b/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp @@ -8,9 +8,9 @@ namespace PR12453 { template void f(int i) { T x{i}; // expected-error{{non-constant-expression cannot be narrowed from type 'int' to 'float' in initializer list}} \ - // expected-note{{override this message by inserting an explicit cast}} + // expected-note{{insert an explicit cast to silence this issue}} T y{i}; // expected-error{{non-constant-expression cannot be narrowed from type 'int' to 'float' in initializer list}} \ - // expected-note{{override this message by inserting an explicit cast}} + // expected-note{{insert an explicit cast to silence this issue}} } template void f(int); // expected-note{{in instantiation of function template specialization 'PR12453::f' requested here}} diff --git a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp index 58d038366c81..971e0c11aff1 100644 --- a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp +++ b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp @@ -23,7 +23,7 @@ namespace std { namespace bullet1 { double ad[] = { 1, 2.0 }; - int ai[] = { 1, 2.0 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} + int ai[] = { 1, 2.0 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} struct S2 { int m1; @@ -31,7 +31,7 @@ namespace bullet1 { }; S2 s21 = { 1, 2, 3.0 }; - S2 s22 { 1.0, 2, 3 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} + S2 s22 { 1.0, 2, 3 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} S2 s23 { }; } @@ -62,13 +62,13 @@ namespace bullet4_example3 { }; S s1 = { 1, 2, 3.0 }; - S s2 { 1.0, 2, 3 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} + S s2 { 1.0, 2, 3 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} S s3 {}; } namespace bullet5 { int x1 {2}; - int x2 {2.0}; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} + int x2 {2.0}; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} } namespace bullet6 { @@ -81,7 +81,7 @@ namespace bullet6 { const S& r2 = { "Spinach" }; S& r3 = { 1, 2, 3 }; // expected-error {{non-const lvalue reference to type 'bullet6::S' cannot bind to an initializer list temporary}} const int& i1 = { 1 }; - const int& i2 = { 1.1 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}} + const int& i2 = { 1.1 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} expected-warning {{implicit conversion}} const int (&iar)[2] = { 1, 2 }; } @@ -92,20 +92,20 @@ namespace bullet7 { namespace bullet8 { struct A { int i; int j; }; A a1 { 1, 2 }; - A a2 { 1.2 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}} + A a2 { 1.2 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} expected-warning {{implicit conversion}} struct B { B(std::initializer_list i) {} }; B b1 { 1, 2 }; - B b2 { 1, 2.0 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} + B b2 { 1, 2.0 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} struct C { C(int i, double j) {} }; C c1 = { 1, 2.2 }; // FIXME: Suppress the narrowing warning in the cases where we issue a narrowing error. - C c2 = { 1.1, 2 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}} + C c2 = { 1.1, 2 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{silence}} expected-warning {{implicit conversion}} int j { 1 }; int k { }; diff --git a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp index 0bea4ede19ca..299611ba7359 100644 --- a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp +++ b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp @@ -26,7 +26,7 @@ void test_template() { maybe_shrink_int((char)3); // CHECK: warning:{{.*}} cannot be narrowed // CHECK: note:{{.*}} in instantiation - // CHECK: note:{{.*}} override + // CHECK: note:{{.*}} silence // FIXME: This should be static_cast. // CHECK: fix-it:{{.*}}"static_cast(" // CHECK: fix-it:{{.*}}")" diff --git a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp index 9b1727fd04af..42dee92b3ca3 100644 --- a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp +++ b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp @@ -8,16 +8,16 @@ void std_example() { const int y = 999; const int z = 99; char c1 = x; // OK, though it might narrow (in this case, it does narrow) - char c2{x}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - char c3{y}; // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + char c2{x}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + char c3{y}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} char c4{z}; // OK: no narrowing needed unsigned char uc1 = {5}; // OK: no narrowing needed - unsigned char uc2 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - unsigned int ui1 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + unsigned char uc2 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + unsigned int ui1 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} signed int si1 = - { (unsigned int)-1 }; // expected-error {{ cannot be narrowed }} expected-note {{override}} - int ii = {2.0}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - float f1 { x }; // expected-error {{ cannot be narrowed }} expected-note {{override}} + { (unsigned int)-1 }; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + int ii = {2.0}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + float f1 { x }; // expected-error {{ cannot be narrowed }} expected-note {{silence}} float f2 { 7 }; // OK: 7 can be exactly represented as a float int f(int); int a[] = @@ -44,19 +44,19 @@ template Convert ConvertVar(); // * from a floating-point type to an integer type, or void float_to_int() { - Agg a1 = {1.0F}; // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}} - Agg a2 = {1.0}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg a3 = {1.0L}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg a1 = {1.0F}; // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{silence}} + Agg a2 = {1.0}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg a3 = {1.0L}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} float f = 1.0; double d = 1.0; long double ld = 1.0; - Agg a4 = {f}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg a5 = {d}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg a6 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg a4 = {f}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg a5 = {d}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg a6 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} - Agg ce1 = { Convert(1.0) }; // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-error {{type 'double' cannot be narrowed to 'char'}} expected-note {{override}} + Agg ce1 = { Convert(1.0) }; // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-error {{type 'double' cannot be narrowed to 'char'}} expected-note {{silence}} } // * from long double to double or float, or from double to float, except where @@ -72,8 +72,8 @@ void shrink_float() { // Variables. Agg f1 = {f}; // OK (no-op) - Agg f2 = {d}; // expected-error {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{override}} - Agg f3 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg f2 = {d}; // expected-error {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{silence}} + Agg f3 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // Exact constants. Agg f4 = {1.0}; // OK (double constant represented exactly) Agg f5 = {1.0L}; // OK (long double constant represented exactly) @@ -81,8 +81,8 @@ void shrink_float() { Agg f6 = {0.1}; // OK (double constant in range but rounded) Agg f7 = {0.1L}; // OK (long double constant in range but rounded) // Out of range constants. - Agg f8 = {1E50}; // expected-error {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg f9 = {1E50L}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg f8 = {1E50}; // expected-error {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg f9 = {1E50L}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // More complex constant expression. constexpr long double e40 = 1E40L, e30 = 1E30L, e39 = 1E39L; Agg f10 = {e40 - 5 * e39 + e30 - 5 * e39}; // OK @@ -90,19 +90,19 @@ void shrink_float() { // Variables. Agg d1 = {f}; // OK (widening) Agg d2 = {d}; // OK (no-op) - Agg d3 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg d3 = {ld}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // Exact constant. Agg d4 = {1.0L}; // OK (long double constant represented exactly) // Inexact but in-range constant. Agg d5 = {0.1L}; // OK (long double constant in range but rounded) // Out of range constant. - Agg d6 = {1E315L}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg d6 = {1E315L}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // More complex constant expression. constexpr long double e315 = 1E315L, e305 = 1E305L, e314 = 1E314L; Agg d7 = {e315 - 5 * e314 + e305 - 5 * e314}; // OK - Agg ce1 = { Convert(1e300) }; // expected-error {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{override}} + Agg ce1 = { Convert(1e300) }; // expected-error {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{silence}} } // * from an integer type or unscoped enumeration type to a floating-point type, @@ -114,16 +114,16 @@ void int_to_float() { char c = 1; // Variables. Yes, even though all char's will fit into any floating type. - Agg f1 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg f2 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg f3 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg f1 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg f2 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg f3 = {c}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // Constants. Agg f4 = {12345678}; // OK (exactly fits in a float) - Agg f5 = {123456789}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg f5 = {123456789}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} - Agg ce1 = { Convert(123456789) }; // expected-error {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{override}} + Agg ce1 = { Convert(123456789) }; // expected-error {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{silence}} } // * from an integer type or unscoped enumeration type to an integer type that @@ -135,52 +135,53 @@ void shrink_int() { // Not a constant expression. short s = 1; unsigned short us = 1; - Agg c1 = {s}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg s1 = {s}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg s2 = {us}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg c1 = {s}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg s1 = {s}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg s2 = {us}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // "that cannot represent all the values of the original type" means that the // validity of the program depends on the relative sizes of integral types. // This test compiles with -m64, so sizeof(int) i1 = {l1}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg i1 = {l1}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} long long ll = 1; Agg l2 = {ll}; // OK // Constants. Agg c2 = {127}; // OK - Agg c3 = {300}; // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + Agg c3 = {300}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} Agg i2 = {0x7FFFFFFFU}; // OK - Agg i3 = {0x80000000U}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg i4 = {-0x80000000L}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg i3 = {0x80000000U}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg i4 = {-0x80000000L}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // Bool is also an integer type, but conversions to it are a different AST // node. Agg b1 = {0}; // OK Agg b2 = {1}; // OK - Agg b3 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{override}} + Agg b3 = {-1}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} // Conversions from pointers to booleans aren't narrowing conversions. - Agg b = {&b1}; // OK + Agg* ptr = &b1; + Agg b = {ptr}; // OK - Agg ce1 = { Convert(100000) }; // expected-error {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{override}} expected-warning {{changes value from 100000 to -31072}} - Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{override}} + Agg ce1 = { Convert(100000) }; // expected-error {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{silence}} expected-warning {{changes value from 100000 to -31072}} + Agg ce2 = { ConvertVar() }; // expected-error {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{silence}} // Negative -> larger unsigned type. - unsigned long long ll1 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}} + unsigned long long ll1 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{silence}} unsigned long long ll2 = { 1 }; // OK - unsigned long long ll3 = { s }; // expected-error {{cannot be narrowed from type 'short'}} expected-note {{override}} + unsigned long long ll3 = { s }; // expected-error {{cannot be narrowed from type 'short'}} expected-note {{silence}} unsigned long long ll4 = { us }; // OK - unsigned long long ll5 = { ll }; // expected-error {{cannot be narrowed from type 'long long'}} expected-note {{override}} - Agg ll6 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}} + unsigned long long ll5 = { ll }; // expected-error {{cannot be narrowed from type 'long long'}} expected-note {{silence}} + Agg ll6 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{silence}} Agg ll7 = { 18446744073709551615ULL }; // OK - Agg ll8 = { __int128(18446744073709551615ULL) + 1 }; // expected-error {{ 18446744073709551616 which cannot be narrowed}} expected-note {{override}} expected-warning {{changes value}} + Agg ll8 = { __int128(18446744073709551615ULL) + 1 }; // expected-error {{ 18446744073709551616 which cannot be narrowed}} expected-note {{silence}} expected-warning {{changes value}} signed char c = 'x'; - unsigned short usc1 = { c }; // expected-error {{non-constant-expression cannot be narrowed from type 'signed char'}} expected-note {{override}} + unsigned short usc1 = { c }; // expected-error {{non-constant-expression cannot be narrowed from type 'signed char'}} expected-note {{silence}} unsigned short usc2 = { (signed char)'x' }; // OK - unsigned short usc3 = { (signed char)-1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}} + unsigned short usc3 = { (signed char)-1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{silence}} } // Be sure that type- and value-dependent expressions in templates get the error @@ -188,9 +189,9 @@ void shrink_int() { template void maybe_shrink_int(T t) { - Agg s1 = {t}; // expected-error {{ cannot be narrowed }} expected-note {{override}} - Agg s2 = {I}; // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} - Agg t2 = {700}; // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + Agg s1 = {t}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} + Agg s2 = {I}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} + Agg t2 = {700}; // expected-error {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} } void test_template() { @@ -203,9 +204,9 @@ void test_template() { void test_qualifiers(int i) { const int j = i; - struct {const unsigned char c;} c1 = {j}; // expected-error {{from type 'int' to 'unsigned char' in}} expected-note {{override}} + struct {const unsigned char c;} c1 = {j}; // expected-error {{from type 'int' to 'unsigned char' in}} expected-note {{silence}} // Template arguments make it harder to avoid printing qualifiers: - Agg c2 = {j}; // expected-error {{from type 'int' to 'const unsigned char' in}} expected-note {{override}} + Agg c2 = {j}; // expected-error {{from type 'int' to 'const unsigned char' in}} expected-note {{silence}} } // Test SFINAE checks. diff --git a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp index 4bcf113d7142..d4d8198d4fc8 100644 --- a/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp +++ b/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp @@ -9,16 +9,16 @@ void std_example() { const int y = 999; const int z = 99; char c1 = x; // OK, though it might narrow (in this case, it does narrow) - char c2{x}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - char c3{y}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + char c2{x}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + char c3{y}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} char c4{z}; // OK: no narrowing needed unsigned char uc1 = {5}; // OK: no narrowing needed - unsigned char uc2 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - unsigned int ui1 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + unsigned char uc2 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + unsigned int ui1 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} signed int si1 = - { (unsigned int)-1 }; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - int ii = {2.0}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - float f1 { x }; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + { (unsigned int)-1 }; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + int ii = {2.0}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + float f1 { x }; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} float f2 { 7 }; // OK: 7 can be exactly represented as a float int f(int); int a[] = @@ -45,19 +45,19 @@ template Convert ConvertVar(); // * from a floating-point type to an integer type, or void float_to_int() { - Agg a1 = {1.0F}; // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}} - Agg a2 = {1.0}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg a3 = {1.0L}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg a1 = {1.0F}; // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{silence}} + Agg a2 = {1.0}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg a3 = {1.0L}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} float f = 1.0; double d = 1.0; long double ld = 1.0; - Agg a4 = {f}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg a5 = {d}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg a6 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg a4 = {f}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg a5 = {d}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg a6 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} - Agg ce1 = { Convert(1.0) }; // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-warning {{type 'double' cannot be narrowed to 'char'}} expected-note {{override}} + Agg ce1 = { Convert(1.0) }; // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-warning {{type 'double' cannot be narrowed to 'char'}} expected-note {{silence}} } // * from long double to double or float, or from double to float, except where @@ -73,8 +73,8 @@ void shrink_float() { // Variables. Agg f1 = {f}; // OK (no-op) - Agg f2 = {d}; // expected-warning {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{override}} - Agg f3 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg f2 = {d}; // expected-warning {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{silence}} + Agg f3 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // Exact constants. Agg f4 = {1.0}; // OK (double constant represented exactly) Agg f5 = {1.0L}; // OK (long double constant represented exactly) @@ -82,8 +82,8 @@ void shrink_float() { Agg f6 = {0.1}; // OK (double constant in range but rounded) Agg f7 = {0.1L}; // OK (long double constant in range but rounded) // Out of range constants. - Agg f8 = {1E50}; // expected-warning {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg f9 = {1E50L}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg f8 = {1E50}; // expected-warning {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg f9 = {1E50L}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // More complex constant expression. constexpr long double e40 = 1E40L, e30 = 1E30L, e39 = 1E39L; Agg f10 = {e40 - 5 * e39 + e30 - 5 * e39}; // OK @@ -91,19 +91,19 @@ void shrink_float() { // Variables. Agg d1 = {f}; // OK (widening) Agg d2 = {d}; // OK (no-op) - Agg d3 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg d3 = {ld}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // Exact constant. Agg d4 = {1.0L}; // OK (long double constant represented exactly) // Inexact but in-range constant. Agg d5 = {0.1L}; // OK (long double constant in range but rounded) // Out of range constant. - Agg d6 = {1E315L}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg d6 = {1E315L}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // More complex constant expression. constexpr long double e315 = 1E315L, e305 = 1E305L, e314 = 1E314L; Agg d7 = {e315 - 5 * e314 + e305 - 5 * e314}; // OK - Agg ce1 = { Convert(1e300) }; // expected-warning {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{override}} + Agg ce1 = { Convert(1e300) }; // expected-warning {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{silence}} } // * from an integer type or unscoped enumeration type to a floating-point type, @@ -115,16 +115,16 @@ void int_to_float() { char c = 1; // Variables. Yes, even though all char's will fit into any floating type. - Agg f1 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg f2 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg f3 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg f1 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg f2 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg f3 = {c}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // Constants. Agg f4 = {12345678}; // OK (exactly fits in a float) - Agg f5 = {123456789}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg f5 = {123456789}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} - Agg ce1 = { Convert(123456789) }; // expected-warning {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{override}} - Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{override}} + Agg ce1 = { Convert(123456789) }; // expected-warning {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{silence}} + Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{silence}} } // * from an integer type or unscoped enumeration type to an integer type that @@ -136,38 +136,39 @@ void shrink_int() { // Not a constant expression. short s = 1; unsigned short us = 1; - Agg c1 = {s}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg s1 = {s}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg s2 = {us}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg c1 = {s}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg s1 = {s}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg s2 = {us}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // "that cannot represent all the values of the original type" means that the // validity of the program depends on the relative sizes of integral types. // This test compiles with -m64, so sizeof(int) i1 = {l1}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg i1 = {l1}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} long long ll = 1; Agg l2 = {ll}; // OK // Constants. Agg c2 = {127}; // OK - Agg c3 = {300}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + Agg c3 = {300}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} Agg i2 = {0x7FFFFFFFU}; // OK - Agg i3 = {0x80000000U}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg i4 = {-0x80000000L}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg i3 = {0x80000000U}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg i4 = {-0x80000000L}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // Bool is also an integer type, but conversions to it are a different AST // node. Agg b1 = {0}; // OK Agg b2 = {1}; // OK - Agg b3 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} + Agg b3 = {-1}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} // Conversions from pointers to booleans aren't narrowing conversions. - Agg b = {&b1}; // OK + Agg* ptr = &b1; + Agg b = {ptr}; // OK - Agg ce1 = { Convert(100000) }; // expected-warning {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{override}} expected-warning {{changes value from 100000 to -31072}} - Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{override}} + Agg ce1 = { Convert(100000) }; // expected-warning {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{silence}} expected-warning {{changes value from 100000 to -31072}} + Agg ce2 = { ConvertVar() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{silence}} } // Be sure that type- and value-dependent expressions in templates get the warning @@ -175,9 +176,9 @@ void shrink_int() { template void maybe_shrink_int(T t) { - Agg s1 = {t}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} - Agg s2 = {I}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} - Agg t2 = {700}; // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}} + Agg s1 = {t}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} + Agg s2 = {I}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} + Agg t2 = {700}; // expected-warning {{ cannot be narrowed }} expected-note {{silence}} expected-warning {{changes value}} } void test_template() { @@ -190,9 +191,9 @@ void test_template() { void test_qualifiers(int i) { const int j = i; - struct {const unsigned char c;} c1 = {j}; // expected-warning {{from type 'int' to 'unsigned char' in}} expected-note {{override}} + struct {const unsigned char c;} c1 = {j}; // expected-warning {{from type 'int' to 'unsigned char' in}} expected-note {{silence}} // Template arguments make it harder to avoid printing qualifiers: - Agg c2 = {j}; // expected-warning {{from type 'int' to 'const unsigned char' in}} expected-note {{override}} + Agg c2 = {j}; // expected-warning {{from type 'int' to 'const unsigned char' in}} expected-note {{silence}} } // Make sure we still get the right SFINAE behavior. diff --git a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp index 2ec1454100b6..cec747e1d605 100644 --- a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp @@ -22,13 +22,13 @@ typedef func_type_rvalue &func_type_rvalue_ref; // expected-error{{reference to template struct wrap { typedef T val; - typedef T *ptr; - typedef T &ref; + typedef T *ptr; // expected-error-re 2{{pointer to function type '{{.*}}' cannot have '{{&|&&}}' qualifier}} + typedef T &ref; // expected-error-re 2{{reference to function type '{{.*}}' cannot have '{{&|&&}}' qualifier}} }; -using func_type_lvalue = wrap<>::val; +using func_type_lvalue = wrap<>::val; // expected-note{{in instantiation of}} using func_type_lvalue = wrap::val; -using func_type_rvalue = wrap::val; +using func_type_rvalue = wrap::val; // expected-note{{in instantiation of}} using func_type_lvalue_ptr = wrap<>::ptr; using func_type_lvalue_ptr = wrap::ptr; @@ -51,3 +51,10 @@ void (X::*mpf2)() && = &X::f1; void (f() &&); // expected-error{{non-member function cannot have '&&' qualifier}} + +// FIXME: These are ill-formed. +template struct pass { + void f(T); +}; +pass pass0; +pass pass1; diff --git a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp index e2d94fbf3811..a035086c9a12 100644 --- a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp @@ -18,3 +18,16 @@ struct Y { friend void X::f() const; friend void ::f() const; // expected-error {{non-member function cannot have 'const' qualifier}} }; + +template struct S { + typedef T F; + typedef T *P; // expected-error {{pointer to function type 'void () const' cannot have 'const' qualifier}} + typedef T &R; // expected-error {{reference to function type 'void () const' cannot have 'const' qualifier}} +}; +S s; // expected-note {{in instantiation of}} + +// FIXME: This is ill-formed. +template struct U { + void f(T); +}; +U u; diff --git a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp index ec1ccbf5de5f..0454412229fa 100644 --- a/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp @@ -1,8 +1,8 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s struct A { }; -A::A (enum { e1 }) {} // expected-error{{can not be defined in a parameter}} -void A::f(enum { e2 }) {} // expected-error{{can not be defined in a parameter}} +A::A (enum { e1 }) {} // expected-error{{cannot be defined in a parameter}} +void A::f(enum { e2 }) {} // expected-error{{cannot be defined in a parameter}} -enum { e3 } A::g() { } // expected-error{{can not be defined in the result type}} \ +enum { e3 } A::g() { } // expected-error{{cannot be defined in the result type}} \ // expected-error{{out-of-line definition}} diff --git a/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp b/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp index 7e35788d898b..e159ab729d5f 100644 --- a/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp @@ -17,7 +17,7 @@ void f() { A a(b); int A::*ip = &A::s; // expected-error {{cannot initialize a variable of type 'int A::*' with an rvalue of type 'int *'}} - a.*&A::s = 10; // expected-error{{right hand operand to .* has non pointer-to-member type 'int *'}} + a.*&A::s = 10; // expected-error{{right hand operand to .* has non-pointer-to-member type 'int *'}} a.*&A::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}} ft(a); // expected-note{{in instantiation of function template specialization 'ft' requested here}} diff --git a/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp b/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp index cd623df71e81..0f76e1f3c79b 100644 --- a/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp @@ -1,5 +1,4 @@ // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -// expected-no-diagnostics template struct is_same { @@ -20,8 +19,8 @@ typedef int& LRI; typedef int&& RRI; typedef LRI& r1; CHECK_EQUAL_TYPES(r1, int&); -typedef const LRI& r2; CHECK_EQUAL_TYPES(r2, int&); -typedef const LRI&& r3; CHECK_EQUAL_TYPES(r3, int&); +typedef const LRI& r2; CHECK_EQUAL_TYPES(r2, int&); // expected-warning {{'const' qualifier on reference type 'LRI' (aka 'int &') has no effect}} +typedef const LRI&& r3; CHECK_EQUAL_TYPES(r3, int&); // expected-warning {{'const' qualifier on reference type 'LRI' (aka 'int &') has no effect}} typedef RRI& r4; CHECK_EQUAL_TYPES(r4, int&); typedef RRI&& r5; CHECK_EQUAL_TYPES(r5, int&&); diff --git a/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp b/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp index 99334b845aba..1d04d7d2a700 100644 --- a/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp @@ -22,3 +22,83 @@ int decltype(tfoo())::i; // expected-error{{nested name specifier 'decltype(t template void decltype(tfoo())::func() { // expected-error{{nested name specifier 'decltype(tfoo())::' for declaration does not refer into a class, class template or class template partial specialization}} } + +// An init-declarator named with a qualified-id can refer to an element of the +// inline namespace set of the named namespace. +namespace inline_namespaces { + namespace N { + inline namespace M { + void f(); // expected-note {{possible target}} + void g(); + extern int m; // expected-note {{candidate}} + extern int n; + struct S; // expected-note {{candidate}} + struct T; + enum E : int; // expected-note {{candidate}} + enum F : int; + template void ft(); // expected-note {{here}} + template void gt(); // expected-note {{here}} + template extern int mt; // expected-note {{here}} expected-warning {{extension}} + template extern int nt; // expected-note {{here}} expected-warning {{extension}} + template struct U; // expected-note {{here}} + template struct V; // expected-note {{here}} + } + + // When named by unqualified-id, we do *not* look in the inline namespace + // set. + void f() {} // expected-note {{possible target}} + int m; // expected-note {{candidate}} + struct S {}; // expected-note {{candidate}} + enum E : int {}; // expected-note {{candidate}} + + static_assert(&f != &M::f, ""); // expected-error {{reference to overloaded function could not be resolved}} + static_assert(&m != &M::m, ""); // expected-error {{ambiguous}} + typedef S X; // expected-error {{ambiguous}} + typedef E Y; // expected-error {{ambiguous}} + + // When named by (unqualified) template-id, we do look in the inline + // namespace set. See [namespace.def]p8, [temp.explicit]p3, + // [temp.expl.spec]p2. + // + // This is not explicitly specified for partial specializations, but + // that is just a language defect. + template<> void ft() {} + template void ft(); // expected-error {{undefined}} + + template int mt; + template<> int mt; + template int mt; + template int mt; // expected-error {{undefined}} + + template struct U {}; + template<> struct U {}; + template struct U; + template struct U; // expected-error {{undefined}} + } + + // When named by qualified-id, we *do* look in the inline namespace set. + void N::g() {} + int N::n; + struct N::T {}; + enum N::F : int {}; + + static_assert(&N::g == &N::M::g, ""); + static_assert(&N::n == &N::M::n, ""); + typedef N::T X; + typedef N::M::T X; + typedef N::F Y; + typedef N::M::F Y; + + template<> void N::gt() {} + template void N::gt(); // expected-error {{undefined}} + + template int N::nt; + template<> int N::nt; + template int N::nt; + template int N::nt; // expected-error {{undefined}} + + template struct N::V {}; + template<> struct N::V {}; + template struct N::V; + template struct N::V; // expected-error {{undefined}} +} diff --git a/test/CXX/dcl.decl/dcl.meaning/p1.cpp b/test/CXX/dcl.decl/dcl.meaning/p1.cpp index ec9a2611872c..5747380f2806 100644 --- a/test/CXX/dcl.decl/dcl.meaning/p1.cpp +++ b/test/CXX/dcl.decl/dcl.meaning/p1.cpp @@ -29,9 +29,17 @@ namespace NS { template void wibble(T); } namespace NS { - void NS::foo() {} // expected-error{{extra qualification on member 'foo'}} - int NS::bar; // expected-error{{extra qualification on member 'bar'}} - struct NS::X { }; // expected-error{{extra qualification on member 'X'}} - template struct NS::Y; // expected-error{{extra qualification on member 'Y'}} - template void NS::wibble(T) { } // expected-error{{extra qualification on member 'wibble'}} + // Under DR482, these are all valid, except for forward-declaring a struct + // with a nested-name-specifier. + void NS::foo(); // expected-warning {{extra qualification}} + extern int NS::bar; // expected-warning {{extra qualification}} + struct NS::X; // expected-error {{forward declaration of struct cannot have a nested name specifier}} expected-warning {{extra qualification}} + template struct NS::Y; // expected-error {{forward declaration of struct cannot have a nested name specifier}} expected-warning {{extra qualification}} + template void NS::wibble(T); // expected-warning {{extra qualification}} + + void NS::foo() {} // expected-warning{{extra qualification on member 'foo'}} + int NS::bar; // expected-warning{{extra qualification on member 'bar'}} + struct NS::X { }; // expected-warning{{extra qualification on member 'X'}} + template struct NS::Y { }; // expected-warning{{extra qualification on member 'Y'}} + template void NS::wibble(T) { } // expected-warning{{extra qualification on member 'wibble'}} } diff --git a/test/CXX/drs/dr0xx.cpp b/test/CXX/drs/dr0xx.cpp index 265a52d9261a..29e1720b1bbf 100644 --- a/test/CXX/drs/dr0xx.cpp +++ b/test/CXX/drs/dr0xx.cpp @@ -4,7 +4,7 @@ namespace dr1 { // dr1: no namespace X { extern "C" void dr1_f(int a = 1); } - namespace Y { extern "C" void dr1_f(int a = 2); } + namespace Y { extern "C" void dr1_f(int a = 1); } using X::dr1_f; using Y::dr1_f; void g() { dr1_f(0); @@ -25,7 +25,23 @@ namespace dr1 { // dr1: no } void X::z(int = 1) {} // expected-note {{previous}} namespace X { - void z(int = 2); // expected-error {{redefinition of default argument}} + void z(int = 1); // expected-error {{redefinition of default argument}} + } + + void i(int = 1); + void j() { + void i(int = 1); + using dr1::i; + i(0); + // FIXME: This should be rejected, due to the ambiguous default argument. + i(); + } + void k() { + using dr1::i; + void i(int = 1); + i(0); + // FIXME: This should be rejected, due to the ambiguous default argument. + i(); } } @@ -141,6 +157,21 @@ namespace dr12 { // dr12: sup 239 } } +namespace dr13 { // dr13: no + extern "C" void f(int); + void g(char); + + template struct A { + A(void (*fp)(T)); + }; + template int h(void (T)); + + A a1(f); // FIXME: We should reject this. + A a2(g); + int a3 = h(f); // FIXME: We should reject this. + int a4 = h(g); +} + namespace dr14 { // dr14: yes namespace X { extern "C" int dr14_f(); } namespace Y { extern "C" int dr14_f(); } @@ -194,10 +225,7 @@ namespace dr17 { // dr17: yes }; } -namespace dr18 { // dr18: yes - typedef void Void; - void f(Void); // expected-error {{empty parameter list defined with a typedef of 'void'}} -} +// dr18: sup 577 namespace dr19 { // dr19: yes struct A { @@ -464,23 +492,15 @@ namespace dr46 { // dr46: yes template template struct A::B; // expected-error {{expected unqualified-id}} } -namespace dr47 { // dr47: no +namespace dr47 { // dr47: sup 329 template struct A { - friend void f() { T t; } + friend void f() { T t; } // expected-error {{redefinition}} expected-note {{previous}} }; A a; - A b; -#if __cplusplus < 201103L - // expected-error@-5 {{redefinition}} expected-note@-5 {{previous}} - // expected-note@-3 {{instantiation of}} -#else + A b; // expected-note {{instantiation of}} + void f(); - // FIXME: We should produce some kind of error here. C++11 [temp.friend]p4 - // says we instantiate 'f' when it's odr-used, but that doesn't imply that - // this is valid; we still have multiple definitions of 'f' even if we never - // instantiate any of them. void g() { f(); } -#endif } namespace dr48 { // dr48: yes @@ -919,11 +939,10 @@ namespace dr87 { // dr87: no namespace dr88 { // dr88: yes template struct S { - static const int a = 1; + static const int a = 1; // expected-note {{previous}} static const int b; }; - // FIXME: This diagnostic is pretty bad. - template<> const int S::a = 4; // expected-error {{redefinition}} expected-note {{previous}} + template<> const int S::a = 4; // expected-error {{already has an initializer}} template<> const int S::b = 4; } @@ -963,6 +982,22 @@ namespace dr91 { // dr91: yes int k = f(U()); } +namespace dr92 { // dr92: yes + void f() throw(int, float); + void (*p)() throw(int) = &f; // expected-error {{target exception specification is not superset of source}} + void (*q)() throw(int); + void (**pp)() throw() = &q; // expected-error {{exception specifications are not allowed}} + + void g(void() throw()); + void h() { + g(f); // expected-error {{is not superset}} + g(q); // expected-error {{is not superset}} + } + + template struct X {}; + X<&f> xp; // ok +} + // dr93: na namespace dr94 { // dr94: yes diff --git a/test/CXX/drs/dr10xx.cpp b/test/CXX/drs/dr10xx.cpp new file mode 100644 index 000000000000..64c71b2b0f92 --- /dev/null +++ b/test/CXX/drs/dr10xx.cpp @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors + +// expected-no-diagnostics + +namespace std { + __extension__ typedef __SIZE_TYPE__ size_t; + + template struct initializer_list { + const T *p; size_t n; + initializer_list(const T *p, size_t n); + }; +} + +namespace dr1070 { // dr1070: 3.5 +#if __cplusplus >= 201103L + struct A { + A(std::initializer_list); + }; + struct B { + int i; + A a; + }; + B b = {1}; + struct C { + std::initializer_list a; + B b; + std::initializer_list c; + }; + C c = {}; +#endif +} diff --git a/test/CXX/drs/dr13xx.cpp b/test/CXX/drs/dr13xx.cpp new file mode 100644 index 000000000000..5827291142dc --- /dev/null +++ b/test/CXX/drs/dr13xx.cpp @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors + +namespace dr1346 { // dr1346: 3.5 + auto a(1); // expected-error 0-1{{extension}} + auto b(1, 2); // expected-error {{multiple expressions}} expected-error 0-1{{extension}} +#if __cplusplus >= 201103L + auto c({}); // expected-error {{parenthesized initializer list}} expected-error {{cannot deduce}} + auto d({1}); // expected-error {{parenthesized initializer list}} expected-error {{}} + auto e({1, 2}); // expected-error {{parenthesized initializer list}} expected-error {{}} +#endif + template void f(Ts ...ts) { // expected-error 0-1{{extension}} + auto x(ts...); // expected-error {{empty}} expected-error 0-1{{extension}} + } + template void f(); // expected-note {{instantiation}} + +#if __cplusplus >= 201103L + void init_capture() { + [a(1)] {} (); // expected-error 0-1{{extension}} + [b(1, 2)] {} (); // expected-error {{multiple expressions}} expected-error 0-1{{extension}} +#if __cplusplus >= 201103L + [c({})] {} (); // expected-error {{parenthesized initializer list}} expected-error {{cannot deduce}} expected-error 0-1{{extension}} + [d({1})] {} (); // expected-error {{parenthesized initializer list}} expected-error {{}} expected-error 0-1{{extension}} + [e({1, 2})] {} (); // expected-error {{parenthesized initializer list}} expected-error {{}} expected-error 0-1{{extension}} +#endif + } +#endif +} diff --git a/test/CXX/drs/dr14xx.cpp b/test/CXX/drs/dr14xx.cpp new file mode 100644 index 000000000000..8de1b8d623a9 --- /dev/null +++ b/test/CXX/drs/dr14xx.cpp @@ -0,0 +1,196 @@ +// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors + +#if __cplusplus < 201103L +// expected-no-diagnostics +#endif + +namespace dr1460 { // dr1460: 3.5 +#if __cplusplus >= 201103L + namespace DRExample { + union A { + union {}; + union {}; + constexpr A() {} + }; + constexpr A a = A(); + + union B { + union {}; + union {}; + constexpr B() = default; + }; + constexpr B b = B(); + + union C { + union {}; + union {}; + }; + constexpr C c = C(); +#if __cplusplus > 201103L + constexpr void f() { C c; } + static_assert((f(), true), ""); +#endif + } + + union A {}; + union B { int n; }; // expected-note +{{here}} + union C { int n = 0; }; + struct D { union {}; }; + struct E { union { int n; }; }; // expected-note +{{here}} + struct F { union { int n = 0; }; }; + + struct X { + friend constexpr A::A() noexcept; + friend constexpr B::B() noexcept; // expected-error {{follows non-constexpr declaration}} + friend constexpr C::C() noexcept; + friend constexpr D::D() noexcept; + friend constexpr E::E() noexcept; // expected-error {{follows non-constexpr declaration}} + friend constexpr F::F() noexcept; + }; + + // These are OK, because value-initialization doesn't actually invoke the + // constructor. + constexpr A a = A(); + constexpr B b = B(); + constexpr C c = C(); + constexpr D d = D(); + constexpr E e = E(); + constexpr F f = F(); + + namespace Defaulted { + union A { constexpr A() = default; }; + union B { int n; constexpr B() = default; }; // expected-error {{not constexpr}} + union C { int n = 0; constexpr C() = default; }; + struct D { union {}; constexpr D() = default; }; + struct E { union { int n; }; constexpr E() = default; }; // expected-error {{not constexpr}} + struct F { union { int n = 0; }; constexpr F() = default; }; + + struct G { union { int n = 0; }; union { int m; }; constexpr G() = default; }; // expected-error {{not constexpr}} + struct H { + union { + int n = 0; + }; + union { // expected-note 2{{member not initialized}} + int m; + }; + constexpr H() {} // expected-error {{must initialize all members}} + constexpr H(bool) : m(1) {} + constexpr H(char) : n(1) {} // expected-error {{must initialize all members}} + constexpr H(double) : m(1), n(1) {} + }; + } + +#if __cplusplus > 201103L + template constexpr bool check() { + T t; // expected-note-re 2{{non-constexpr constructor '{{[BE]}}'}} + return true; + } + static_assert(check(), ""); + static_assert(check(), ""); // expected-error {{constant}} expected-note {{in call}} + static_assert(check(), ""); + static_assert(check(), ""); + static_assert(check(), ""); // expected-error {{constant}} expected-note {{in call}} + static_assert(check(), ""); +#endif + + union G { + int a = 0; // expected-note {{previous initialization is here}} + int b = 0; // expected-error {{initializing multiple members of union}} + }; + union H { + union { + int a = 0; // expected-note {{previous initialization is here}} + }; + union { + int b = 0; // expected-error {{initializing multiple members of union}} + }; + }; + struct I { + union { + int a = 0; // expected-note {{previous initialization is here}} + int b = 0; // expected-error {{initializing multiple members of union}} + }; + }; + struct J { + union { int a = 0; }; + union { int b = 0; }; + }; + + namespace Overriding { + struct A { + int a = 1, b, c = 3; + constexpr A() : b(2) {} + }; + static_assert(A().a == 1 && A().b == 2 && A().c == 3, ""); + + union B { + int a, b = 2, c; + constexpr B() : a(1) {} + constexpr B(char) : b(4) {} + constexpr B(int) : c(3) {} + constexpr B(const char*) {} + }; + static_assert(B().a == 1, ""); + static_assert(B().b == 2, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(B('x').a == 0, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(B('x').b == 4, ""); + static_assert(B(123).b == 2, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(B(123).c == 3, ""); + static_assert(B("").a == 1, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(B("").b == 2, ""); + static_assert(B("").c == 3, ""); // expected-error {{constant}} expected-note {{read of}} + + struct C { + union { int a, b = 2, c; }; + union { int d, e = 5, f; }; + constexpr C() : a(1) {} + constexpr C(char) : c(3) {} + constexpr C(int) : d(4) {} + constexpr C(float) : f(6) {} + constexpr C(const char*) {} + }; + + static_assert(C().a == 1, ""); + static_assert(C().b == 2, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C().d == 4, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C().e == 5, ""); + + static_assert(C('x').b == 2, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C('x').c == 3, ""); + static_assert(C('x').d == 4, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C('x').e == 5, ""); + + static_assert(C(1).b == 2, ""); + static_assert(C(1).c == 3, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C(1).d == 4, ""); + static_assert(C(1).e == 5, ""); // expected-error {{constant}} expected-note {{read of}} + + static_assert(C(1.f).b == 2, ""); + static_assert(C(1.f).c == 3, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C(1.f).e == 5, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C(1.f).f == 6, ""); + + static_assert(C("").a == 1, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C("").b == 2, ""); + static_assert(C("").c == 3, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C("").d == 4, ""); // expected-error {{constant}} expected-note {{read of}} + static_assert(C("").e == 5, ""); + static_assert(C("").f == 6, ""); // expected-error {{constant}} expected-note {{read of}} + + struct D; + extern const D d; + struct D { + int a; + union { + int b = const_cast(d).a = 1; // not evaluated + int c; + }; + constexpr D() : a(0), c(0) {} + }; + constexpr D d {}; + static_assert(d.a == 0, ""); + } +#endif +} diff --git a/test/CXX/drs/dr15xx.cpp b/test/CXX/drs/dr15xx.cpp new file mode 100644 index 000000000000..66618c1716d6 --- /dev/null +++ b/test/CXX/drs/dr15xx.cpp @@ -0,0 +1,20 @@ +// RUN: %clang_cc1 -std=c++98 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++1y -triple x86_64-unknown-unknown %s -verify -fexceptions -fcxx-exceptions -pedantic-errors + +// expected-no-diagnostics + +namespace DR1550 { // dr1550: yes + int f(bool b, int n) { + return (b ? (throw 0) : n) + (b ? n : (throw 0)); + } +} + +namespace DR1560 { // dr1560: 3.5 + void f(bool b, int n) { + (b ? throw 0 : n) = (b ? n : throw 0) = 0; + } + class X { X(const X&); }; + const X &get(); + const X &x = true ? get() : throw 0; +} diff --git a/test/CXX/drs/dr1xx.cpp b/test/CXX/drs/dr1xx.cpp index 7045148034fb..6aff43c6a488 100644 --- a/test/CXX/drs/dr1xx.cpp +++ b/test/CXX/drs/dr1xx.cpp @@ -9,7 +9,7 @@ namespace dr100 { // dr100: yes B<"bar"> b; // expected-error {{does not refer to any declaration}} } -namespace dr101 { // dr101: yes +namespace dr101 { // dr101: 3.5 extern "C" void dr101_f(); typedef unsigned size_t; namespace X { @@ -18,6 +18,8 @@ namespace dr101 { // dr101: yes } using X::dr101_f; using X::size_t; + extern "C" void dr101_f(); + typedef unsigned size_t; } namespace dr102 { // dr102: yes @@ -38,13 +40,13 @@ namespace dr102 { // dr102: yes namespace dr106 { // dr106: sup 540 typedef int &r1; typedef r1 &r1; - typedef const r1 r1; - typedef const r1 &r1; + typedef const r1 r1; // expected-warning {{has no effect}} + typedef const r1 &r1; // expected-warning {{has no effect}} typedef const int &r2; typedef r2 &r2; - typedef const r2 r2; - typedef const r2 &r2; + typedef const r2 r2; // expected-warning {{has no effect}} + typedef const r2 &r2; // expected-warning {{has no effect}} } namespace dr107 { // dr107: yes @@ -64,7 +66,7 @@ namespace dr108 { // dr108: yes namespace dr109 { // dr109: yes struct A { template void f(T); }; template struct B : T { - using T::template f; // expected-error {{using declaration can not refer to a template}} + using T::template f; // expected-error {{using declaration cannot refer to a template}} void g() { this->f(123); } // expected-error {{use 'template'}} }; } @@ -592,11 +594,12 @@ namespace dr155 { // dr155: dup 632 struct S { int n; } s = { { 1 } }; // expected-warning {{braces around scalar initializer}} } -namespace dr159 { // dr159: no +// dr158 FIXME write codegen test + +namespace dr159 { // dr159: 3.5 namespace X { void f(); } void f(); - // FIXME: This should be accepted. - void dr159::f() {} // expected-error {{extra qualification}} + void dr159::f() {} // expected-warning {{extra qualification}} void dr159::X::f() {} } @@ -719,9 +722,9 @@ namespace dr169 { // dr169: yes }; struct D : A, B { using A::n; - using B::C; // expected-error {{using declaration can not refer to a template specialization}} - using B::f; // expected-error {{using declaration can not refer to a template specialization}} - using B::n; // expected-error {{using declaration can not refer to a template specialization}} + using B::C; // expected-error {{using declaration cannot refer to a template specialization}} + using B::f; // expected-error {{using declaration cannot refer to a template specialization}} + using B::n; // expected-error {{using declaration cannot refer to a template specialization}} }; } diff --git a/test/CXX/drs/dr2xx.cpp b/test/CXX/drs/dr2xx.cpp index 2c32a9e503f9..bb9af9fd9337 100644 --- a/test/CXX/drs/dr2xx.cpp +++ b/test/CXX/drs/dr2xx.cpp @@ -3,7 +3,7 @@ // RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // PR13819 -- __SIZE_TYPE__ is incompatible. -// REQUIRES: LP64 +typedef __SIZE_TYPE__ size_t; // expected-error 0-1 {{extension}} #if __cplusplus < 201103L #define fold(x) (__builtin_constant_p(x) ? (x) : (x)) @@ -216,8 +216,22 @@ namespace dr221 { // dr221: yes } } -// dr222 is a mystery -- it lists no changes to the standard, and yet was -// apparently both voted into the WP and acted upon by the editor. +namespace dr222 { // dr222: dup 637 + void f(int a, int b, int c, int *x) { +#pragma clang diagnostic push +#pragma clang diagnostic warning "-Wunsequenced" + void((a += b) += c); + void((a += b) + (a += c)); // expected-warning {{multiple unsequenced modifications to 'a'}} + + x[a++] = a; // expected-warning {{unsequenced modification and access to 'a'}} + + a = b = 0; // ok, read and write of 'b' are sequenced + + a = (b = a++); // expected-warning {{multiple unsequenced modifications to 'a'}} + a = (b = ++a); +#pragma clang diagnostic pop + } +} // dr223: na @@ -363,6 +377,13 @@ namespace dr229 { // dr229: yes template<> void f() {} } +namespace dr230 { // dr230: yes + struct S { + S() { f(); } // expected-warning {{call to pure virtual member function}} + virtual void f() = 0; // expected-note {{declared here}} + }; +} + namespace dr231 { // dr231: yes namespace outer { namespace inner { @@ -445,7 +466,7 @@ namespace dr243 { // dr243: yes A a2 = b; // expected-error {{ambiguous}} } -namespace dr244 { // dr244: no +namespace dr244 { // dr244: 3.5 struct B {}; struct D : B {}; // expected-note {{here}} D D_object; @@ -459,7 +480,7 @@ namespace dr244 { // dr244: no B_ptr->~B_alias(); B_ptr->B_alias::~B(); // This is valid under DR244. - B_ptr->B_alias::~B_alias(); // FIXME: expected-error {{expected the class name after '~' to name a destructor}} + B_ptr->B_alias::~B_alias(); B_ptr->dr244::~B(); // expected-error {{refers to a member in namespace}} B_ptr->dr244::~B_alias(); // expected-error {{refers to a member in namespace}} } @@ -552,21 +573,21 @@ namespace dr252 { // dr252: yes struct E { void operator delete(void*, int); - void operator delete(void*) = delete; // expected-error 0-1{{extension}} expected-note {{here}} - virtual ~E(); + void operator delete(void*) = delete; // expected-error 0-1{{extension}} expected-note 1-2 {{here}} + virtual ~E(); // expected-error 0-1 {{attempt to use a deleted function}} }; - E::~E() {} // expected-error {{deleted}} + E::~E() {} // expected-error {{attempt to use a deleted function}} struct F { // If both functions are available, the first one is a placement delete. - void operator delete(void*, __SIZE_TYPE__); + void operator delete(void*, size_t); void operator delete(void*) = delete; // expected-error 0-1{{extension}} expected-note {{here}} virtual ~F(); }; - F::~F() {} // expected-error {{deleted}} + F::~F() {} // expected-error {{attempt to use a deleted function}} struct G { - void operator delete(void*, __SIZE_TYPE__); + void operator delete(void*, size_t); virtual ~G(); }; G::~G() {} @@ -665,6 +686,8 @@ namespace dr259 { // dr259: yes c++11 #endif } +// FIXME: When dr260 is resolved, also add tests for DR507. + namespace dr261 { // dr261: no #pragma clang diagnostic push #pragma clang diagnostic warning "-Wused-but-marked-unused" @@ -674,7 +697,7 @@ namespace dr261 { // dr261: no // translation unit. // We're also missing the -Wused-but-marked-unused diagnostic here. struct A { - inline void *operator new(__SIZE_TYPE__) __attribute__((unused)); + inline void *operator new(size_t) __attribute__((unused)); inline void operator delete(void*) __attribute__((unused)); A() {} }; @@ -724,3 +747,293 @@ namespace dr263 { // dr263: yes // dr266: na // dr269: na // dr270: na + +namespace dr272 { // dr272: yes + struct X { + void f() { + this->~X(); + X::~X(); + ~X(); // expected-error {{unary expression}} + } + }; +} + +#include +#include +namespace dr273 { // dr273: yes + struct A { + int n; + }; + void operator&(A); + void f(A a, ...) { + offsetof(A, n); + va_list val; + va_start(val, a); + va_end(val); + } +} + +// dr274: na + +namespace dr275 { // dr275: no + namespace N { + template void f(T) {} // expected-note 1-4{{here}} + template void g(T) {} // expected-note {{candidate}} + template <> void f(int); + template <> void f(char); + template <> void f(double); + template <> void g(char); + } + + using namespace N; + + namespace M { + template <> void N::f(char) {} // expected-error {{'M' does not enclose namespace 'N'}} + template void g(T) {} + template <> void g(char) {} + template void f(long); +#if __cplusplus >= 201103L + // FIXME: this should be rejected in c++98 too + // expected-error@-3 {{must occur in namespace 'N'}} +#endif + template void N::f(unsigned long); +#if __cplusplus >= 201103L + // FIXME: this should be rejected in c++98 too + // expected-error@-3 {{not in a namespace enclosing 'N'}} +#endif + template void h(long); // expected-error {{does not refer to a function template}} + template <> void f(double) {} // expected-error {{no function template matches}} + } + + template void g(T) {} // expected-note {{candidate}} + + template <> void N::f(char) {} + template <> void f(int) {} // expected-error {{no function template matches}} + + template void f(short); +#if __cplusplus >= 201103L + // FIXME: this should be rejected in c++98 too + // expected-error@-3 {{must occur in namespace 'N'}} +#endif + template void N::f(unsigned short); + + // FIXME: this should probably be valid. the wording from the issue + // doesn't clarify this, but it follows from the usual rules. + template void g(int); // expected-error {{ambiguous}} + + // FIXME: likewise, this should also be valid. + template void f(T) {} // expected-note {{candidate}} + template void f(short); // expected-error {{ambiguous}} +} + +// dr276: na + +namespace dr277 { // dr277: yes + typedef int *intp; + int *p = intp(); + int a[fold(intp() ? -1 : 1)]; +} + +namespace dr280 { // dr280: yes + typedef void f0(); + typedef void f1(int); + typedef void f2(int, int); + typedef void f3(int, int, int); + struct A { + operator f1*(); // expected-note {{here}} expected-note {{candidate}} + operator f2*(); + }; + struct B { + operator f0*(); // expected-note {{candidate}} + private: + operator f3*(); // expected-note {{here}} expected-note {{candidate}} + }; + struct C { + operator f0*(); // expected-note {{candidate}} + operator f1*(); // expected-note {{candidate}} + operator f2*(); // expected-note {{candidate}} + operator f3*(); // expected-note {{candidate}} + }; + struct D : private A, B { // expected-note 2{{here}} + operator f2*(); // expected-note {{candidate}} + } d; + struct E : C, D {} e; + void g() { + d(); // ok, public + d(0); // expected-error {{private member of 'dr280::A'}} expected-error {{private base class 'dr280::A'}} + d(0, 0); // ok, suppressed by member in D + d(0, 0, 0); // expected-error {{private member of 'dr280::B'}} + e(); // expected-error {{ambiguous}} + e(0); // expected-error {{ambiguous}} + e(0, 0); // expected-error {{ambiguous}} + e(0, 0, 0); // expected-error {{ambiguous}} + } +} + +namespace dr281 { // dr281: no + void a(); + inline void b(); + + void d(); + inline void e(); + + struct S { + friend inline void a(); // FIXME: ill-formed + friend inline void b(); + friend inline void c(); // FIXME: ill-formed + friend inline void d() {} + friend inline void e() {} + friend inline void f() {} + }; +} + +namespace dr283 { // dr283: yes + template // expected-note 2{{here}} + struct S { + friend class T; // expected-error {{shadows}} + class T; // expected-error {{shadows}} + }; +} + +namespace dr284 { // dr284: no + namespace A { + struct X; + enum Y {}; + class Z {}; + } + namespace B { + struct W; + using A::X; + using A::Y; + using A::Z; + } + struct B::V {}; // expected-error {{no struct named 'V'}} + struct B::W {}; + struct B::X {}; // FIXME: ill-formed + enum B::Y e; // ok per dr417 + class B::Z z; // ok per dr417 + + struct C { + struct X; + enum Y {}; + class Z {}; + }; + struct D : C { + struct W; + using C::X; + using C::Y; + using C::Z; + }; + struct D::V {}; // expected-error {{no struct named 'V'}} + struct D::W {}; + struct D::X {}; // FIXME: ill-formed + enum D::Y e2; // ok per dr417 + class D::Z z2; // ok per dr417 +} + +namespace dr285 { // dr285: yes + template void f(T, int); // expected-note {{match}} + template void f(int, T); // expected-note {{match}} + template<> void f(int, int) {} // expected-error {{ambiguous}} +} + +namespace dr286 { // dr286: yes + template struct A { + class C { + template struct B {}; // expected-note {{here}} + }; + }; + + template + template + struct A::C::B { }; + + A::C::B absip; // expected-error {{private}} +} + +// dr288: na + +namespace dr289 { // dr289: yes + struct A; // expected-note {{forward}} + struct B : A {}; // expected-error {{incomplete}} + + template struct C { typename T::error error; }; // expected-error {{cannot be used prior to '::'}} + struct D : C {}; // expected-note {{instantiation}} +} + +// dr290: na +// dr291: dup 391 +// dr292 FIXME: write a codegen test + +namespace dr294 { // dr294: no + void f() throw(int); + int main() { + // FIXME: we reject this for the wrong reason, because we don't implement + // dr87 yet. + (void)static_cast(f); // expected-error {{not superset}} + void (*p)() throw() = f; // expected-error {{not superset}} + + (void)static_cast(f); // FIXME: ill-formed + } +} + +namespace dr295 { // dr295: no + typedef int f(); + // FIXME: This warning is incorrect. + const f g; // expected-warning {{unspecified behavior}} + const f &r = g; // expected-warning {{unspecified behavior}} + template struct X { + const T &f; + }; + X x = {g}; // FIXME: expected-error {{drops qualifiers}} +} + +namespace dr296 { // dr296: yes + struct A { + static operator int() { return 0; } // expected-error {{static}} + }; +} + +namespace dr298 { // dr298: yes + struct A { + typedef int type; + A(); + ~A(); + }; + typedef A B; // expected-note {{here}} + typedef const A C; // expected-note {{here}} + + A::type i1; + B::type i2; + C::type i3; + + struct A a; + struct B b; // expected-error {{refers to a typedef}} + struct C c; // expected-error {{refers to a typedef}} + + B::B() {} // expected-error {{requires a type specifier}} + B::A() {} // ok + C::~C() {} // expected-error {{destructor cannot be declared using a typedef 'C' (aka 'const dr298::A') of the class name}} + + typedef struct D E; // expected-note {{here}} + struct E {}; // expected-error {{conflicts with typedef}} + + struct F { + ~F(); + }; + typedef const F G; + G::~F() {} // ok +} + +namespace dr299 { // dr299: yes c++11 + struct S { + operator int(); + }; + struct T { + operator int(); // expected-note {{}} + operator unsigned short(); // expected-note {{}} + }; + // FIXME: should this apply to c++98 mode? + int *p = new int[S()]; // expected-error 0-1{{extension}} + int *q = new int[T()]; // expected-error {{ambiguous}} +} diff --git a/test/CXX/drs/dr3xx.cpp b/test/CXX/drs/dr3xx.cpp new file mode 100644 index 000000000000..53fc20e23fe6 --- /dev/null +++ b/test/CXX/drs/dr3xx.cpp @@ -0,0 +1,1285 @@ +// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors + +namespace dr300 { // dr300: yes + template void f(R (&)(A)) {} + int g(int); + void h() { f(g); } +} + +namespace dr301 { // dr301: yes + // see also dr38 + struct S; + template void operator+(T, T); + void operator-(S, S); + + void f() { + bool a = (void(*)(S, S))operator+ < + (void(*)(S, S))operator+; + bool b = (void(*)(S, S))operator- < + (void(*)(S, S))operator-; + bool c = (void(*)(S, S))operator+ < + (void(*)(S, S))operator-; // expected-error {{expected '>'}} + } + + template void f() { + typename T::template operator+ a; // expected-error {{typename specifier refers to a non-type template}} expected-error +{{}} + // FIXME: This shouldn't say (null). + class T::template operator+ b; // expected-error {{identifier followed by '<' indicates a class template specialization but (null) refers to a function template}} + enum T::template operator+ c; // expected-error {{expected identifier}} expected-error {{does not declare anything}} + enum T::template operator+::E d; // expected-error {{qualified name refers into a specialization of function template 'T::template operator +'}} expected-error {{forward reference}} + enum T::template X::E e; + T::template operator+::foobar(); // expected-error {{qualified name refers into a specialization of function template 'T::template operator +'}} + T::template operator+(0); // ok + } + + template class operator& {}; // expected-error +{{}} + template class T::operator& {}; // expected-error +{{}} + template class S::operator& {}; // expected-error +{{}} +} + +namespace dr302 { // dr302: yes + struct A { A(); ~A(); }; +#if __cplusplus < 201103L + struct B { // expected-error {{implicit default constructor for 'dr302::B' must explicitly initialize the const member 'n'}} + const int n; // expected-note {{declared here}} + A a; + } b = B(); // expected-note {{first required here}} + // Trivial default constructor C::C() is not called here. + struct C { + const int n; + } c = C(); +#else + struct B { + const int n; // expected-note {{deleted because field 'n' of const-qualified type 'const int' would not be initialized}} + A a; + } b = B(); // expected-error {{call to implicitly-deleted default constructor}} + // C::C() is called here, because even though it's trivial, it's deleted. + struct C { + const int n; // expected-note {{deleted because field 'n' of const-qualified type 'const int' would not be initialized}} + } c = C(); // expected-error {{call to implicitly-deleted default constructor}} + struct D { + const int n = 0; + } d = D(); +#endif +} + +// dr303: na + +namespace dr304 { // dr304: yes + typedef int &a; + int n = a(); // expected-error {{requires an initializer}} + + struct S { int &b; }; + int m = S().b; +#if __cplusplus < 201103L + // expected-error@-3 {{requires an initializer}} + // expected-note@-3 {{in value-initialization}} +#else + // expected-error@-5 {{deleted}} + // expected-note@-7 {{reference}} +#endif +} + +namespace dr305 { // dr305: no + struct A { + typedef A C; + }; + void f(A *a) { + struct A {}; + a->~A(); + a->~C(); + } + typedef A B; + void g(B *b) { + b->~B(); + b->~C(); + } + void h(B *b) { + struct B {}; // expected-note {{declared here}} + b->~B(); // expected-error {{does not match}} + } + + template struct X {}; + void i(X* x) { + struct X {}; + x->~X(); + x->~X(); + x->~X(); // expected-error {{no member named}} + } + + // FIXME: This appears to be valid (but allowing the nested types might be a + // defect). + template struct Nested { + template struct Nested {}; + }; + void testNested(Nested n) { n.~Nested(); } // expected-error {{no member named}} +#if __cplusplus < 201103L + // expected-error@-2 {{ambiguous}} + // expected-note@-6 {{here}} + // expected-note@-6 {{here}} +#endif + +#if __cplusplus >= 201103L + struct Y { + template using T1 = Y; + }; + template using T2 = Y; + void j(Y *y) { + y->~T1(); + y->~T2(); + } + struct Z { + template using T2 = T; + }; + void k(Z *z) { + // FIXME: This diagnostic is terrible. + z->~T1(); // expected-error {{'T1' following the 'template' keyword does not refer to a template}} expected-error +{{}} + z->~T2(); // expected-error {{no member named '~int'}} + z->~T2(); + } + + // FIXME: This is valid. + namespace Q { + template struct R {}; + } + template using R = Q::R; + void qr(Q::R x) { x.~R(); } // expected-error {{no member named}} +#endif +} + +namespace dr306 { // dr306: no + // FIXME: dup 39 + // FIXME: This should be accepted. + struct A { struct B {}; }; // expected-note 2{{member}} + struct C { typedef A::B B; }; // expected-note {{member}} + struct D : A, A::B, C {}; + D::B b; // expected-error {{found in multiple base classes of different types}} +} + +// dr307: na + +namespace dr308 { // dr308: yes + // This is mostly an ABI library issue. + struct A {}; + struct B : A {}; + struct C : A {}; + struct D : B, C {}; + void f() { + try { + throw D(); + } catch (const A&) { + // unreachable + } catch (const B&) { + // get here instead + } + } +} + +// dr309: dup 485 + +namespace dr311 { // dr311: yes + namespace X { namespace Y {} } + namespace X::Y {} // expected-error {{must define each namespace separately}} + namespace X { + namespace X::Y {} // expected-error {{must define each namespace separately}} + } + // FIXME: The diagnostics here are not very good. + namespace ::dr311::X {} // expected-error 2+{{}} // expected-warning {{extra qual}} +} + +// dr312: dup 616 + +namespace dr313 { // dr313: dup 299 c++11 + struct A { operator int() const; }; + int *p = new int[A()]; +#if __cplusplus < 201103L + // FIXME: should this be available in c++98 mode? expected-error@-2 {{extension}} +#endif +} + +namespace dr314 { // dr314: dup 1710 + template struct A { + template struct B {}; + }; + template struct C : public A::template B { + C() : A::template B() {} + }; +} + +// dr315: na +// dr316: sup 1004 + +namespace dr317 { // dr317: 3.5 + void f() {} // expected-note {{previous}} + inline void f(); // expected-error {{inline declaration of 'f' follows non-inline definition}} + + int g(); + int n = g(); + inline int g() { return 0; } + + int h(); + int m = h(); + int h() { return 0; } // expected-note {{previous}} + inline int h(); // expected-error {{inline declaration of 'h' follows non-inline definition}} +} + +namespace dr318 { // dr318: sup 1310 + struct A {}; + struct A::A a; +} + +namespace dr319 { // dr319: no + // FIXME: dup dr389 + // FIXME: We don't have a diagnostic for a name with linkage + // having a type without linkage. + typedef struct { + int i; + } *ps; + extern "C" void f(ps); + void g(ps); // FIXME: ill-formed, type 'ps' has no linkage + + static enum { e } a1; + enum { e2 } a2; // FIXME: ill-formed, enum type has no linkage + + enum { n1 = 1u }; + typedef int (*pa)[n1]; + pa parr; // ok, type has linkage despite using 'n1' + + template struct X {}; + + void f() { + struct A { int n; }; + extern A a; // FIXME: ill-formed + X xa; + + typedef A B; + extern B b; // FIXME: ill-formed + X xb; + + const int n = 1; + typedef int (*C)[n]; + extern C c; // ok + X xc; + } +#if __cplusplus < 201103L + // expected-error@-12 {{uses local type 'A'}} + // expected-error@-9 {{uses local type 'A'}} +#endif +} + +namespace dr320 { // dr320: yes +#if __cplusplus >= 201103L + struct X { + constexpr X() {} + constexpr X(const X &x) : copies(x.copies + 1) {} + unsigned copies = 0; + }; + constexpr X f(X x) { return x; } + constexpr unsigned g(X x) { return x.copies; } + static_assert(f(X()).copies == g(X()) + 1, "expected one extra copy for return value"); +#endif +} + +namespace dr321 { // dr321: dup 557 + namespace N { + template struct A { + template struct B; + }; + template<> template<> struct A<0>::B<0>; + void f(A<0>::B<0>); + } + template<> template<> struct N::A<0>::B<0> {}; + + template void g(T t) { f(t); } + template void g(N::A<0>::B<0>); + + namespace N { + template struct I { friend bool operator==(const I&, const I&); }; + } + N::I i, j; + bool x = i == j; +} + +namespace dr322 { // dr322: yes + struct A { + template operator T&(); + } a; + int &r = static_cast(a); + int &s = a; +} + +// dr323: no + +namespace dr324 { // dr324: yes + struct S { int n : 1; } s; // expected-note 3{{bit-field is declared here}} + int &a = s.n; // expected-error {{non-const reference cannot bind to bit-field}} + int *b = &s.n; // expected-error {{address of bit-field}} + int &c = (s.n = 0); // expected-error {{non-const reference cannot bind to bit-field}} + int *d = &(s.n = 0); // expected-error {{address of bit-field}} + int &e = true ? s.n : s.n; // expected-error {{non-const reference cannot bind to bit-field}} + int *f = &(true ? s.n : s.n); // expected-error {{address of bit-field}} + int &g = (void(), s.n); // expected-error {{non-const reference cannot bind to bit-field}} + int *h = &(void(), s.n); // expected-error {{address of bit-field}} +} + +namespace dr326 { // dr326: yes + struct S {}; + int test[__is_trivially_constructible(S, const S&) ? 1 : -1]; +} + +namespace dr327 { // dr327: dup 538 + struct A; + class A {}; + + class B; + struct B {}; +} + +namespace dr328 { // dr328: yes + struct A; // expected-note 3{{forward declaration}} + struct B { A a; }; // expected-error {{incomplete}} + template struct C { A a; }; // expected-error {{incomplete}} + A *p = new A[0]; // expected-error {{incomplete}} +} + +namespace dr329 { // dr329: 3.5 + struct B {}; + template struct A : B { + friend void f(A a) { g(a); } + friend void h(A a) { g(a); } // expected-error {{undeclared}} + friend void i(B b) {} // expected-error {{redefinition}} expected-note {{previous}} + }; + A a; + A b; // expected-note {{instantiation}} + + void test() { + h(a); // expected-note {{instantiation}} + } +} + +namespace dr331 { // dr331: yes + struct A { + A(volatile A&); // expected-note {{candidate}} + } const a, b(a); // expected-error {{no matching constructor}} +} + +namespace dr332 { // dr332: dup 557 + void f(volatile void); // expected-error {{'void' as parameter must not have type qualifiers}} + void g(const void); // expected-error {{'void' as parameter must not have type qualifiers}} + void h(int n, volatile void); // expected-error {{'void' must be the first and only parameter}} +} + +namespace dr333 { // dr333: yes + int n = 0; + int f(int(n)); + int g((int(n))); + int h = f(g); +} + +namespace dr334 { // dr334: yes + template void f() { + T x; + f((x, 123)); + } + struct S { + friend S operator,(S, int); + friend void f(S); + }; + template void f(); +} + +// dr335: no + +namespace dr336 { // dr336: yes + namespace Pre { + template class A { + template class B { + template void mf1(T3); + void mf2(); + }; + }; + template<> template class A::B {}; + template<> template<> template void A::B::mf1(T t) {} // expected-error {{does not match}} + template template<> void A::B::mf2() {} // expected-error {{does not refer into a class}} + } + namespace Post { + template class A { + template class B { + template void mf1(T3); + void mf2(); + }; + }; + template<> template class A::B { + template void mf1(T); + }; + template<> template<> template void A::B::mf1(T t) {} + // FIXME: This diagnostic isn't very good. + template template<> void A::B::mf2() {} // expected-error {{does not refer into a class}} + } +} + +namespace dr337 { // dr337: yes + template void f(T (*)[1]); + template int &f(...); + + struct A { virtual ~A() = 0; }; + int &r = f(0); + + // FIXME: The language rules here are completely broken. We cannot determine + // whether an incomplete type is abstract. See DR1640, which will probably + // supersede this one and remove this rule. + struct B; + int &s = f(0); // expected-error {{of type 'void'}} + struct B { virtual ~B() = 0; }; +} + +namespace dr339 { // dr339: yes + template struct A { static const int value = I; }; + + char xxx(int); + char (&xxx(float))[2]; + + template A f(T) {} // expected-note {{candidate}} + + void test() { + A<1> a = f(0); + A<2> b = f(0.0f); + A<3> c = f("foo"); // expected-error {{no matching function}} + } + + + char f(int); + int f(...); + + template struct conv_int { + static const bool value = sizeof(f(T())) == 1; + }; + + template bool conv_int2(A p); + + template A make_A(); + + int a[conv_int::value ? 1 : -1]; + bool b = conv_int2(A<1>()); + A<1> c = make_A(); +} + +namespace dr340 { // dr340: yes + struct A { A(int); }; + struct B { B(A, A, int); }; + int x, y; + B b(A(x), A(y), 3); +} + +namespace dr341 { // dr341: sup 1708 + namespace A { + int n; + extern "C" int &dr341_a = n; // expected-note {{previous}} expected-note {{declared with C language linkage here}} + } + namespace B { + extern "C" int &dr341_a = dr341_a; // expected-error {{redefinition}} + } + extern "C" void dr341_b(); // expected-note {{declared with C language linkage here}} +} +int dr341_a; // expected-error {{declaration of 'dr341_a' in global scope conflicts with declaration with C language linkage}} +int dr341_b; // expected-error {{declaration of 'dr341_b' in global scope conflicts with declaration with C language linkage}} +int dr341_c; // expected-note {{declared in global scope here}} +int dr341_d; // expected-note {{declared in global scope here}} +namespace dr341 { + extern "C" int dr341_c; // expected-error {{declaration of 'dr341_c' with C language linkage conflicts with declaration in global scope}} + extern "C" void dr341_d(); // expected-error {{declaration of 'dr341_d' with C language linkage conflicts with declaration in global scope}} + + namespace A { extern "C" int dr341_e; } // expected-note {{previous}} + namespace B { extern "C" void dr341_e(); } // expected-error {{redefinition of 'dr341_e' as different kind of symbol}} +} + +// dr342: na + +namespace dr343 { // dr343: no + // FIXME: dup 1710 + template struct A { + template struct B {}; + }; + // FIXME: In these contexts, the 'template' keyword is optional. + template struct C : public A::B { // expected-error {{use 'template'}} + C() : A::B() {} // expected-error {{use 'template'}} + }; +} + +namespace dr344 { // dr344: dup 1435 + struct A { inline virtual ~A(); }; + struct B { friend A::~A(); }; +} + +namespace dr345 { // dr345: yes + struct A { + struct X {}; + int X; // expected-note {{here}} + }; + struct B { + struct X {}; + }; + template void f(T t) { typename T::X x; } // expected-error {{refers to non-type member 'X'}} + void f(A a, B b) { + f(b); + f(a); // expected-note {{instantiation}} + } +} + +// dr346: na + +namespace dr347 { // dr347: yes + struct base { + struct nested; + static int n; + static void f(); + void g(); + }; + + struct derived : base {}; + + struct derived::nested {}; // expected-error {{no struct named 'nested'}} + int derived::n; // expected-error {{no member named 'n'}} + void derived::f() {} // expected-error {{does not match any}} + void derived::g() {} // expected-error {{does not match any}} +} + +// dr348: na + +namespace dr349 { // dr349: no + struct A { + template operator T ***() { + int ***p = 0; + return p; // expected-error {{cannot initialize return object of type 'const int ***' with an lvalue of type 'int ***'}} + } + }; + + // FIXME: This is valid. + A a; + const int *const *const *p1 = a; // expected-note {{in instantiation of}} + + struct B { + template operator T ***() { + const int ***p = 0; + return p; + } + }; + + // FIXME: This is invalid. + B b; + const int *const *const *p2 = b; +} + +// dr351: na + +namespace dr352 { // dr352: yes + namespace example1 { + namespace A { + enum E {}; + template void foo(E, R (*)(A)); // expected-note 2{{couldn't infer template argument 'R'}} + } + + template void arg(T); + template int arg(T) = delete; // expected-note {{here}} expected-error 0-1{{extension}} + + void f(A::E e) { + foo(e, &arg); // expected-error {{no matching function}} + + using A::foo; + foo(e, &arg); // expected-error {{deleted}} + } + + int arg(int); + + void g(A::E e) { + foo(e, &arg); // expected-error {{no matching function}} + + using A::foo; + foo(e, &arg); // ok, uses non-template + } + } + + namespace contexts { + template void f1(int (&)[I]); + template void f2(int (&)[I+1]); // expected-note {{couldn't infer}} + template void f3(int (&)[I+1], int (&)[I]); + void f() { + int a[4]; + int b[3]; + f1(a); + f2(a); // expected-error {{no matching function}} + f3(a, b); + } + + template struct S {}; + template void g1(S); + template void g2(S); // expected-note {{couldn't infer}} + template void g3(S, S); + void g() { + S<4> a; + S<3> b; + g1(a); + g2(a); // expected-error {{no matching function}} + g3(a, b); + } + + template void h1(T = 0); // expected-note {{couldn't infer}} + template void h2(T, T = 0); + void h() { + h1(); // expected-error {{no matching function}} + h1(0); + h1(); + h2(0); + } + + template int tmpl(T); + template void i1(R (*)(A)); // expected-note 3{{couldn't infer}} + template void i2(R, A, R (*)(A)); // expected-note {{not viable}} + void i() { + extern int single(int); + i1(single); + i2(0, 0, single); + + extern int ambig(float), ambig(int); + i1(ambig); // expected-error {{no matching function}} + i2(0, 0, ambig); + + extern void no_match(float), no_match(int); + i1(no_match); // expected-error {{no matching function}} + i2(0, 0, no_match); // expected-error {{no matching function}} + + i1(tmpl); // expected-error {{no matching function}} + i2(0, 0, tmpl); + } + } + + template struct is_int; + template<> struct is_int {}; + + namespace example2 { + template int f(T (*p)(T)) { is_int(); } + int g(int); + int g(char); + int i = f(g); + } + + namespace example3 { + template int f(T, T (*p)(T)) { is_int(); } + int g(int); + char g(char); + int i = f(1, g); + } + + namespace example4 { + template int f(T, T (*p)(T)) { is_int(); } + char g(char); + template T g(T); + int i = f(1, g); + } + + namespace example5 { + template class A {}; + template void g(A); // expected-note {{couldn't infer}} + template void f(A, A); + void h(A<1> a1, A<2> a2) { + g(a1); // expected-error {{no matching function}} + g<0>(a1); + f(a1, a2); + } + } +} + +// dr353 needs an IRGen test. + +namespace dr354 { // dr354: yes c++11 + // FIXME: Should we allow this in C++98 too? + struct S {}; + + template struct ptr {}; // expected-note +{{here}} + ptr<0> p0; + ptr<(int*)0> p1; + ptr<(float*)0> p2; + ptr<(int S::*)0> p3; +#if __cplusplus < 201103L + // expected-error@-5 {{does not refer to any decl}} + // expected-error@-5 {{does not refer to any decl}} + // expected-error@-5 {{does not refer to any decl}} + // expected-error@-5 {{does not refer to any decl}} +#else + // expected-error@-10 {{must be cast}} + // ok + // expected-error@-10 {{does not match}} + // expected-error@-10 {{does not match}} +#endif + + template int both(); + template int both(); + int b0 = both<0>(); + int b1 = both<(int*)0>(); +#if __cplusplus < 201103L + // expected-error@-2 {{no matching function}} + // expected-note@-6 {{candidate}} + // expected-note@-6 {{candidate}} +#endif + + template struct ptr_mem {}; // expected-note +{{here}} + ptr_mem<0> m0; + ptr_mem<(int S::*)0> m1; + ptr_mem<(float S::*)0> m2; + ptr_mem<(int *)0> m3; +#if __cplusplus < 201103L + // expected-error@-5 {{cannot be converted}} + // expected-error@-5 {{is not a pointer to member constant}} + // expected-error@-5 {{cannot be converted}} + // expected-error@-5 {{cannot be converted}} +#else + // expected-error@-10 {{must be cast}} + // ok + // expected-error@-10 {{does not match}} + // expected-error@-10 {{does not match}} +#endif +} + +struct dr355_S; // dr355: yes +struct ::dr355_S {}; // expected-warning {{extra qualification}} +namespace dr355 { struct ::dr355_S s; } + +// dr356: na + +namespace dr357 { // dr357: yes + template struct A { + void f() const; // expected-note {{const qualified}} + }; + template void A::f() {} // expected-error {{does not match}} + + struct B { + template void f(); + }; + template void B::f() const {} // expected-error {{does not match}} +} + +namespace dr358 { // dr358: yes + extern "C" void dr358_f(); + namespace N { + int var; + extern "C" void dr358_f() { var = 10; } + } +} + +namespace dr359 { // dr359: yes + // Note, the example in the DR is wrong; it doesn't contain an anonymous + // union. + struct E { + union { + struct { + int x; + } s; + } v; + + union { + struct { // expected-error {{extension}} + int x; + } s; + + struct S { // expected-error {{types cannot be declared in an anonymous union}} + int x; + } t; + + union { // expected-error {{extension}} + int u; + }; + }; + }; +} + +// dr362: na +// dr363: na + +namespace dr364 { // dr364: yes + struct S { + static void f(int); + void f(char); + }; + + void g() { + S::f('a'); // expected-error {{call to non-static}} + S::f(0); + } +} + +#if "foo" // expected-error {{invalid token}} dr366: yes +#endif + +namespace dr367 { // dr367: yes + // FIXME: These diagnostics are terrible. Don't diagnose an ill-formed global + // array as being a VLA! + int a[true ? throw 0 : 4]; // expected-error 2{{variable length array}} + int b[true ? 4 : throw 0]; + int c[true ? *new int : 4]; // expected-error 2{{variable length array}} + int d[true ? 4 : *new int]; +#if __cplusplus < 201103L + // expected-error@-4 {{variable length array}} expected-error@-4 {{constant expression}} + // expected-error@-3 {{variable length array}} expected-error@-3 {{constant expression}} +#endif +} + +namespace dr368 { // dr368: yes + template struct S {}; // expected-note {{here}} + template int f(S *); // expected-error {{function type}} + //template int g(S *); // FIXME: crashes clang + template int g(S *); // expected-note {{cannot have type 'dr368::X'}} + struct X {}; + int n = g(0); // expected-error {{no matching}} +} + +// dr370: na + +namespace dr372 { // dr372: no + namespace example1 { + template struct X { + protected: + typedef T Type; // expected-note 2{{protected}} + }; + template struct Y {}; + + // FIXME: These two are valid; deriving from T1 gives Z1 access to + // the protected member T1::Type. + template class T1, + template class T2> struct Z1 : + T1, + T2::Type> {}; // expected-error {{protected}} + + template class T1, + template class T2> struct Z2 : + T2::Type>, // expected-error {{protected}} + T1 {}; + + Z1 z1; // expected-note {{instantiation of}} + Z2 z2; // expected-note {{instantiation of}} + } + + namespace example2 { + struct X { + private: + typedef int Type; // expected-note {{private}} + }; + template struct A { + typename T::Type t; // expected-error {{private}} + }; + A ax; // expected-note {{instantiation of}} + } + + namespace example3 { + struct A { + protected: + typedef int N; // expected-note 2{{protected}} + }; + + template struct B {}; + template struct C : U, B {}; // expected-error {{protected}} + template struct D : B, U {}; // expected-error {{protected}} + + C x; // expected-note {{instantiation of}} + D y; // expected-note {{instantiation of}} + } + + namespace example4 { + class A { + class B {}; + friend class X; + }; + + struct X : A::B { + A::B mx; + class Y { + A::B my; + }; + }; + } +} + +namespace dr373 { // dr373: no + // FIXME: This is valid. + namespace X { int dr373; } // expected-note 2{{here}} + struct dr373 { // expected-note {{here}} + void f() { + using namespace dr373::X; // expected-error {{no namespace named 'X' in 'dr373::dr373'}} + int k = dr373; // expected-error {{does not refer to a value}} + + namespace Y = dr373::X; // expected-error {{no namespace named 'X' in 'dr373::dr373'}} + k = Y::dr373; + } + }; +} + +namespace dr374 { // dr374: yes c++11 + namespace N { + template void f(); + template struct A { void f(); }; + } + template<> void N::f() {} + template<> void N::A::f() {} + template<> struct N::A {}; +#if __cplusplus < 201103L + // expected-error@-4 {{extension}} expected-note@-7 {{here}} + // expected-error@-4 {{extension}} expected-note@-7 {{here}} + // expected-error@-4 {{extension}} expected-note@-8 {{here}} +#endif +} + +// dr375: dup 345 +// dr376: na + +namespace dr377 { // dr377: yes + enum E { // expected-error {{enumeration values exceed range of largest integer}} + a = -__LONG_LONG_MAX__ - 1, // expected-error 0-1{{extension}} + b = 2 * (unsigned long long)__LONG_LONG_MAX__ // expected-error 0-2{{extension}} + }; +} + +// dr378: dup 276 +// dr379: na + +namespace dr381 { // dr381: yes + struct A { + int a; + }; + struct B : virtual A {}; + struct C : B {}; + struct D : B {}; + struct E : public C, public D {}; + struct F : public A {}; + void f() { + E e; + e.B::a = 0; // expected-error {{ambiguous conversion}} + F f; + f.A::a = 1; + } +} + +namespace dr382 { // dr382: yes c++11 + // FIXME: Should we allow this in C++98 mode? + struct A { typedef int T; }; + typename A::T t; + typename dr382::A a; +#if __cplusplus < 201103L + // expected-error@-3 {{occurs outside of a template}} + // expected-error@-3 {{occurs outside of a template}} +#endif + typename A b; // expected-error {{expected a qualified name}} +} + +namespace dr383 { // dr383: yes + struct A { A &operator=(const A&); }; + struct B { ~B(); }; + union C { C &operator=(const C&); }; + union D { ~D(); }; + int check[(__is_pod(A) || __is_pod(B) || __is_pod(C) || __is_pod(D)) ? -1 : 1]; +} + +namespace dr384 { // dr384: yes + namespace N1 { + template struct Base {}; + template struct X { + struct Y : public Base { + Y operator+(int) const; + }; + Y f(unsigned i) { return Y() + i; } + }; + } + + namespace N2 { + struct Z {}; + template int *operator+(T, unsigned); + } + + int main() { + N1::X v; + v.f(0); + } +} + +namespace dr385 { // dr385: yes + struct A { protected: void f(); }; + struct B : A { using A::f; }; + struct C : A { void g(B b) { b.f(); } }; + void h(B b) { b.f(); } + + struct D { int n; }; // expected-note {{member}} + struct E : protected D {}; // expected-note 2{{protected}} + struct F : E { friend int i(E); }; + int i(E e) { return e.n; } // expected-error {{protected base}} expected-error {{protected member}} +} + +namespace dr387 { // dr387: yes + namespace old { + template class number { + number(int); // expected-note 2{{here}} + friend number gcd(number &x, number &y) {} + }; + + void g() { + number a(3), b(4); // expected-error 2{{private}} + a = gcd(a, b); + b = gcd(3, 4); // expected-error {{undeclared}} + } + } + + namespace newer { + template class number { + public: + number(int); + friend number gcd(number x, number y) { return 0; } + }; + + void g() { + number a(3), b(4); + a = gcd(a, b); + b = gcd(3, 4); // expected-error {{undeclared}} + } + } +} + +// FIXME: dr388 needs codegen test + +namespace dr389 { // dr389: no + struct S { + typedef struct {} A; + typedef enum {} B; + typedef struct {} const C; // expected-note 0-2{{here}} + typedef enum {} const D; // expected-note 0-1{{here}} + }; + template struct T {}; + + struct WithLinkage1 {}; + enum WithLinkage2 {}; + typedef struct {} *WithLinkage3a, WithLinkage3b; + typedef enum {} WithLinkage4a, *WithLinkage4b; + typedef S::A WithLinkage5; + typedef const S::B WithLinkage6; + typedef int WithLinkage7; + typedef void (*WithLinkage8)(WithLinkage2 WithLinkage1::*, WithLinkage5 *); + typedef T WithLinkage9; + + typedef struct {} *WithoutLinkage1; // expected-note 0-1{{here}} + typedef enum {} const WithoutLinkage2; // expected-note 0-1{{here}} + // These two types don't have linkage even though they are externally visible + // and the ODR requires them to be merged across TUs. + typedef S::C WithoutLinkage3; + typedef S::D WithoutLinkage4; + typedef void (*WithoutLinkage5)(int (WithoutLinkage3::*)(char)); + +#if __cplusplus >= 201103L + // This has linkage even though its template argument does not. + // FIXME: This is probably a defect. + typedef T WithLinkage10; +#else + typedef int WithLinkage10; // dummy + + typedef T GoodArg1; + typedef T GoodArg2; + typedef T GoodArg3a; + typedef T GoodArg3b; + typedef T GoodArg4a; + typedef T GoodArg4b; + typedef T GoodArg5; + typedef T GoodArg6; + typedef T GoodArg7; + typedef T GoodArg8; + typedef T GoodArg9; + + typedef T BadArg1; // expected-error{{template argument uses}} + typedef T BadArg2; // expected-error{{template argument uses}} + typedef T BadArg3; // expected-error{{template argument uses}} + typedef T BadArg4; // expected-error{{template argument uses}} + typedef T BadArg5; // expected-error{{template argument uses}} +#endif + + extern WithLinkage1 withLinkage1; + extern WithLinkage2 withLinkage2; + extern WithLinkage3a withLinkage3a; + extern WithLinkage3b withLinkage3b; + extern WithLinkage4a withLinkage4a; + extern WithLinkage4b withLinkage4b; + extern WithLinkage5 withLinkage5; + extern WithLinkage6 withLinkage6; + extern WithLinkage7 withLinkage7; + extern WithLinkage8 withLinkage8; + extern WithLinkage9 withLinkage9; + extern WithLinkage10 withLinkage10; + + // FIXME: These are all ill-formed. + extern WithoutLinkage1 withoutLinkage1; + extern WithoutLinkage2 withoutLinkage2; + extern WithoutLinkage3 withoutLinkage3; + extern WithoutLinkage4 withoutLinkage4; + extern WithoutLinkage5 withoutLinkage5; + + // OK, extern "C". + extern "C" { + extern WithoutLinkage1 dr389_withoutLinkage1; + extern WithoutLinkage2 dr389_withoutLinkage2; + extern WithoutLinkage3 dr389_withoutLinkage3; + extern WithoutLinkage4 dr389_withoutLinkage4; + extern WithoutLinkage5 dr389_withoutLinkage5; + } + + // OK, defined. + WithoutLinkage1 withoutLinkageDef1; + WithoutLinkage2 withoutLinkageDef2 = WithoutLinkage2(); + WithoutLinkage3 withoutLinkageDef3 = {}; + WithoutLinkage4 withoutLinkageDef4 = WithoutLinkage4(); + WithoutLinkage5 withoutLinkageDef5; + + void use(const void *); + void use_all() { + use(&withLinkage1); use(&withLinkage2); use(&withLinkage3a); use(&withLinkage3b); + use(&withLinkage4a); use(&withLinkage4b); use(&withLinkage5); use(&withLinkage6); + use(&withLinkage7); use(&withLinkage8); use(&withLinkage9); use(&withLinkage10); + + use(&withoutLinkage1); use(&withoutLinkage2); use(&withoutLinkage3); + use(&withoutLinkage4); use(&withoutLinkage5); + + use(&dr389_withoutLinkage1); use(&dr389_withoutLinkage2); + use(&dr389_withoutLinkage3); use(&dr389_withoutLinkage4); + use(&dr389_withoutLinkage5); + + use(&withoutLinkageDef1); use(&withoutLinkageDef2); use(&withoutLinkageDef3); + use(&withoutLinkageDef4); use(&withoutLinkageDef5); + } + + void local() { + // FIXME: This is ill-formed. + extern WithoutLinkage1 withoutLinkageLocal; + } +} + +namespace dr390 { // dr390: yes + template + struct A { + A() { f(); } // expected-warning {{call to pure virt}} + virtual void f() = 0; // expected-note {{here}} + virtual ~A() = 0; + }; + template A::~A() { T::error; } // expected-error {{cannot be used prior to}} + template void A::f() { T::error; } // ok, not odr-used + struct B : A { // expected-note 2{{in instantiation of}} + void f() {} + } b; +} + +namespace dr391 { // dr391: yes c++11 + // FIXME: Should this apply to C++98 too? + class A { A(const A&); }; // expected-note 0-1{{here}} + A fa(); + const A &a = fa(); +#if __cplusplus < 201103L + // expected-error@-2 {{C++98 requires an accessible copy constructor}} +#endif + + struct B { B(const B&) = delete; }; // expected-error 0-1{{extension}} expected-note 0-1{{here}} + B fb(); + const B &b = fb(); +#if __cplusplus < 201103L + // expected-error@-2 {{deleted}} +#endif + + template + struct C { + C(const C&) { T::error; } + }; + C fc(); + const C &c = fc(); +} + +// dr392 FIXME write codegen test +// dr394: na + +namespace dr395 { // dr395: yes + struct S { + template (&operator T())[N]; // expected-error {{must use a typedef}} + template operator(T (&)[N])(); // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error +{{}} + template operator T *() const { return 0; } + template operator T U::*() const { return 0; } + template operator T (U::*)()() const { return 0; } // expected-error +{{}} + }; + + struct null1_t { + template struct ptr_mem_fun_t { + typedef T (U::*type)(); + }; + + template + operator typename ptr_mem_fun_t::type() const { // expected-note {{couldn't infer}} + return 0; + } + } null1; + int (S::*p)() = null1; // expected-error {{no viable conversion}} + + template using id = T; // expected-error 0-1{{extension}} + + struct T { + template operator id &(); + template operator id() const; + }; + + struct null2_t { + template using ptr_mem_fun_t = T (U::*)(); // expected-error 0-1{{extension}} + template operator ptr_mem_fun_t() const { return 0; }; + } null2; + int (S::*q)() = null2; +} + +namespace dr396 { // dr396: yes + void f() { + auto int a(); // expected-error {{storage class on function}} + int (i); // expected-note {{previous}} + auto int (i); // expected-error {{redefinition}} +#if __cplusplus >= 201103L + // expected-error@-4 {{'auto' storage class}} expected-error@-2 {{'auto' storage class}} +#endif + } +} + +// dr397: sup 1823 + +namespace dr398 { // dr398: yes + namespace example1 { + struct S { + static int const I = 42; + }; + template struct X {}; + template void f(X *) {} + template void f(X *) {} + void foo() { f(0); } + } + + namespace example2 { + template struct X {}; + template