Skip to content
Snippets Groups Projects
Commit 38ed544f authored by Mathieu Courtois's avatar Mathieu Courtois
Browse files

Merge branch 'mc/array-on-stack' into 'main'

[#34412] detect message on large arrays on stack

See merge request codeaster/devtools!50
parents 99dca37a d0adca44
No related branches found
No related tags found
No related merge requests found
...@@ -41,12 +41,7 @@ def check_command_line(kwargs): ...@@ -41,12 +41,7 @@ def check_command_line(kwargs):
] ]
+ sizeopts + sizeopts
+ kwargs["flags"] + kwargs["flags"]
+ [ + ["-c", kwargs["source"], "-o", kwargs["object"]]
"-c",
kwargs["source"],
"-o",
kwargs["object"],
]
) )
return cmd return cmd
...@@ -83,7 +78,6 @@ def search_loc_msg(expr): ...@@ -83,7 +78,6 @@ def search_loc_msg(expr):
class SentinelLocError(CompilOutputCat, CompilMsg): class SentinelLocError(CompilOutputCat, CompilMsg):
"""Error""" """Error"""
id = "E9990" id = "E9990"
...@@ -94,7 +88,6 @@ class SentinelLocError(CompilOutputCat, CompilMsg): ...@@ -94,7 +88,6 @@ class SentinelLocError(CompilOutputCat, CompilMsg):
class SentinelError(CompilOutputCat, CompilMsg): class SentinelError(CompilOutputCat, CompilMsg):
"""Error""" """Error"""
id = "E9991" id = "E9991"
...@@ -103,7 +96,6 @@ class SentinelError(CompilOutputCat, CompilMsg): ...@@ -103,7 +96,6 @@ class SentinelError(CompilOutputCat, CompilMsg):
class SentinelLocWarning(CompilOutputCat, CompilMsg): class SentinelLocWarning(CompilOutputCat, CompilMsg):
"""Unexpected warning""" """Unexpected warning"""
id = "C9992" id = "C9992"
...@@ -114,7 +106,6 @@ class SentinelLocWarning(CompilOutputCat, CompilMsg): ...@@ -114,7 +106,6 @@ class SentinelLocWarning(CompilOutputCat, CompilMsg):
class SentinelWarning(CompilOutputCat, CompilMsg): class SentinelWarning(CompilOutputCat, CompilMsg):
"""Warning""" """Warning"""
id = "W9993" id = "W9993"
...@@ -126,7 +117,6 @@ class SentinelWarning(CompilOutputCat, CompilMsg): ...@@ -126,7 +117,6 @@ class SentinelWarning(CompilOutputCat, CompilMsg):
class UnclassifiableStatement(CompilOutputCat, CompilMsg): class UnclassifiableStatement(CompilOutputCat, CompilMsg):
"""Unclassifiable statement""" """Unclassifiable statement"""
id = "E0001" id = "E0001"
...@@ -135,7 +125,6 @@ class UnclassifiableStatement(CompilOutputCat, CompilMsg): ...@@ -135,7 +125,6 @@ class UnclassifiableStatement(CompilOutputCat, CompilMsg):
class InvalidCharacter(CompilOutputCat, CompilMsg): class InvalidCharacter(CompilOutputCat, CompilMsg):
"""Invalid character""" """Invalid character"""
id = "E0002" id = "E0002"
...@@ -144,7 +133,6 @@ class InvalidCharacter(CompilOutputCat, CompilMsg): ...@@ -144,7 +133,6 @@ class InvalidCharacter(CompilOutputCat, CompilMsg):
class InvalidUnit(CompilOutputCat, CompilMsg): class InvalidUnit(CompilOutputCat, CompilMsg):
"""Invalid unit""" """Invalid unit"""
id = "E0003" id = "E0003"
...@@ -153,7 +141,6 @@ class InvalidUnit(CompilOutputCat, CompilMsg): ...@@ -153,7 +141,6 @@ class InvalidUnit(CompilOutputCat, CompilMsg):
class LineTruncated(CompilOutputCat, CompilMsg): class LineTruncated(CompilOutputCat, CompilMsg):
"""Line truncated""" """Line truncated"""
id = "C0004" id = "C0004"
...@@ -162,7 +149,6 @@ class LineTruncated(CompilOutputCat, CompilMsg): ...@@ -162,7 +149,6 @@ class LineTruncated(CompilOutputCat, CompilMsg):
class XDescriptor(CompilOutputCat, CompilMsg): class XDescriptor(CompilOutputCat, CompilMsg):
"""Invalid X descriptor""" """Invalid X descriptor"""
id = "C0005" id = "C0005"
...@@ -171,7 +157,6 @@ class XDescriptor(CompilOutputCat, CompilMsg): ...@@ -171,7 +157,6 @@ class XDescriptor(CompilOutputCat, CompilMsg):
class InvalidStatement(CompilOutputCat, CompilMsg): class InvalidStatement(CompilOutputCat, CompilMsg):
"""Invalid form of statement""" """Invalid form of statement"""
id = "E0006" id = "E0006"
...@@ -180,7 +165,6 @@ class InvalidStatement(CompilOutputCat, CompilMsg): ...@@ -180,7 +165,6 @@ class InvalidStatement(CompilOutputCat, CompilMsg):
class ContinousMarkerMissing(CompilOutputCat, CompilMsg): class ContinousMarkerMissing(CompilOutputCat, CompilMsg):
"""Missing continous character '&'""" """Missing continous character '&'"""
id = "W0007" id = "W0007"
...@@ -192,7 +176,6 @@ class ContinousMarkerMissing(CompilOutputCat, CompilMsg): ...@@ -192,7 +176,6 @@ class ContinousMarkerMissing(CompilOutputCat, CompilMsg):
class TypeMismatch(CompilOutputCat, CompilMsg): class TypeMismatch(CompilOutputCat, CompilMsg):
"""Type mismatch""" """Type mismatch"""
id = "E0101" id = "E0101"
...@@ -203,7 +186,6 @@ class TypeMismatch(CompilOutputCat, CompilMsg): ...@@ -203,7 +186,6 @@ class TypeMismatch(CompilOutputCat, CompilMsg):
class RankMismatch(CompilOutputCat, CompilMsg): class RankMismatch(CompilOutputCat, CompilMsg):
"""Rank mismatch""" """Rank mismatch"""
id = "E0103" id = "E0103"
...@@ -229,7 +211,6 @@ class RankMismatch(CompilOutputCat, CompilMsg): ...@@ -229,7 +211,6 @@ class RankMismatch(CompilOutputCat, CompilMsg):
class DummyArgument(CompilOutputCat, CompilMsg): class DummyArgument(CompilOutputCat, CompilMsg):
"""Dummy argument""" """Dummy argument"""
id = "W0104" id = "W0104"
...@@ -252,7 +233,6 @@ class DummyArgument(CompilOutputCat, CompilMsg): ...@@ -252,7 +233,6 @@ class DummyArgument(CompilOutputCat, CompilMsg):
class TooFewElements(CompilOutputCat, CompilMsg): class TooFewElements(CompilOutputCat, CompilMsg):
"""Too few elements in argument""" """Too few elements in argument"""
id = "E0105" id = "E0105"
...@@ -265,7 +245,6 @@ class TooFewElements(CompilOutputCat, CompilMsg): ...@@ -265,7 +245,6 @@ class TooFewElements(CompilOutputCat, CompilMsg):
class TooManyArgs(CompilOutputCat, CompilMsg): class TooManyArgs(CompilOutputCat, CompilMsg):
"""Too many arguments""" """Too many arguments"""
id = "E0106" id = "E0106"
...@@ -274,18 +253,14 @@ class TooManyArgs(CompilOutputCat, CompilMsg): ...@@ -274,18 +253,14 @@ class TooManyArgs(CompilOutputCat, CompilMsg):
class NotEnoughArgs(CompilOutputCat, CompilMsg): class NotEnoughArgs(CompilOutputCat, CompilMsg):
"""Not enough arguments""" """Not enough arguments"""
id = "E0107" id = "E0107"
fmt = "%(id)s: %(label)s at %(line)s,%(col)s: call to %(elt)r, " "missing %(arg)r" fmt = "%(id)s: %(label)s at %(line)s,%(col)s: call to %(elt)r, " "missing %(arg)r"
search = search_loc_msg( search = search_loc_msg("Missing actual argument '(?P<arg>.*?)' in call to '(?P<elt>.*?)' at")
"Missing actual argument '(?P<arg>.*?)' " "in call to '(?P<elt>.*?)' at"
)
class UninitializedVariable(CompilOutputCat, CompilMsg): class UninitializedVariable(CompilOutputCat, CompilMsg):
"""Uninitialized variable""" """Uninitialized variable"""
id = "C0108" id = "C0108"
...@@ -294,7 +269,6 @@ class UninitializedVariable(CompilOutputCat, CompilMsg): ...@@ -294,7 +269,6 @@ class UninitializedVariable(CompilOutputCat, CompilMsg):
class MaybeUninitializedVariable(CompilOutputCat, CompilMsg): class MaybeUninitializedVariable(CompilOutputCat, CompilMsg):
"""Maybe uninitialized variable""" """Maybe uninitialized variable"""
id = "C0109" id = "C0109"
...@@ -302,11 +276,20 @@ class MaybeUninitializedVariable(CompilOutputCat, CompilMsg): ...@@ -302,11 +276,20 @@ class MaybeUninitializedVariable(CompilOutputCat, CompilMsg):
search = search_loc_msg(".*?(?P<arg>\w+).*? may be used uninitialized") search = search_loc_msg(".*?(?P<arg>\w+).*? may be used uninitialized")
class TooLargeArraysOnStack(CompilOutputCat, CompilMsg):
"""Array is larger than limit on stack"""
id = "C0110"
fmt = "%(id)s: %(label)s at %(line)s,%(col)s: %(arg)r"
search = search_loc_msg(
"Array '(?P<arg>.*?)' at .* is larger than limit set by .*\-fmax\-stack\-var\-size"
)
# types errors # types errors
class PossibleChangeConversion(CompilOutputCat, CompilMsg): class PossibleChangeConversion(CompilOutputCat, CompilMsg):
"""Possible change of value in conversion""" """Possible change of value in conversion"""
id = "W0202" id = "W0202"
...@@ -315,7 +298,6 @@ class PossibleChangeConversion(CompilOutputCat, CompilMsg): ...@@ -315,7 +298,6 @@ class PossibleChangeConversion(CompilOutputCat, CompilMsg):
class ImplicitType(CompilOutputCat, CompilMsg): class ImplicitType(CompilOutputCat, CompilMsg):
"""No implicit type""" """No implicit type"""
id = "E0203" id = "E0203"
...@@ -324,7 +306,6 @@ class ImplicitType(CompilOutputCat, CompilMsg): ...@@ -324,7 +306,6 @@ class ImplicitType(CompilOutputCat, CompilMsg):
class OperandsInComparison(CompilOutputCat, CompilMsg): class OperandsInComparison(CompilOutputCat, CompilMsg):
"""Operands of comparison operator mismatch""" """Operands of comparison operator mismatch"""
id = "W0204" id = "W0204"
...@@ -335,7 +316,6 @@ class OperandsInComparison(CompilOutputCat, CompilMsg): ...@@ -335,7 +316,6 @@ class OperandsInComparison(CompilOutputCat, CompilMsg):
class SameArgInOut(CompilOutputCat, CompilMsg): class SameArgInOut(CompilOutputCat, CompilMsg):
"""Same variable used for IN and OUT argument """Same variable used for IN and OUT argument
The same variable is used for an input and an output argument.""" The same variable is used for an input and an output argument."""
...@@ -348,7 +328,6 @@ class SameArgInOut(CompilOutputCat, CompilMsg): ...@@ -348,7 +328,6 @@ class SameArgInOut(CompilOutputCat, CompilMsg):
class Misalignment(CompilOutputCat, CompilMsg): class Misalignment(CompilOutputCat, CompilMsg):
"""Problem of alignment of variables""" """Problem of alignment of variables"""
id = "W0206" id = "W0206"
...@@ -360,7 +339,6 @@ class Misalignment(CompilOutputCat, CompilMsg): ...@@ -360,7 +339,6 @@ class Misalignment(CompilOutputCat, CompilMsg):
class ArrayOutOfBounds(CompilOutputCat, CompilMsg): class ArrayOutOfBounds(CompilOutputCat, CompilMsg):
"""Array accessed out of its bounds""" """Array accessed out of its bounds"""
id = "C0207" id = "C0207"
...@@ -374,7 +352,6 @@ class ArrayOutOfBounds(CompilOutputCat, CompilMsg): ...@@ -374,7 +352,6 @@ class ArrayOutOfBounds(CompilOutputCat, CompilMsg):
class DuplicateExternal(CompilOutputCat, CompilMsg): class DuplicateExternal(CompilOutputCat, CompilMsg):
"""Duplicate external declaration""" """Duplicate external declaration"""
id = "E0301" id = "E0301"
...@@ -385,7 +362,6 @@ class DuplicateExternal(CompilOutputCat, CompilMsg): ...@@ -385,7 +362,6 @@ class DuplicateExternal(CompilOutputCat, CompilMsg):
class UnusedVar(CompilOutputCat, CompilMsg): class UnusedVar(CompilOutputCat, CompilMsg):
"""Unused variable""" """Unused variable"""
id = "W0302" id = "W0302"
...@@ -394,7 +370,6 @@ class UnusedVar(CompilOutputCat, CompilMsg): ...@@ -394,7 +370,6 @@ class UnusedVar(CompilOutputCat, CompilMsg):
class UnusedParam(CompilOutputCat, CompilMsg): class UnusedParam(CompilOutputCat, CompilMsg):
"""Unused parameter""" """Unused parameter"""
id = "C0303" id = "C0303"
...@@ -403,7 +378,6 @@ class UnusedParam(CompilOutputCat, CompilMsg): ...@@ -403,7 +378,6 @@ class UnusedParam(CompilOutputCat, CompilMsg):
class UnusedLabel(CompilOutputCat, CompilMsg): class UnusedLabel(CompilOutputCat, CompilMsg):
"""Unused label""" """Unused label"""
id = "C0304" id = "C0304"
...@@ -412,7 +386,6 @@ class UnusedLabel(CompilOutputCat, CompilMsg): ...@@ -412,7 +386,6 @@ class UnusedLabel(CompilOutputCat, CompilMsg):
class UsedBeforeTyped(CompilOutputCat, CompilMsg): class UsedBeforeTyped(CompilOutputCat, CompilMsg):
"""Symbol used before being typed""" """Symbol used before being typed"""
id = "C0305" id = "C0305"
...@@ -421,7 +394,6 @@ class UsedBeforeTyped(CompilOutputCat, CompilMsg): ...@@ -421,7 +394,6 @@ class UsedBeforeTyped(CompilOutputCat, CompilMsg):
class ExpectedDimension(CompilOutputCat, CompilMsg): class ExpectedDimension(CompilOutputCat, CompilMsg):
"""Expected another dimension in array declaration""" """Expected another dimension in array declaration"""
id = "E0306" id = "E0306"
...@@ -430,7 +402,6 @@ class ExpectedDimension(CompilOutputCat, CompilMsg): ...@@ -430,7 +402,6 @@ class ExpectedDimension(CompilOutputCat, CompilMsg):
class UnusedParameter(CompilOutputCat, CompilMsg): class UnusedParameter(CompilOutputCat, CompilMsg):
"""Unused (function) parameter""" """Unused (function) parameter"""
id = "W0307" id = "W0307"
...@@ -441,7 +412,6 @@ class UnusedParameter(CompilOutputCat, CompilMsg): ...@@ -441,7 +412,6 @@ class UnusedParameter(CompilOutputCat, CompilMsg):
class ImplicitInterface(CompilOutputCat, CompilMsg): class ImplicitInterface(CompilOutputCat, CompilMsg):
"""Call with an implicit interface """Call with an implicit interface
An explicit interface must be defined to call an external subprogram. An explicit interface must be defined to call an external subprogram.
You must add the corresponding include statement for this subprogram.""" You must add the corresponding include statement for this subprogram."""
...@@ -455,7 +425,6 @@ class ImplicitInterface(CompilOutputCat, CompilMsg): ...@@ -455,7 +425,6 @@ class ImplicitInterface(CompilOutputCat, CompilMsg):
class NoTabs(CompilOutputCat, CompilMsg): class NoTabs(CompilOutputCat, CompilMsg):
"""Nonconforming tab character""" """Nonconforming tab character"""
id = "C0401" id = "C0401"
...@@ -466,7 +435,6 @@ class NoTabs(CompilOutputCat, CompilMsg): ...@@ -466,7 +435,6 @@ class NoTabs(CompilOutputCat, CompilMsg):
class CharacterTruncated(CompilOutputCat, CompilMsg): class CharacterTruncated(CompilOutputCat, CompilMsg):
"""Character will be truncated""" """Character will be truncated"""
id = "W0402" id = "W0402"
...@@ -482,7 +450,6 @@ class CharacterTruncated(CompilOutputCat, CompilMsg): ...@@ -482,7 +450,6 @@ class CharacterTruncated(CompilOutputCat, CompilMsg):
class CharacterTruncatedSure(CompilOutputCat, CompilMsg): class CharacterTruncatedSure(CompilOutputCat, CompilMsg):
"""Character is truncated""" """Character is truncated"""
id = "C0403" id = "C0403"
...@@ -493,7 +460,6 @@ class CharacterTruncatedSure(CompilOutputCat, CompilMsg): ...@@ -493,7 +460,6 @@ class CharacterTruncatedSure(CompilOutputCat, CompilMsg):
class ObsolescentFeature(CompilOutputCat, CompilMsg): class ObsolescentFeature(CompilOutputCat, CompilMsg):
"""Obsolescent feature """Obsolescent feature
Source code may not work unaltered with modern compilers. Source code may not work unaltered with modern compilers.
See http://fortranwiki.org/fortran/show/Modernizing+Old+Fortran See http://fortranwiki.org/fortran/show/Modernizing+Old+Fortran
...@@ -516,7 +482,6 @@ class ObsolescentFeature(CompilOutputCat, CompilMsg): ...@@ -516,7 +482,6 @@ class ObsolescentFeature(CompilOutputCat, CompilMsg):
class EquivalenceMixingTypes(CompilOutputCat, CompilMsg): class EquivalenceMixingTypes(CompilOutputCat, CompilMsg):
"""Equivalence between different types""" """Equivalence between different types"""
id = "W0405" id = "W0405"
...@@ -527,7 +492,6 @@ class EquivalenceMixingTypes(CompilOutputCat, CompilMsg): ...@@ -527,7 +492,6 @@ class EquivalenceMixingTypes(CompilOutputCat, CompilMsg):
class MissingComma(CompilOutputCat, CompilMsg): class MissingComma(CompilOutputCat, CompilMsg):
"""Missing comma""" """Missing comma"""
id = "E0406" id = "E0406"
...@@ -536,7 +500,6 @@ class MissingComma(CompilOutputCat, CompilMsg): ...@@ -536,7 +500,6 @@ class MissingComma(CompilOutputCat, CompilMsg):
class NonStdDeclaration(CompilOutputCat, CompilMsg): class NonStdDeclaration(CompilOutputCat, CompilMsg):
"""Nonstandard type declaration""" """Nonstandard type declaration"""
id = "C0407" id = "C0407"
...@@ -545,7 +508,6 @@ class NonStdDeclaration(CompilOutputCat, CompilMsg): ...@@ -545,7 +508,6 @@ class NonStdDeclaration(CompilOutputCat, CompilMsg):
class HollerithConstant(CompilOutputCat, CompilMsg): class HollerithConstant(CompilOutputCat, CompilMsg):
"""Deprecated Hollerith constant""" """Deprecated Hollerith constant"""
id = "C0408" id = "C0408"
...@@ -554,7 +516,6 @@ class HollerithConstant(CompilOutputCat, CompilMsg): ...@@ -554,7 +516,6 @@ class HollerithConstant(CompilOutputCat, CompilMsg):
class DeletedFeature(CompilOutputCat, CompilMsg): class DeletedFeature(CompilOutputCat, CompilMsg):
"""Deleted feature""" """Deleted feature"""
id = "W0409" id = "W0409"
...@@ -563,7 +524,6 @@ class DeletedFeature(CompilOutputCat, CompilMsg): ...@@ -563,7 +524,6 @@ class DeletedFeature(CompilOutputCat, CompilMsg):
class ArrayIndex(CompilOutputCat, CompilMsg): class ArrayIndex(CompilOutputCat, CompilMsg):
"""Unexpected type for array index""" """Unexpected type for array index"""
id = "C0410" id = "C0410"
...@@ -574,7 +534,6 @@ class ArrayIndex(CompilOutputCat, CompilMsg): ...@@ -574,7 +534,6 @@ class ArrayIndex(CompilOutputCat, CompilMsg):
class RealArrayIndex(CompilOutputCat, CompilMsg): class RealArrayIndex(CompilOutputCat, CompilMsg):
"""Real array index""" """Real array index"""
id = "C0411" id = "C0411"
...@@ -583,7 +542,6 @@ class RealArrayIndex(CompilOutputCat, CompilMsg): ...@@ -583,7 +542,6 @@ class RealArrayIndex(CompilOutputCat, CompilMsg):
class DoubleComplex(CompilOutputCat, CompilMsg): class DoubleComplex(CompilOutputCat, CompilMsg):
"""Double complex""" """Double complex"""
id = "C0412" id = "C0412"
...@@ -592,7 +550,6 @@ class DoubleComplex(CompilOutputCat, CompilMsg): ...@@ -592,7 +550,6 @@ class DoubleComplex(CompilOutputCat, CompilMsg):
class ComparisonBetweenReal(CompilOutputCat, CompilMsg): class ComparisonBetweenReal(CompilOutputCat, CompilMsg):
"""Equality/inequality comparison for floating-point numbers """Equality/inequality comparison for floating-point numbers
It is unsafe to rely on exact floating-point comparisons. Slight variations It is unsafe to rely on exact floating-point comparisons. Slight variations
in rounding can change the outcome of such comparisons, leading to in rounding can change the outcome of such comparisons, leading to
...@@ -621,7 +578,6 @@ class ComparisonBetweenReal(CompilOutputCat, CompilMsg): ...@@ -621,7 +578,6 @@ class ComparisonBetweenReal(CompilOutputCat, CompilMsg):
class UnaryOpAfterArithmeticOp(CompilOutputCat, CompilMsg): class UnaryOpAfterArithmeticOp(CompilOutputCat, CompilMsg):
"""Unary operator following arithmetic operator """Unary operator following arithmetic operator
The same code may be compiled differently by different compilers. The same code may be compiled differently by different compilers.
Example: ``d1=a**-2*b`` gets interpretted as ``d1=a**(-2*b)`` by ifort but Example: ``d1=a**-2*b`` gets interpretted as ``d1=a**(-2*b)`` by ifort but
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment