From 81975f5fe72d4e19b36d397248d96d3e86cd13e9 Mon Sep 17 00:00:00 2001 From: Pelle Johnsen Date: Wed, 20 Aug 2014 12:06:10 +0200 Subject: Fix QML2 hang on gcc 4.6.3 armhf With gcc 4.6.3 armhf (defualt for Ubuntu 12.04) some optimization bug results in QML2 v4 compiler hang during type inference. Task-number: QTBUG-40364 Change-Id: Iea1a8be3b5a7d9410304110d89dae3735339cb72 Reviewed-by: Simon Hausmann Reviewed-by: Erik Verbruggen --- src/qml/compiler/qv4ssa.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/qml/compiler/qv4ssa.cpp') diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp index 7ea128d6ea..774d8fb88c 100644 --- a/src/qml/compiler/qv4ssa.cpp +++ b/src/qml/compiler/qv4ssa.cpp @@ -2212,10 +2212,14 @@ class TypeInference: public StmtVisitor, public ExprVisitor DiscoveredType type; bool fullyTyped; - TypingResult(const DiscoveredType &type = DiscoveredType()) - : type(type) - , fullyTyped(type.type != UnknownType) - {} + TypingResult(const DiscoveredType &type = DiscoveredType()) { +#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 6 + // avoid optimization bug in gcc 4.6.3 armhf + ((int volatile &) this->type.type) = type.type; +#endif + this->type = type; + fullyTyped = type.type != UnknownType; + } explicit TypingResult(MemberExpressionResolver memberResolver) : type(memberResolver) , fullyTyped(true) -- cgit v1.2.3