[PATCH] D81678: Introduce frozen attribute at call sites for stricter poison analysis

Gui Andrade via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 19 16:52:01 PDT 2020


guiand updated this revision to Diff 272213.
guiand retitled this revision from "Introduce partialinit attribute at call sites for stricter poison analysis" to "Introduce frozen attribute at call sites for stricter poison analysis".
guiand edited the summary of this revision.
guiand added a comment.
Herald added subscribers: sstefan1, phosek, dmgreen, mstorsjo, arphaman, dylanmckay, dschuff, emaste.
Herald added a reviewer: jdoerfert.

Reversing the meaning of the attribute to `frozen` and having the code not apply it to records removed pretty much all the logical changes in the code.

I took Juneyoung's suggestion and added a new cc1 flag, -disable-frozen-args (doesn't apply to return position, only argument position `frozen` attributes), and applied that to some 150 particularly problematic tests. Thousands of other tests were programatically and manually changed to include the new attribute.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D81678/new/

https://reviews.llvm.org/D81678

Files:
  clang/include/clang/AST/Type.h
  clang/include/clang/Basic/CodeGenOptions.def
  clang/include/clang/Driver/CC1Options.td
  clang/lib/CodeGen/CGCall.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/ARCMT/objcmt-instancetype.m
  clang/test/ARCMT/objcmt-instancetype.m.result
  clang/test/ARCMT/objcmt-numeric-literals.m
  clang/test/ARCMT/objcmt-numeric-literals.m.result
  clang/test/AST/ast-dump-openmp-begin-declare-variant_6.c
  clang/test/ASTMerge/unnamed_fields/test.cpp
  clang/test/Analysis/casts.c
  clang/test/Analysis/inlining/DynDispatchBifurcate.m
  clang/test/Analysis/inlining/InlineObjCClassMethod.m
  clang/test/Analysis/misc-ps-region-store.m
  clang/test/Analysis/missing-bind-temporary.cpp
  clang/test/Analysis/silence-checkers-and-packages-core-all.cpp
  clang/test/CXX/class/class.compare/class.compare.default/p4.cpp
  clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp
  clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/dtor.cpp
  clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp
  clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p2-cxx0x.cpp
  clang/test/CXX/drs/dr0xx.cpp
  clang/test/CXX/except/except.spec/p14-ir.cpp
  clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm
  clang/test/CXX/modules-ts/codegen-basics.cppm
  clang/test/CXX/special/class.copy/p3.cpp
  clang/test/CodeGen/2004-02-13-Memset.c
  clang/test/CodeGen/2004-06-17-UnorderedCompares.c
  clang/test/CodeGen/2006-05-19-SingleEltReturn.c
  clang/test/CodeGen/2007-02-25-C-DotDotDot.c
  clang/test/CodeGen/2007-06-18-SextAttrAggregate.c
  clang/test/CodeGen/2008-03-05-syncPtr.c
  clang/test/CodeGen/2008-07-29-override-alias-decl.c
  clang/test/CodeGen/2008-07-30-implicit-initialization.c
  clang/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c
  clang/test/CodeGen/2009-02-13-zerosize-union-field.c
  clang/test/CodeGen/2009-05-04-EnumInreg.c
  clang/test/CodeGen/2009-09-24-SqrtErrno.c
  clang/test/CodeGen/3dnow-builtins.c
  clang/test/CodeGen/64bit-swiftcall.c
  clang/test/CodeGen/PR3589-freestanding-libcalls.c
  clang/test/CodeGen/_Bool-conversion.c
  clang/test/CodeGen/aapcs-align.cpp
  clang/test/CodeGen/aapcs64-align.cpp
  clang/test/CodeGen/aarch64-args.cpp
  clang/test/CodeGen/aarch64-byval-temp.c
  clang/test/CodeGen/aarch64-neon-3v.c
  clang/test/CodeGen/aarch64-neon-across.c
  clang/test/CodeGen/aarch64-neon-dot-product.c
  clang/test/CodeGen/aarch64-neon-extract.c
  clang/test/CodeGen/aarch64-neon-fcvt-intrinsics.c
  clang/test/CodeGen/aarch64-neon-fma.c
  clang/test/CodeGen/aarch64-neon-ldst-one.c
  clang/test/CodeGen/aarch64-neon-scalar-copy.c
  clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c
  clang/test/CodeGen/aarch64-neon-tbl.c
  clang/test/CodeGen/aarch64-neon-vcombine.c
  clang/test/CodeGen/aarch64-neon-vget-hilo.c
  clang/test/CodeGen/aarch64-neon-vget.c
  clang/test/CodeGen/aarch64-poly128.c
  clang/test/CodeGen/aarch64-poly64.c
  clang/test/CodeGen/aarch64-varargs-ms.c
  clang/test/CodeGen/aarch64-varargs.c
  clang/test/CodeGen/address-space-avr.c
  clang/test/CodeGen/address-space-field1.c
  clang/test/CodeGen/address-space.c
  clang/test/CodeGen/aggregate-assign-call.c
  clang/test/CodeGen/aix-return.c
  clang/test/CodeGen/aix-struct-arg.c
  clang/test/CodeGen/aix-vaargs.c
  clang/test/CodeGen/alias.c
  clang/test/CodeGen/align-param.c
  clang/test/CodeGen/align_value.cpp
  clang/test/CodeGen/alloc-align-attr.c
  clang/test/CodeGen/arc/arguments.c
  clang/test/CodeGen/arc/struct-align.c
  clang/test/CodeGen/arm-aapcs-vfp.c
  clang/test/CodeGen/arm-abi-vector.c
  clang/test/CodeGen/arm-arguments.c
  clang/test/CodeGen/arm-bf16-params-returns.c
  clang/test/CodeGen/arm-byval-align.c
  clang/test/CodeGen/arm-cmse-attr.c
  clang/test/CodeGen/arm-cmse-call.c
  clang/test/CodeGen/arm-float-helpers.c
  clang/test/CodeGen/arm-fp16-arguments.c
  clang/test/CodeGen/arm-homogenous.c
  clang/test/CodeGen/arm-mangle-bf16.cpp
  clang/test/CodeGen/arm-neon-directed-rounding.c
  clang/test/CodeGen/arm-neon-dot-product.c
  clang/test/CodeGen/arm-neon-fma.c
  clang/test/CodeGen/arm-neon-numeric-maxmin.c
  clang/test/CodeGen/arm-neon-vcvtX.c
  clang/test/CodeGen/arm-pcs.c
  clang/test/CodeGen/arm-swiftcall.c
  clang/test/CodeGen/arm-varargs.c
  clang/test/CodeGen/arm-vector-arguments.c
  clang/test/CodeGen/arm-vfp16-arguments.c
  clang/test/CodeGen/arm-vfp16-arguments2.cpp
  clang/test/CodeGen/arm64-aapcs-arguments.c
  clang/test/CodeGen/arm64-abi-vector.c
  clang/test/CodeGen/arm64-arguments.c
  clang/test/CodeGen/arm64-microsoft-arguments.cpp
  clang/test/CodeGen/arm64-microsoft-intrinsics.c
  clang/test/CodeGen/arm64-mte.c
  clang/test/CodeGen/arm64_32-vaarg.c
  clang/test/CodeGen/arm64_32.c
  clang/test/CodeGen/arm64_vcopy.c
  clang/test/CodeGen/arm64_vdupq_n_f64.c
  clang/test/CodeGen/arm_neon_intrinsics.c
  clang/test/CodeGen/armv7k-abi.c
  clang/test/CodeGen/asm-goto.c
  clang/test/CodeGen/asm-inout.c
  clang/test/CodeGen/asm-label.c
  clang/test/CodeGen/asm-reg-var-local.c
  clang/test/CodeGen/assume-aligned-and-alloc-align-attributes.c
  clang/test/CodeGen/atomic-arm64.c
  clang/test/CodeGen/atomic-ops-libcall.c
  clang/test/CodeGen/atomic-ops.c
  clang/test/CodeGen/atomic_ops.c
  clang/test/CodeGen/atomics-inlining.c
  clang/test/CodeGen/attr-cpuspecific.c
  clang/test/CodeGen/attr-disable-tail-calls.c
  clang/test/CodeGen/attr-func-def.c
  clang/test/CodeGen/attr-naked.c
  clang/test/CodeGen/attr-no-tail.c
  clang/test/CodeGen/attr-nomerge.cpp
  clang/test/CodeGen/attr-optnone.c
  clang/test/CodeGen/attr-target-mv-func-ptrs.c
  clang/test/CodeGen/attr-target-mv-va-args.c
  clang/test/CodeGen/attr-target-mv.c
  clang/test/CodeGen/attr-x86-interrupt.c
  clang/test/CodeGen/attributes.c
  clang/test/CodeGen/available-externally-hidden.cpp
  clang/test/CodeGen/available-externally-suppress.c
  clang/test/CodeGen/avr-builtins.c
  clang/test/CodeGen/avx2-builtins.c
  clang/test/CodeGen/avx512-reduceMinMaxIntrin.c
  clang/test/CodeGen/big-atomic-ops.c
  clang/test/CodeGen/bitfield-2.c
  clang/test/CodeGen/bittest-intrin.c
  clang/test/CodeGen/blocks-seq.c
  clang/test/CodeGen/blocks.c
  clang/test/CodeGen/bool-convert.c
  clang/test/CodeGen/bpf-attr-preserve-access-index-4.c
  clang/test/CodeGen/builtin-align-array.c
  clang/test/CodeGen/builtin-align.c
  clang/test/CodeGen/builtin-assume-aligned.c
  clang/test/CodeGen/builtin-assume.c
  clang/test/CodeGen/builtin-attributes.c
  clang/test/CodeGen/builtin-bpf-btf-type-id.c
  clang/test/CodeGen/builtin-constant-p.c
  clang/test/CodeGen/builtin-expect.c
  clang/test/CodeGen/builtin-memfns.c
  clang/test/CodeGen/builtin-ms-noop.cpp
  clang/test/CodeGen/builtin-preserve-access-index-array.c
  clang/test/CodeGen/builtin-preserve-access-index-nonptr.c
  clang/test/CodeGen/builtin-preserve-access-index-typedef.c
  clang/test/CodeGen/builtin-preserve-access-index.c
  clang/test/CodeGen/builtin-sponentry.c
  clang/test/CodeGen/builtin-sqrt.c
  clang/test/CodeGen/builtins-arm.c
  clang/test/CodeGen/builtins-bpf-preserve-field-info-1.c
  clang/test/CodeGen/builtins-bpf-preserve-field-info-2.c
  clang/test/CodeGen/builtins-memcpy-inline.c
  clang/test/CodeGen/builtins-ms.c
  clang/test/CodeGen/builtins-multiprecision.c
  clang/test/CodeGen/builtins-overflow.c
  clang/test/CodeGen/builtins-ppc-crypto.c
  clang/test/CodeGen/builtins-ppc-p7.c
  clang/test/CodeGen/builtins-ppc.c
  clang/test/CodeGen/builtins.c
  clang/test/CodeGen/c-strings.c
  clang/test/CodeGen/c11atomics-ios.c
  clang/test/CodeGen/c11atomics.c
  clang/test/CodeGen/callback_annotated.c
  clang/test/CodeGen/callback_openmp.c
  clang/test/CodeGen/callback_pthread_create.c
  clang/test/CodeGen/calling-conv-ignored.c
  clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-lvalue.cpp
  clang/test/CodeGen/catch-alignment-assumption-attribute-align_value-on-paramvar.cpp
  clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function-variable.cpp
  clang/test/CodeGen/catch-alignment-assumption-attribute-alloc_align-on-function.cpp
  clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function-two-params.cpp
  clang/test/CodeGen/catch-alignment-assumption-attribute-assume_aligned-on-function.cpp
  clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params-variable.cpp
  clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-three-params.cpp
  clang/test/CodeGen/catch-alignment-assumption-builtin_assume_aligned-two-params.cpp
  clang/test/CodeGen/catch-alignment-assumption-openmp.cpp
  clang/test/CodeGen/catch-implicit-integer-sign-changes-incdec.c
  clang/test/CodeGen/catch-implicit-integer-sign-changes.c
  clang/test/CodeGen/catch-implicit-signed-integer-truncation-or-sign-change.c
  clang/test/CodeGen/catch-nullptr-and-nonzero-offset-in-offsetof-idiom.c
  clang/test/CodeGen/catch-nullptr-and-nonzero-offset-when-nullptr-is-defined.c
  clang/test/CodeGen/catch-nullptr-and-nonzero-offset.c
  clang/test/CodeGen/catch-pointer-overflow-volatile.c
  clang/test/CodeGen/catch-pointer-overflow.c
  clang/test/CodeGen/cfi-check-fail.c
  clang/test/CodeGen/cfi-check-fail2.c
  clang/test/CodeGen/cfi-icall-generalize.c
  clang/test/CodeGen/cleanup-destslot-simple.c
  clang/test/CodeGen/cmse-clear-arg.c
  clang/test/CodeGen/cmse-clear-fp16.c
  clang/test/CodeGen/complex-builtins.c
  clang/test/CodeGen/complex-indirect.c
  clang/test/CodeGen/complex-init-list.c
  clang/test/CodeGen/complex-libcalls.c
  clang/test/CodeGen/complex-math.c
  clang/test/CodeGen/compound-literal.c
  clang/test/CodeGen/constructor-attribute.c
  clang/test/CodeGen/cxx-default-arg.cpp
  clang/test/CodeGen/debug-info-block-vars.c
  clang/test/CodeGen/debug-info-codeview-heapallocsite.c
  clang/test/CodeGen/debug-info-no-inline-line-tables.c
  clang/test/CodeGen/decl-in-prototype.c
  clang/test/CodeGen/decl.c
  clang/test/CodeGen/default-address-space.c
  clang/test/CodeGen/disable-tail-calls.c
  clang/test/CodeGen/dso-local-executable.c
  clang/test/CodeGen/enable_if.c
  clang/test/CodeGen/exceptions-seh-finally.c
  clang/test/CodeGen/exceptions-seh-leave.c
  clang/test/CodeGen/exceptions-seh-nested-finally.c
  clang/test/CodeGen/exceptions-seh.c
  clang/test/CodeGen/exceptions.c
  clang/test/CodeGen/exprs.c
  clang/test/CodeGen/ext-int-cc.c
  clang/test/CodeGen/extern-inline.c
  clang/test/CodeGen/fp-floatcontrol-pragma.cpp
  clang/test/CodeGen/fp-function-attrs.cpp
  clang/test/CodeGen/fp-options-to-fast-math-flags.c
  clang/test/CodeGen/fp128_complex.c
  clang/test/CodeGen/fpconstrained-cmp-double.c
  clang/test/CodeGen/fpconstrained-cmp-float.c
  clang/test/CodeGen/function-attributes.c
  clang/test/CodeGen/functions.c
  clang/test/CodeGen/global-decls.c
  clang/test/CodeGen/hexagon-hvx-abi.c
  clang/test/CodeGen/ifunc.c
  clang/test/CodeGen/incomplete-function-type-2.c
  clang/test/CodeGen/inline-optim.c
  clang/test/CodeGen/inline.c
  clang/test/CodeGen/inline2.c
  clang/test/CodeGen/lanai-arguments.c
  clang/test/CodeGen/lanai-regparm.c
  clang/test/CodeGen/le32-arguments.c
  clang/test/CodeGen/le32-libcall-pow.c
  clang/test/CodeGen/le32-vaarg.c
  clang/test/CodeGen/libcall-declarations.c
  clang/test/CodeGen/libcalls-complex.c
  (1081 more files...)





More information about the cfe-commits mailing list