This is an automated email from the git hooks/post-receive script.
tcwg-buildslave pushed a change to branch linaro-local/ci/tcwg_kernel/llvm-master-aarch64-lts-allmodconfig in repository toolchain/ci/llvm-project.
from fcab66d5fe5 [lldb] Findtypes -gmodules fix for too many matches adds 90eb7be6a17 [libc] Fix memcpy to adhere to qualified calls. adds ba8b3052b59 [Driver] Handle all optimization-record options for Darwin LTO adds a8c8b627f23 [ObjC generics] Fix not inheriting type bounds in categorie [...] adds 98f77828a98 Avoid using std::max_align_t in pre-C++11 mode adds e62dc1f6252 [MS] Fix assert handling enum forward decls in hasVisibleDe [...] adds a505ad58cf9 Revert "[X86] Add Support for Load Hardening to Mitigate Lo [...] adds 1d42c0db9a2 Revert "[X86] Add a Pass that builds a Condensed CFG for Lo [...] adds f9b570fbcf1 [gn build] Port 1d42c0db9a2 adds 2d658c56d57 Disable two new tests on Windows. They are failing but the [...] adds 725579379de [intel-mpx] Delete an unnecessary license header adds 3ccd454c102 Fix unused variable, format, and format string warnings. NFC. adds 501ec31b596 [llvm-stress][opaque pointers] Remove use of deprecated con [...] adds b11decc221a [clang codegen][opaque pointers] Remove use of deprecated c [...] adds 3e5d671c191 [polly][opaque pointers] Remove use of deprecated APIs. adds 83fa811e5bf [clang][opaque pointers] Fix up a bunch of "getType()->getE [...] adds 48ba745eacf This test is failing on the Ubuntu bot but the bot log does [...] adds 4ede8879924 PR45402: Make the restrictions on constant evaluation of me [...] adds 56246b241ed [NFC][PowerPC] Pre-commit a test case for D77448 adds 79afdfab9a5 [mlir] Change the default of `mlir-print-op-on-diagnostic` to true adds ca47ac3d5f6 [source maps] Fix remove, insert-after and replace adds e3bb36370d5 [mlir][DeclarativeParser] Emit an error if a `:` follows an [...] adds 966122524b5 Fix LLDB debug builds adds 32707481270 The thread plan list test is failing at least on Ubuntu Lin [...] adds 42016791101 [OpenMP] NFC: Fix trivial typo adds 0f37454c723 Fix typos in toy tutorial adds 179f4baba06 Don't treat a CXXScopeSpec with a nested name specifier but [...] adds 1ce0bc39eeb Add mention of advantages of `arc` in the Phabricator doc. adds b801577c596 AMDGPU: Fix a few more tests with old denormal subtarget features adds 1a2370bfb8c [MLIR] Fix shape inference in toy tutorial adds a975fde23a5 [clang] Annotate trivial getters and setters on hover. adds ebd522aaa8a [clangd] Tweak parseDocumentation loop to use raw lines. NFC adds 62f3a9650a9 [libc++] Attempt to workaround module invalidation bug adds a5eb1236e3b [IVDescriptors] Remove unnecessary DemandedBits.h include; NFC adds 1055e9e3c87 [IVDescriptors] Remove IRBuilder.h include; NFC adds ebd5a1b0498 [Reassociate] Use IRBuilderBase; NFC adds 541bead8b42 [Object] object::ELFObjectFile::dynamic_symbol_begin(): ski [...] adds 6896d559f3c [VNCoercion] Use IRBuilderBase; NFC adds b90ea4f3419 [IRBuilder] Move some code into the cpp file; NFC adds e5e719d8854 [X86][SSE] lowerV8I16Shuffle - lower compaction shuffles us [...] adds 87fd686f6fd [CostModel][X86] Add insert/extract cost tests for sub-128b [...] adds 6a57ba17c03 [CostModel][X86] Add shuffle cost tests for sub-128bit vectors adds 2e9839729d3 [WebAssembly] Fix wasm.lsda() optimization in WasmEHPrepare adds 0f9e1e3ae75 [clang-tidy]: fix false positive of cert-oop54-cpp check. adds 7db64e202f9 Disable relative paths in lit.site.cfg in presence of symlinks adds ceed44adfd1 [OpenMP][NFC] Remove unnecessary argument adds eec6d87626e [Attributor] Deduce attributes for non-exact functions adds 4ede7300968 [InstCombine] Don't limit uses in eraseInstFromFunction() adds eb81d440fc9 fix typo in comment to cycle bots adds fc5d8b672b9 [WebAssembly] Fix a sanitizer error in WasmEHPrepare adds 160f5aa65fa [mlir] Add an out-of-tree dialect example adds a2b18c5a080 [LV] Simplify tryToWiden as recipes are not re-used (NFC). adds 28202dd35cc [InstCombine] add more tests for min/max folding; NFC adds 6d343740435 [ValueTracking] add tests for smin/smax; NFC adds a13212582a9 [ELF][test] Test that thunks are processed before finalizeS [...] adds 9195b019113 [ELF][PPC64] Enable R_PPC64_REL14 trunks adds 17673ae0b2c [DAG] Fix PR45049: LegalizeTypes crash adds 3ce77142a64 Revert "[DAG] Fix PR45049: LegalizeTypes crash" adds 54176d1766f libcxx 'LLVM_USE_SANITIZER=Address;Undefined' adds 1580c76c4a0 [libc++] Enable the new libc++ testing format by default adds 3380d4d75e8 [X86] Cleanup vectorcall test checks adds be84d2b5b7e [CostModel][X86] Add some insert subvector cost tests for v [...]
No new revisions were added by this update.
Summary of changes: .../bugprone/UnhandledSelfAssignmentCheck.cpp | 7 +- clang-tools-extra/clangd/Hover.cpp | 192 +++- clang-tools-extra/clangd/unittests/HoverTests.cpp | 57 + .../bugprone-unhandled-self-assignment.cpp | 30 + clang/docs/LanguageExtensions.rst | 30 +- clang/include/clang/AST/ASTContext.h | 2 + clang/include/clang/Basic/DiagnosticASTKinds.td | 6 + clang/include/clang/Driver/Options.td | 4 - clang/include/clang/Sema/DeclSpec.h | 6 +- clang/include/clang/Sema/Sema.h | 2 +- clang/lib/AST/ASTContext.cpp | 11 + clang/lib/AST/ExprConstant.cpp | 70 +- clang/lib/AST/Type.cpp | 1 + clang/lib/CodeGen/CGCall.cpp | 8 +- clang/lib/CodeGen/CGCleanup.cpp | 3 +- clang/lib/CodeGen/CGDecl.cpp | 2 +- clang/lib/CodeGen/CGObjCMac.cpp | 8 +- clang/lib/CodeGen/CodeGenModule.cpp | 14 +- clang/lib/Driver/ToolChains/Arch/X86.cpp | 8 +- clang/lib/Driver/ToolChains/Darwin.cpp | 121 +- clang/lib/Sema/SemaDeclObjC.cpp | 6 +- clang/lib/Sema/SemaExpr.cpp | 2 +- clang/lib/Sema/SemaOpenMP.cpp | 15 +- clang/lib/Sema/SemaType.cpp | 8 +- clang/test/Driver/darwin-ld.c | 26 - clang/test/Driver/darwin-opt-record-ld.c | 42 + clang/test/Driver/x86-target-features.c | 5 - clang/test/Modules/Inputs/ms-enums/A.h | 1 + .../{pch-with-module-name/test.h => ms-enums/B.h} | 0 clang/test/Modules/Inputs/ms-enums/module.map | 2 + clang/test/Modules/ms-enums.cpp | 12 + clang/test/SemaCXX/constexpr-string.cpp | 66 +- clang/test/SemaCXX/nested-name-spec.cpp | 13 + .../parameterized_classes_collection_literal.m | 10 +- clang/test/SemaObjC/parameterized_classes_subst.m | 14 + libc/fuzzing/string/CMakeLists.txt | 1 + libc/src/string/CMakeLists.txt | 1 + libc/src/string/strcpy.cpp | 3 +- libc/test/src/string/CMakeLists.txt | 4 + libcxx/CMakeLists.txt | 3 + libcxx/include/cstddef | 8 +- libcxx/include/stddef.h | 8 +- .../db_deallocate.pass.cpp | 5 + .../support.dynamic/libcpp_deallocate.sh.cpp | 4 + libcxx/test/libcxx/modules/stds_include.sh.cpp | 14 +- libcxx/test/lit.cfg | 8 +- .../sequences/array/array.data/data.pass.cpp | 14 +- .../sequences/array/array.data/data_const.pass.cpp | 15 +- .../sequences/array/size_and_alignment.pass.cpp | 13 + .../test/std/depr/depr.c.headers/stddef_h.pass.cpp | 2 + .../support.types/max_align_t.pass.cpp | 8 + .../meta.trans.other/aligned_storage.pass.cpp | 42 +- lld/ELF/Thunks.cpp | 3 +- lld/lib/Core/Error.cpp | 2 +- lld/lib/Core/Resolver.cpp | 2 +- lld/test/ELF/aarch64-thunk-script.s | 15 + lld/test/ELF/ppc32-long-thunk.s | 8 + lld/test/ELF/ppc64-long-branch-rel14.s | 60 + lld/test/ELF/ppc64-long-branch.s | 9 + lldb/include/lldb/Target/ThreadPlanStack.h | 2 +- lldb/source/Commands/CommandObjectThread.cpp | 1 - .../source/Interpreter/OptionValuePathMappings.cpp | 40 +- lldb/source/Target/ThreadPlan.cpp | 4 +- lldb/source/Target/ThreadPlanStack.cpp | 6 +- lldb/source/Target/ThreadPlanStepRange.cpp | 1 - .../TestOSPluginStepping.py | 3 + .../source-map/TestTargetSourceMap.py | 70 +- .../thread_plan/TestThreadPlanCommands.py | 10 +- lldb/tools/intel-features/intel-mpx/test/main.cpp | 9 - llvm/cmake/modules/AddLLVM.cmake | 10 +- llvm/docs/Phabricator.rst | 6 +- llvm/include/llvm/Analysis/IVDescriptors.h | 3 +- llvm/include/llvm/IR/IRBuilder.h | 346 +----- llvm/include/llvm/Object/ELFObjectFile.h | 8 +- llvm/include/llvm/Transforms/Scalar/Reassociate.h | 4 +- llvm/include/llvm/Transforms/Utils/LoopUtils.h | 1 - llvm/include/llvm/Transforms/Utils/VNCoercion.h | 5 +- llvm/lib/Analysis/IVDescriptors.cpp | 1 + llvm/lib/CodeGen/WasmEHPrepare.cpp | 165 ++- llvm/lib/IR/IRBuilder.cpp | 376 +++++++ llvm/lib/Target/X86/CMakeLists.txt | 1 - llvm/lib/Target/X86/ImmutableGraph.h | 432 ------- llvm/lib/Target/X86/X86.h | 2 - llvm/lib/Target/X86/X86.td | 7 - llvm/lib/Target/X86/X86ISelLowering.cpp | 23 + .../X86/X86LoadValueInjectionLoadHardening.cpp | 858 -------------- llvm/lib/Target/X86/X86Subtarget.h | 5 - llvm/lib/Target/X86/X86TargetMachine.cpp | 2 - llvm/lib/Transforms/IPO/Attributor.cpp | 76 ++ .../Transforms/InstCombine/InstCombineInternal.h | 9 +- llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp | 1 + llvm/lib/Transforms/Scalar/Reassociate.cpp | 4 +- llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp | 1 + llvm/lib/Transforms/Utils/VNCoercion.cpp | 3 +- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 21 +- llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h | 10 +- .../Analysis/CostModel/X86/shuffle-broadcast.ll | 44 +- .../CostModel/X86/shuffle-insert_subvector.ll | 1188 +++++++++++++++++++- .../test/Analysis/CostModel/X86/shuffle-reverse.ll | 54 +- .../Analysis/CostModel/X86/shuffle-single-src.ll | 77 +- .../Analysis/CostModel/X86/shuffle-transpose.ll | 54 +- .../test/Analysis/CostModel/X86/shuffle-two-src.ll | 77 +- llvm/test/Analysis/CostModel/X86/vector-extract.ll | 155 +++ llvm/test/Analysis/CostModel/X86/vector-insert.ll | 125 ++ llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll | 2 +- .../test/CodeGen/AMDGPU/insert_vector_elt.v2i16.ll | 2 +- .../insert_vector_elt.v2i16.subtest-saddr.ll | 2 +- llvm/test/CodeGen/AMDGPU/pack.v2f16.ll | 2 +- llvm/test/CodeGen/AMDGPU/pack.v2i16.ll | 2 +- .../CodeGen/PowerPC/canonical-merge-shuffles.ll | 243 ++++ llvm/test/CodeGen/WebAssembly/wasmehprepare.ll | 224 +++- llvm/test/CodeGen/X86/O0-pipeline.ll | 4 - llvm/test/CodeGen/X86/O3-pipeline.ll | 4 +- llvm/test/CodeGen/X86/cast-vsel.ll | 32 +- .../test/CodeGen/X86/lvi-hardening-gadget-graph.ll | 129 --- llvm/test/CodeGen/X86/lvi-hardening-loads.ll | 102 -- llvm/test/CodeGen/X86/masked_store_trunc.ll | 38 +- llvm/test/CodeGen/X86/masked_store_trunc_ssat.ll | 51 +- llvm/test/CodeGen/X86/masked_store_trunc_usat.ll | 63 +- llvm/test/CodeGen/X86/phaddsub.ll | 8 +- llvm/test/CodeGen/X86/psubus.ll | 24 +- llvm/test/CodeGen/X86/shuffle-vs-trunc-256.ll | 231 ++-- llvm/test/CodeGen/X86/shuffle-vs-trunc-512.ll | 67 +- llvm/test/CodeGen/X86/vector-reduce-and-bool.ll | 8 +- llvm/test/CodeGen/X86/vector-reduce-or-bool.ll | 8 +- llvm/test/CodeGen/X86/vector-reduce-xor-bool.ll | 8 +- llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll | 92 +- llvm/test/CodeGen/X86/vector-trunc-packus.ll | 160 +-- llvm/test/CodeGen/X86/vector-trunc-ssat.ll | 162 ++- llvm/test/CodeGen/X86/vector-trunc-usat.ll | 174 ++- llvm/test/CodeGen/X86/vector-trunc.ll | 141 +-- llvm/test/CodeGen/X86/vectorcall.ll | 142 ++- llvm/test/Transforms/Attributor/wrapper.ll | 88 ++ llvm/test/Transforms/InstCombine/max-of-nots.ll | 99 ++ llvm/test/tools/llvm-nm/dynamic.test | 62 + llvm/tools/llvm-stress/llvm-stress.cpp | 4 +- llvm/unittests/Analysis/ValueTrackingTest.cpp | 48 + .../gn/secondary/llvm/lib/Target/X86/BUILD.gn | 1 - mlir/examples/standalone/CMakeLists.txt | 44 + mlir/examples/standalone/README.md | 18 + mlir/examples/standalone/include/CMakeLists.txt | 1 + .../standalone/include/Standalone/CMakeLists.txt | 3 + .../include/Standalone/StandaloneDialect.h | 22 + .../include/Standalone/StandaloneDialect.td | 36 + .../standalone/include/Standalone/StandaloneOps.h | 25 + .../standalone/include/Standalone/StandaloneOps.td | 42 + mlir/examples/standalone/lib/CMakeLists.txt | 1 + .../standalone/lib/Standalone/CMakeLists.txt | 12 + .../lib/Standalone/StandaloneDialect.cpp | 25 + .../standalone/lib/Standalone/StandaloneOps.cpp | 18 + .../standalone/standalone-opt/CMakeLists.txt | 13 + .../standalone/standalone-opt/standalone-opt.cpp | 97 ++ mlir/examples/standalone/test/CMakeLists.txt | 19 + .../examples/standalone/test/Standalone/dummy.mlir | 11 + mlir/examples/standalone/test/lit.cfg.py | 60 + mlir/examples/standalone/test/lit.site.cfg.py.in | 49 + mlir/examples/toy/Ch2/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch3/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch4/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch4/mlir/ShapeInferencePass.cpp | 10 +- mlir/examples/toy/Ch5/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch5/mlir/ShapeInferencePass.cpp | 10 +- mlir/examples/toy/Ch6/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch6/mlir/ShapeInferencePass.cpp | 10 +- mlir/examples/toy/Ch7/mlir/MLIRGen.cpp | 8 +- mlir/examples/toy/Ch7/mlir/ShapeInferencePass.cpp | 10 +- .../mlir/Dialect/Affine/IR/AffineOpsBase.td | 1 + mlir/include/mlir/IR/MLIRContext.h | 16 + mlir/include/mlir/IR/OpBase.td | 17 +- mlir/lib/IR/Diagnostics.cpp | 11 +- mlir/lib/IR/MLIRContext.cpp | 52 +- mlir/lib/IR/Operation.cpp | 12 +- mlir/lib/Support/MlirOptMain.cpp | 1 + mlir/test/IR/attribute.mlir | 2 +- mlir/test/lib/Dialect/Test/TestOps.td | 11 +- mlir/test/mlir-tblgen/op-format-spec.td | 17 +- mlir/tools/mlir-tblgen/OpFormatGen.cpp | 195 +++- mlir/tools/mlir-translate/mlir-translate.cpp | 1 + openmp/CMakeLists.txt | 2 +- openmp/libomptarget/deviceRTLs/common/debug.h | 2 +- openmp/libomptarget/deviceRTLs/common/omptarget.h | 4 +- openmp/libomptarget/deviceRTLs/common/omptargeti.h | 8 +- .../libomptarget/deviceRTLs/common/src/libcall.cu | 2 +- openmp/libomptarget/deviceRTLs/common/src/loop.cu | 2 +- openmp/libomptarget/deviceRTLs/common/src/sync.cu | 2 +- openmp/libomptarget/deviceRTLs/interface.h | 2 +- .../deviceRTLs/nvptx/docs/ReductionDesign.txt | 2 +- .../deviceRTLs/nvptx/test/parallel/level.c | 2 +- openmp/libomptarget/src/interface.cpp | 2 +- openmp/runtime/cmake/LibompMicroTests.cmake | 2 +- openmp/runtime/src/CMakeLists.txt | 2 +- openmp/runtime/src/i18n/en_US.txt | 2 +- openmp/runtime/src/kmp.h | 8 +- openmp/runtime/src/kmp_affinity.cpp | 18 +- openmp/runtime/src/kmp_alloc.cpp | 8 +- openmp/runtime/src/kmp_csupport.cpp | 2 +- openmp/runtime/src/kmp_dispatch.cpp | 14 +- openmp/runtime/src/kmp_dispatch_hier.h | 2 +- openmp/runtime/src/kmp_environment.h | 2 +- openmp/runtime/src/kmp_gsupport.cpp | 4 +- openmp/runtime/src/kmp_i18n.cpp | 2 +- openmp/runtime/src/kmp_i18n.h | 2 +- openmp/runtime/src/kmp_lock.cpp | 2 +- openmp/runtime/src/kmp_lock.h | 10 +- openmp/runtime/src/kmp_omp.h | 2 +- openmp/runtime/src/kmp_runtime.cpp | 12 +- openmp/runtime/src/kmp_sched.cpp | 2 +- openmp/runtime/src/kmp_settings.cpp | 8 +- openmp/runtime/src/kmp_stats.cpp | 4 +- openmp/runtime/src/kmp_stats.h | 6 +- openmp/runtime/src/kmp_str.h | 4 +- openmp/runtime/src/kmp_stub.cpp | 2 +- openmp/runtime/src/kmp_taskdeps.cpp | 8 +- openmp/runtime/src/kmp_tasking.cpp | 12 +- openmp/runtime/src/kmp_utility.cpp | 2 +- openmp/runtime/src/kmp_wrapper_malloc.h | 8 +- openmp/runtime/src/ompt-specific.h | 2 +- .../runtime/src/thirdparty/ittnotify/ittnotify.h | 4 +- .../src/thirdparty/ittnotify/ittnotify_static.cpp | 4 +- openmp/runtime/src/z_Linux_util.cpp | 2 +- openmp/runtime/test/lock/omp_init_lock.c | 2 +- .../synchronization/barrier/implicit_task_data.c | 2 +- .../tasking/kmp_task_modifier_simple_par_new.cpp | 2 +- .../tasking/kmp_task_modifier_simple_par_old.cpp | 2 +- .../tasking/kmp_task_modifier_simple_ws_new.cpp | 2 +- .../tasking/kmp_task_modifier_simple_ws_old.cpp | 2 +- .../worksharing/for/omp_for_schedule_static_3.c | 2 +- openmp/runtime/tools/check-depends.pl | 2 +- openmp/runtime/tools/check-execstack.pl | 2 +- openmp/runtime/tools/check-instruction-set.pl | 2 +- openmp/runtime/tools/generate-def.pl | 6 +- openmp/runtime/tools/lib/Platform.pm | 6 +- openmp/runtime/tools/lib/tools.pm | 12 +- openmp/tools/archer/README.md | 2 +- openmp/tools/archer/ompt-tsan.cpp | 2 +- polly/include/polly/CodeGen/LoopGenerators.h | 2 +- polly/include/polly/CodeGen/LoopGeneratorsGOMP.h | 2 +- polly/include/polly/CodeGen/LoopGeneratorsKMP.h | 2 +- polly/lib/CodeGen/LoopGeneratorsGOMP.cpp | 2 +- polly/lib/CodeGen/LoopGeneratorsKMP.cpp | 2 +- .../lib/Transform/RewriteByReferenceParameters.cpp | 6 +- 241 files changed, 5546 insertions(+), 3413 deletions(-) create mode 100644 clang/test/Driver/darwin-opt-record-ld.c create mode 100644 clang/test/Modules/Inputs/ms-enums/A.h copy clang/test/Modules/Inputs/{pch-with-module-name/test.h => ms-enums/B.h} (100%) create mode 100644 clang/test/Modules/Inputs/ms-enums/module.map create mode 100644 clang/test/Modules/ms-enums.cpp create mode 100644 lld/test/ELF/ppc64-long-branch-rel14.s delete mode 100644 llvm/lib/Target/X86/ImmutableGraph.h delete mode 100644 llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp create mode 100644 llvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll delete mode 100644 llvm/test/CodeGen/X86/lvi-hardening-gadget-graph.ll delete mode 100644 llvm/test/CodeGen/X86/lvi-hardening-loads.ll create mode 100644 llvm/test/Transforms/Attributor/wrapper.ll create mode 100644 llvm/test/tools/llvm-nm/dynamic.test create mode 100644 mlir/examples/standalone/CMakeLists.txt create mode 100644 mlir/examples/standalone/README.md create mode 100644 mlir/examples/standalone/include/CMakeLists.txt create mode 100644 mlir/examples/standalone/include/Standalone/CMakeLists.txt create mode 100644 mlir/examples/standalone/include/Standalone/StandaloneDialect.h create mode 100644 mlir/examples/standalone/include/Standalone/StandaloneDialect.td create mode 100644 mlir/examples/standalone/include/Standalone/StandaloneOps.h create mode 100644 mlir/examples/standalone/include/Standalone/StandaloneOps.td create mode 100644 mlir/examples/standalone/lib/CMakeLists.txt create mode 100644 mlir/examples/standalone/lib/Standalone/CMakeLists.txt create mode 100644 mlir/examples/standalone/lib/Standalone/StandaloneDialect.cpp create mode 100644 mlir/examples/standalone/lib/Standalone/StandaloneOps.cpp create mode 100644 mlir/examples/standalone/standalone-opt/CMakeLists.txt create mode 100644 mlir/examples/standalone/standalone-opt/standalone-opt.cpp create mode 100644 mlir/examples/standalone/test/CMakeLists.txt create mode 100644 mlir/examples/standalone/test/Standalone/dummy.mlir create mode 100644 mlir/examples/standalone/test/lit.cfg.py create mode 100644 mlir/examples/standalone/test/lit.site.cfg.py.in