@@ -41,25 +41,20 @@ ifeq ($(OS),FreeBSD)
4141FLAGS += -I$(LOCALBASE ) /include
4242endif
4343
44- RUNTIME_SRCS := \
44+ SRCS := \
4545 jltypes gf typemap smallintset ast builtins module interpreter symbol \
4646 dlload sys init task array dump staticdata toplevel jl_uv datatype \
47- simplevector runtime_intrinsics precompile \
47+ simplevector runtime_intrinsics precompile jloptions \
4848 threading partr stackwalk gc gc-debug gc-pages gc-stacks gc-alloc-profiler method \
49- jlapi signal-handling safepoint timing subtype \
50- crc32c APInt-C processor ircode opaque_closure codegen-stubs coverage
51- SRCS := jloptions runtime_ccall rtutils
52- ifeq ($(OS ) ,WINNT)
53- SRCS += win32_ucontext
54- endif
49+ jlapi signal-handling safepoint timing subtype rtutils \
50+ crc32c APInt-C processor ircode opaque_closure codegen-stubs coverage runtime_ccall
5551
5652RT_LLVMLINK :=
5753CG_LLVMLINK :=
5854
5955ifeq ($(JULIACODEGEN ) ,LLVM)
60- CODEGEN_SRCS := codegen llvm-ptls
61- RUNTIME_CODEGEN_SRCS := jitlayers aotcompile debuginfo disasm llvm-simdloop llvm-muladd \
62- llvm-final-gc-lowering llvm-pass-helpers llvm-late-gc-lowering \
56+ CODEGEN_SRCS := codegen jitlayers aotcompile debuginfo disasm llvm-simdloop llvm-muladd \
57+ llvm-final-gc-lowering llvm-pass-helpers llvm-late-gc-lowering llvm-ptls \
6358 llvm-lower-handlers llvm-gc-invariant-verifier llvm-propagate-addrspaces \
6459 llvm-multiversioning llvm-alloc-opt llvm-alloc-helpers cgmemmgr llvm-remove-addrspaces \
6560 llvm-remove-ni llvm-julia-licm llvm-demote-float16 llvm-cpufeatures
8580
8681RT_LLVM_LIBS := support
8782
88- SRCS += $( RUNTIME_SRCS )
89-
90- CODEGEN_SRCS += $( RUNTIME_CODEGEN_SRCS )
83+ ifeq ( $( OS ) ,WINNT )
84+ SRCS += win32_ucontext
85+ endif
9186
9287ifeq ($(WITH_DTRACE ) ,1)
9388DTRACE_HEADERS := uprobes.h.gen
@@ -438,53 +433,55 @@ endif
438433
439434clangsa : $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT )
440435clangsa : $(build_shlibdir ) /libImplicitAtomicsPlugin.$(SHLIB_EXT )
441- # TODO: clangsa: $(build_shlibdir)/libImplicitAtomics2Plugin.$(SHLIB_EXT)
436+
437+ # optarg is a required_argument for these
438+ SA_EXCEPTIONS-jloptions.c := -Xanalyzer -analyzer-config -Xanalyzer silence-checkers="core.NonNullParamChecker;unix.cstring.NullArg"
439+ # clang doesn't understand that e->vars has the same value in save_env (NULL) and restore_env (assumed non-NULL)
440+ SA_EXCEPTIONS-subtype.c := -Xanalyzer -analyzer-config -Xanalyzer silence-checkers="core.uninitialized.Assign;core.UndefinedBinaryOperatorResult"
441+ SA_EXCEPTIONS-codegen.c := -Xanalyzer -analyzer-config -Xanalyzer silence-checkers="core"
442+ # these need to be annotated (and possibly fixed)
443+ SKIP_IMPLICIT_ATOMICS := dump.c module.c staticdata.c codegen.cpp
444+ # these need to be annotated (and possibly fixed)
445+ SKIP_GC_CHECK := codegen.cpp rtutils.c
442446
443447clang-sagc-% : $(SRCDIR ) /% .c $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
444448 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang -D__clang_gcanalyzer__ --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text --analyzer-no-default-checks \
445449 -Xclang -load -Xclang $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT ) -Xclang -analyzer-checker=core$(COMMA ) julia.GCChecker \
450+ $(SA_EXCEPTIONS-$(notdir $< ) ) \
446451 $(CLANGSA_FLAGS ) $(JCPPFLAGS ) $(JCFLAGS ) $(JL_CFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics -x c $< )
447452clang-sagc-% : $(SRCDIR ) /% .cpp $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
448453 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang -D__clang_gcanalyzer__ --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text --analyzer-no-default-checks \
449454 -Xclang -load -Xclang $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT ) -Xclang -analyzer-checker=core$(COMMA ) julia.GCChecker \
455+ $(SA_EXCEPTIONS-$(notdir $< ) ) \
450456 $(CLANGSA_FLAGS ) $(CLANGSA_CXXFLAGS ) $(LLVM_CXXFLAGS ) $(JCPPFLAGS ) $(JCXXFLAGS ) $(JL_CXXFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics -x c++ $< )
451457
452- # optarg is a required_argument for these
453- SA_EXCEPTIONS-jloptions.c := -Xanalyzer -analyzer-disable-checker=core.NonNullParamChecker,unix.cstring.NullArg
454- # clang doesn't understand that e->vars has the same value in save_env (NULL) and restore_env (assumed non-NULL)
455- SA_EXCEPTIONS-subtype.c := -Xanalyzer -analyzer-disable-checker=core.uninitialized.Assign,core.UndefinedBinaryOperatorResult
456- # these need to be annotated (and possibly fixed)
457- SKIP_IMPLICIT_ATOMICS := dump.c gf.c jitlayers.cpp module.c precompile.c rtutils.c staticdata.c toplevel.c codegen.cpp
458-
459- clang-sa-% : $(SRCDIR ) /% .c $(build_shlibdir ) /libImplicitAtomicsPlugin.$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
458+ clang-sa-% : $(SRCDIR ) /% .c .FORCE | analyzegc-deps-check
460459 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text \
461- $(if $(findstring $(notdir $< ) ,$(SKIP_IMPLICIT_ATOMICS ) ) ,,-Xclang -load -Xclang $(build_shlibdir ) /libImplicitAtomicsPlugin.$(SHLIB_EXT ) -Xclang -analyzer-checker=julia.ImplicitAtomics) \
462460 -Xanalyzer -analyzer-disable-checker=deadcode.DeadStores \
463- --analyzer-no-default-checks \
464461 $(SA_EXCEPTIONS-$(notdir $< ) ) \
465462 $(CLANGSA_FLAGS ) $(JCPPFLAGS ) $(JCFLAGS ) $(JL_CFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics -Werror -x c $< )
466- clang-sa-% : $(SRCDIR ) /% .cpp $( build_shlibdir ) /libImplicitAtomicsPlugin. $( SHLIB_EXT ) .FORCE | analyzegc-deps-check
463+ clang-sa-% : $(SRCDIR ) /% .cpp .FORCE | analyzegc-deps-check
467464 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text \
468- $(if $(findstring $(notdir $< ) ,$(SKIP_IMPLICIT_ATOMICS ) ) ,,-Xclang -load -Xclang $(build_shlibdir ) /libImplicitAtomicsPlugin.$(SHLIB_EXT ) -Xclang -analyzer-checker=julia.ImplicitAtomics) \
469465 -Xanalyzer -analyzer-disable-checker=deadcode.DeadStores \
470- --analyzer-no-default-checks \
471466 $(SA_EXCEPTIONS-$(notdir $< ) ) \
472467 $(CLANGSA_FLAGS ) $(CLANGSA_CXXFLAGS ) $(LLVM_CXXFLAGS ) $(JCPPFLAGS ) $(JCXXFLAGS ) $(JL_CXXFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics -Werror -x c++ $< )
473468
474- clang-tidy-% : $(SRCDIR ) /% .c $(build_shlibdir ) /libImplicitAtomics2Plugin .$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
469+ clang-tidy-% : $(SRCDIR ) /% .c $(build_shlibdir ) /libImplicitAtomicsPlugin .$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
475470 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang-tidy $< -header-filter='.* ' --quiet \
476- -load $(build_shlibdir ) /libImplicitAtomics2Plugin .$(SHLIB_EXT ) --checks=' -clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors=' *' \
471+ -load $(build_shlibdir ) /libImplicitAtomicsPlugin .$(SHLIB_EXT ) --checks=' -clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors=' *' \
477472 -- $(CLANGSA_FLAGS ) $(JCPPFLAGS ) $(JCFLAGS ) $(JL_CFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics -fno-caret-diagnostics -x c)
478- clang-tidy-% : $(SRCDIR ) /% .cpp $(build_shlibdir ) /libImplicitAtomics2Plugin .$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
473+ clang-tidy-% : $(SRCDIR ) /% .cpp $(build_shlibdir ) /libImplicitAtomicsPlugin .$(SHLIB_EXT ) .FORCE | analyzegc-deps-check
479474 @$(call PRINT_ANALYZE, $(build_depsbindir ) /clang-tidy $< -header-filter='.* ' --quiet \
480- -load $(build_shlibdir ) /libImplicitAtomics2Plugin .$(SHLIB_EXT ) --checks=' -clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors=' *' \
475+ -load $(build_shlibdir ) /libImplicitAtomicsPlugin .$(SHLIB_EXT ) --checks=' -clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors=' *' \
481476 -- $(CLANGSA_FLAGS ) $(CLANGSA_CXXFLAGS ) $(LLVM_CXXFLAGS ) $(JCPPFLAGS ) $(JCXXFLAGS ) $(JL_CXXFLAGS ) $(DEBUGFLAGS ) -fcolor-diagnostics --system-header-prefix=llvm -Wno-deprecated-declarations -fno-caret-diagnostics -x c++)
482477
483478
484479# Add C files as a target of `analyzesrc` and `analyzegc` and `tidysrc`
485- tidysrc : $(addprefix clang-tidy-,$(filter-out $(basename $(SKIP_IMPLICIT_ATOMICS ) ) , $(SRCS ) ) )
486- analyzesrc : $(addprefix clang-sa-,$(SRCS ) )
487- analyzegc : analyzesrc $(addprefix clang-sagc-,$(RUNTIME_SRCS ) )
480+ tidysrc : $(addprefix clang-tidy-,$(filter-out $(basename $(SKIP_IMPLICIT_ATOMICS ) ) ,$(CODEGEN_SRCS ) $(SRCS ) ) )
481+ analyzesrc : $(addprefix clang-sa-,$(CODEGEN_SRCS ) $(SRCS ) )
482+ analyzegc : $(addprefix clang-sagc-,$(filter-out $(basename $(SKIP_GC_CHECK ) ) ,$(CODEGEN_SRCS ) $(SRCS ) ) )
483+ analyzegc : analyzesrc tidysrc # TODO: remove me (depended on by CI currently)
484+ analyze : analyzesrc analyzegc tidysrc
488485
489486clean-analyzegc :
490487 rm -f $(build_shlibdir ) /libGCCheckerPlugin.$(SHLIB_EXT )
0 commit comments